[MERGE] trunk-mako_to_jinja-rco: use Jinja2 instead of mako to render email templates...
[odoo/odoo.git] / addons / event / event_view.xml
1 <?xml version="1.0"?>
2 <openerp>
3     <data>
4
5         <record id="act_event_list_register_event" model="ir.actions.act_window">
6             <field name="res_model">event.registration</field>
7             <field name="view_type">form</field>
8             <field name="name">Registrations</field>
9             <field name="view_mode">calendar,tree,form,graph</field>
10             <field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id}</field>
11         </record>
12
13         <!-- Top menu item -->
14         <menuitem name="Events"
15             id="event_main_menu"
16             groups="base.group_user"
17             sequence="115"/>
18         <menuitem name="Events Organization" id="base.menu_event_main" parent="event_main_menu"/>
19
20         <!-- EVENTS  -->
21
22         <!-- EVENTS/CONFIGURATION/TYPE OF EVENTS -->
23         <record model="ir.ui.view" id="view_event_type_form">
24             <field name="name">Event type</field>
25             <field name="model">event.type</field>
26             <field name="arch" type="xml">
27                 <form string="Event Type">
28                     <group col="4">
29                         <field name="name"/>
30                         <field name="default_reply_to"/>
31                         <field name="default_registration_min"/>
32                         <field name="default_email_event" domain="[('model_id.model','=','event.registration')]"/>
33                         <field name="default_registration_max"/>
34                         <field name="default_email_registration" domain="[('model_id.model','=','event.registration')]"/>
35                     </group>
36                 </form>
37             </field>
38         </record>
39
40         <record model="ir.ui.view" id="view_event_type_tree">
41             <field name="name">Event type</field>
42             <field name="model">event.type</field>
43             <field name="arch" type="xml">
44                 <tree string="Event Type">
45                     <field name="name"/>
46                 </tree>
47             </field>
48         </record>
49
50         <record model="ir.actions.act_window" id="action_event_type">
51             <field name="name">Types of Events</field>
52             <field name="res_model">event.type</field>
53             <field name="view_type">form</field>
54         </record>
55         <menuitem name="Configuration" id="base.menu_marketing_config_root" parent="event_main_menu" sequence="30"/>
56         <menuitem name="Types of Events" id="menu_event_type" action="action_event_type" parent="base.menu_marketing_config_root" groups="base.group_no_one"/>
57
58         <!-- Events Organisation/CONFIGURATION/EVENTS -->
59
60         <record model="ir.ui.view" id="view_event_form">
61             <field name="name">Events</field>
62             <field name="model">event.event</field>
63             <field name="arch" type="xml">
64                 <form string="Events" version="7.0">
65                     <header>
66                         <button string="Confirm Event" name="button_confirm" states="draft" type="object" class="oe_highlight" groups="base.group_user"/>
67                         <button string="Finish Event" name="button_done" states="confirm" type="object" class="oe_highlight" groups="base.group_user"/>
68                         <button string="Set To Draft" name="button_draft" states="cancel,done" type="object" groups="base.group_user"/>
69                         <button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object" groups="base.group_user"/>
70                         <field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/>
71                     </header>
72                     <sheet>
73                         <div class="oe_right oe_button_box" groups="base.group_user">
74                             <button name="%(event.act_event_list_register_event)d" type="action" string="Registrations" help="Register with this event"/>
75                         </div>
76                         <div class="oe_title">
77                             <label for="name" class="oe_edit_only"/>
78                             <h1><field name="name"/></h1>
79                         </div>
80                         <group>
81                             <group>
82                                 <label for="address_id" string="Location"/>
83                                    <div>
84                                        <field name="address_id" on_change="on_change_address_id(address_id)" />
85                                        <field name="street" placeholder="Street..."/>
86                                        <field name="street2"/>
87                                        <div class="address_format">
88                                            <field name="city" placeholder="City" style="width: 40%%"/>
89                                            <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": true}'/>
90                                            <field name="zip" placeholder="ZIP" style="width: 20%%"/>
91                                        </div>    
92                                        <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": true}'/>
93                                    </div>
94                             </group>
95                             <group>
96                                 <field name="type" on_change="onchange_event_type(type,context)" />
97                                 <field name="date_begin" on_change="onchange_start_date(date_begin,date_end)"/>
98                                 <field name="date_end"/>
99                                 <field name="company_id" groups="base.group_multi_company"/>
100                             </group>
101                         </group>
102                         <notebook>
103                             <page string="Email Configuration" groups="base.group_no_one">
104                                 <group>
105                                     <field name="reply_to"/>
106                                     <group>
107                                         <field name="email_registration_id"/>
108                                     </group>
109                                     <group>
110                                         <field name="email_confirmation_id"/>
111                                     </group>
112                                 </group>
113                             </page>
114                             <page string="Event Description">
115                                 <field name="note" colspan="4" nolabel="1"/>
116                             </page>
117                             <page string="Registrations">
118                                 <group>
119                                     <group>
120                                         <field name="register_min"/>
121                                         <field name="register_max"/>
122                                         <label for="register_current" string="Current Registrations" groups="base.group_user"/>
123                                         <div groups="base.group_user">
124                                              <field name="register_prospect" class="oe_inline"/> (confirmed: <field name="register_current" class="oe_inline"/>)
125                                         </div>
126                                         <field name="register_attended"/>
127                                     </group>
128                                     <group>
129                                         <field name="main_speaker_id" domain="[('speaker','=',True)]" context="{'default_speaker':1}"/>
130                                         <field name="speaker_confirmed"/>
131                                     </group>
132                                 </group>
133                                 <field name="registration_ids" colspan="4" nolabel="1" groups="event.group_event_manager,event.group_event_user">
134                                     <tree string="Registration" editable="top">
135                                         <field name="name" />
136                                         <field name="email" />
137                                         <field name="phone"/>
138                                         <field name="nb_register" />
139                                         <field name="state"/>
140                                         <button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
141                                         <button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
142                                         <button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
143                                     </tree>
144                                     <form string="Registration">
145                                         <field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)" />
146                                         <field name="name"/>
147                                         <group colspan="4" col="4">
148                                         <field name="email"/>
149                                         <field name="phone"/>
150                                         </group>
151                                         <group colspan="4" col="4">
152                                             <field name="nb_register"/>
153                                         </group>
154                                         <group colspan="4" col="4">
155                                         </group>
156                                             <group col="8" colspan="4">
157                                                 <separator string="" colspan="4"/>
158                                                 <newline/>
159                                                 <field name="state" colspan="2"/>
160                                                 <button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
161                                                 <button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
162                                                 <button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
163                                             </group>
164                                     </form>
165                                 </field>
166                             </page>
167                         </notebook>
168                     </sheet>
169                     <div class="oe_chatter">
170                         <field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
171                         <field name="message_ids" widget="mail_thread" placeholder="Share a note..."/>
172                     </div>
173                 </form>
174             </field>
175         </record>
176
177         <!-- Event tree view -->
178
179         <record model="ir.ui.view" id="view_event_tree">
180             <field name="name">event.event.tree</field>
181             <field name="model">event.event</field>
182             <field name="arch" type="xml">
183                 <tree string="Events" fonts="bold:message_unread==True" colors="red:(register_min and register_min&gt;register_current) or (register_max and register_max&lt;register_current);grey:state=='cancel'">
184                     <field name="name" string="Name"/>
185                     <field name="type" string="Event Category"/>
186                     <field name="date_begin"/>
187                     <field name="date_end"/>
188                     <field name="register_current"/>
189                     <field name="register_min"/>
190                     <field name="register_max" invisible="1"/>
191                     <field name="main_speaker_id" groups="base.group_no_one"/>
192                     <field name="user_id"/>
193                     <field name="state"/>
194                     <field name="message_unread" invisible="1"/>
195                 </tree>
196             </field>
197         </record>
198
199
200         <!-- Event Kanban View -->
201
202         <record model="ir.ui.view" id="view_event_kanban">
203             <field name="name">event.event.kanban</field>
204             <field name="model">event.event</field>
205             <field name="arch" type="xml">
206                 <kanban>
207                     <field name="register_max"/>
208                     <field name="type"/>
209                     <field name="user_id"/>
210                     <field name="register_current"/>
211                     <field name="is_subscribed"/>
212                     <field name="country_id"/>
213                     <field name="date_begin"/>
214                     <field name="state"/>
215                     <field name="register_avail"/>
216                     <templates>
217                     <t t-name="kanban-box">
218                       <div class="oe_module_vignette">
219                         <a type="open" class="oe_module_icon">
220                             <div class="oe_event_date "><t t-esc="record.date_begin.raw_value.getDate()"/></div>
221                             <div class="oe_event_month_year">
222                                 <t t-esc="record.date_begin.raw_value.toString('MMM')"/>
223                                 <t t-esc="record.date_begin.raw_value.getFullYear()"/>
224                             </div>
225                             <div class="oe_event_time"><t t-esc="record.date_begin.raw_value.toString('hh:mm tt')"/></div>
226                         </a>
227                         <div class="oe_module_desc">
228                             <h4><a type="open"><field name="name"/></a></h4>
229                             <p>
230                               <t t-if="record.country_id.raw_value">@<field name="country_id"/><br/></t>
231                               <t t-if="record.user_id.raw_value">Organized by <field name="user_id"/><br/></t>
232                               <t t-if="record.register_avail.raw_value lte 10 and record.register_avail.raw_value gt 0"><i>Only</i></t>
233                               <t t-if="record.register_avail.raw_value == 9999"><i>No ticket available.</i></t>
234                               <t t-if="record.register_avail.raw_value != 9999">
235                                 <i><b><t t-if="record.register_avail.raw_value != 9999"><field name="register_avail"/></t></b></i>
236                                 <i>
237                                     <t t-if="record.register_avail.raw_value > 1">tickets </t>
238                                     <t t-if="record.register_avail.raw_value lte 1">ticket </t>
239                                     available.
240                                 </i>
241                               </t>
242                             </p>
243                             <div groups="base.group_user,portal.group_portal">
244                                 <t t-if="record.register_avail.raw_value gt 0 and record.register_avail.raw_value lt 9999">
245                                   <t t-if="!record.is_subscribed.raw_value">
246                                     <input t-att-id="record.id.raw_value" type="text" name="subscribe" class="no_of_seats" value="1" onchange="document.getElementById('btn_sub' +this.id).setAttribute('data-context',JSON.stringify({'ticket':this.value}))"/>
247                                     <button t-att-id="'btn_sub'+record.id.raw_value" type="object" name="subscribe_to_event" class="oe_subscribe_button">
248                                         <span >Subscribe</span>
249                                     </button>
250                                   </t>
251                                 </t>
252                                 <t t-if="record.is_subscribed.raw_value">
253                                   <button type="object" name="unsubscribe_to_event" class="oe_unsubscribe_button ">
254                                     <span>Subscribed</span>
255                                     <span class="oe_unsubscribe">Unsubscribe</span>
256                                   </button>
257                                 </t>
258                             </div>
259                         </div>
260                       </div>
261                     </t>
262                     </templates>
263                 </kanban>
264             </field>
265         </record>
266
267         <!-- Events  Calendar  View -->
268
269         <record id="view_event_calendar" model="ir.ui.view">
270             <field name="name">event.event.calendar</field>
271             <field name="model">event.event</field>
272             <field eval="2" name="priority"/>
273             <field name="arch" type="xml">
274                 <calendar color="type" date_start="date_begin" date_stop="date_end" string="Event Organization">
275                     <field name="name"/>
276                     <field name="type"/>
277                 </calendar>
278             </field>
279         </record>
280
281         <!-- Event Search View -->
282
283         <record model="ir.ui.view" id="view_event_search">
284             <field name="name">Events</field>
285             <field name="model">event.event</field>
286             <field name="arch" type="xml">
287                 <search string="Events">
288                     <field name="name" string="Events"/>
289                     <filter icon="terp-mail-message-new" string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
290                     <separator/>
291                     <filter icon="terp-check" string="Unconfirmed" name="draft" domain="[('state','=','draft')]" help="Events in New state"/>
292                     <filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','confirm')]" help="Confirmed events"/>
293                     <separator/>
294                     <filter icon="terp-personal" string="My Events" help="My Events" domain="[('user_id','=',uid)]"/>
295                     <separator/>
296                     <filter icon="terp-go-today" string="Upcoming" name="upcoming" domain="[('date_begin','&gt;=', time.strftime('%%Y-%%m-%%d 00:00:00'))]" help="Upcoming events from today" />
297                     <field name="type"/>
298                     <field name="user_id"/>
299                     <group expand="0" string="Group By...">
300                         <filter string="Responsible"  icon="terp-personal" context="{'group_by': 'user_id'}"/>
301                         <filter string="Event Type" icon="terp-crm"  context="{'group_by':'type'}"/>
302                         <filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
303                         <filter string="Starting Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_begin'}"/>
304                     </group>
305                 </search>
306             </field>
307         </record>
308
309
310         <!-- Events Organisation/CONFIGURATION/EVENTS  -->
311         <record model="ir.actions.act_window" id="action_event_view">
312            <field name="name">Events</field>
313            <field name="type">ir.actions.act_window</field>
314            <field name="res_model">event.event</field>
315            <field name="view_type">form</field>
316            <field name="view_mode">kanban,calendar,tree,form</field>
317            <field name="context">{"search_default_upcoming":1}</field>
318            <field name="search_view_id" ref="view_event_search"/>
319            <field name="help" type="html">
320              <p class="oe_view_nocontent_create">
321                Click to add a new event.
322              </p><p>
323                OpenERP helps you schedule and efficiently organize your events:
324                track subscriptions and participations, automate the confirmation emails,
325                sell tickets, etc.
326              </p>
327            </field>
328         </record>
329
330         <act_window
331             id="act_register_event_partner"
332             name="Subscribe"
333             res_model="event.registration"
334             src_model="res.partner"
335             view_mode="tree,form,calendar,graph"
336             context="{'search_default_partner_id': [active_id], 'default_partner_id': active_id}"
337             view_type="form"/>
338
339         <menuitem name="Events" id="menu_event_event" action="action_event_view" parent="base.menu_event_main" />
340
341         <!-- EVENTS/REGISTRATIONS/EVENTS  -->
342
343
344         <record model="ir.ui.view" id="view_event_registration_tree">
345             <field name="name">event.registration.tree</field>
346             <field name="model">event.registration</field>
347             <field name="arch" type="xml">
348                 <tree string="Registration" fonts="bold:message_unread==True">
349                     <field name="create_date"/>
350                     <field name="partner_id"/>
351                     <field name="name"/>
352                     <field name="email"/>
353                     <field name="event_id" />
354                     <field name="nb_register"/>
355                     <field name="user_id" invisible="1"/>
356                     <field name="origin"/>
357                     <field name="state"/>
358                     <field name="message_unread" invisible="1"/>
359                     <button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
360                     <button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
361                     <button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
362                 </tree>
363             </field>
364         </record>
365
366         <record model="ir.ui.view" id="view_event_registration_form">
367             <field name="name">event.registration.form</field>
368             <field name="model">event.registration</field>
369             <field name="arch" type="xml">
370                 <form string="Event Registration" version="7.0">
371                     <header>
372                         <button name="registration_open" string="Confirm" states="draft" type="object" class="oe_highlight"/>
373                         <button name="button_reg_close" string="Attended" states="open" type="object" class="oe_highlight"/>
374                         <button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" />
375                         <button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object"/>
376                         <field name="state" nolabel="1" colspan="2" widget="statusbar" statusbar_visible="draft,open,done"/>
377                     </header>
378                     <sheet string="Registration">
379                         <label for="event_id" class="oe_edit_only"/>
380                         <h1>
381                             <field name="event_id" domain="[('state','in',('draft','confirm'))]"/>
382                         </h1>
383                         <group>
384                             <group>
385                                 <field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)"/>
386                                 <field name="name"/>
387                                 <field name="phone"/>
388                                 <label for="email"/>
389                                 <div>
390                                     <field name="email" class="oe_inline"/>
391                                     <button class="oe_inline oe_right" string="Send Email"
392                                         name="%(mail.action_email_compose_message_wizard)d"
393                                         icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
394                                 </div>
395                             </group>
396                             <group>
397                                 <field name="nb_register"/>
398                                 <field name="user_id" attrs="{'readonly':[('state','!=', 'draft')]}"/>
399                             </group>
400                             <group groups="base.group_no_one">
401                                 <field name="create_date"/>
402                                 <field name="date_closed"/>
403                             </group>
404                         </group>
405                     </sheet>
406                     <div class="oe_chatter">
407                         <field name="message_follower_ids" widget="mail_followers"/>
408                         <field name="message_ids" widget="mail_thread" placeholder="Share a note..."/>
409                     </div>
410                 </form>
411             </field>
412         </record>
413
414          <!-- Calendar view of event registration -->
415         <record id="view_event_registration_calendar" model="ir.ui.view">
416             <field name="name">event.registration.calendar</field>
417             <field name="model">event.registration</field>
418             <field eval="2" name="priority"/>
419             <field name="arch" type="xml">
420                 <calendar color="event_id" date_start="event_begin_date" date_stop="event_end_date" string="Event Registration">
421                     <field name="event_id"/>
422                     <field name="name"/>
423                 </calendar>
424             </field>
425         </record>
426
427         <record model="ir.ui.view" id="view_event_registration_graph">
428             <field name="name">Registration Graph</field>
429             <field name="model">event.registration</field>
430             <field name="arch" type="xml">
431                 <graph string="Registration" type="bar" orientation="horizontal">
432                     <field name="event_id"/>
433                     <field name= "nb_register" operator="+"/>
434                 </graph>
435             </field>
436         </record>
437
438
439         <!-- Search view of event registration -->
440         <record model="ir.ui.view" id="view_registration_search">
441             <field name="name">Registrations</field>
442             <field name="model">event.registration</field>
443             <field name="arch" type="xml">
444                 <search string="Event Registration">
445                     <field name="name" string="Participant" filter_domain="['|','|',('name','ilike',self),('email','ilike',self),('origin','ilike',self)]"/>
446                     <filter icon="terp-mail-message-new" string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
447                     <separator/>
448                     <filter icon="terp-check" string="New" name="draft" domain="[('state','=','draft')]" help="Registrations in unconfirmed state"/>
449                     <filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','open')]" help="Confirmed registrations"/>
450                     <separator/>
451                     <filter icon="terp-personal" string="My Registrations" help="My Registrations" domain="[('user_id','=',uid)]"/>
452                     <field name="event_id"/>
453                     <field name="user_id"/>
454                     <field name="partner_id"/>
455                     <group expand="0" string="Group By...">
456                         <filter string="Responsible"  icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
457                         <filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
458                         <filter string="Event" icon="terp-crm" domain="[]" context="{'group_by':'event_id'}"/>
459                         <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
460                    </group>
461                 </search>
462             </field>
463         </record>
464
465         <record model="ir.actions.act_window" id="action_registration">
466           <field name="name">Registrations</field>
467           <field name="res_model">event.registration</field>
468           <field name="view_type">form</field>
469           <field name="domain"></field>
470           <field name="view_mode">tree,form,calendar,graph</field>
471           <field name="context">{}</field>
472           <field name="search_view_id" ref="view_registration_search"/>
473         </record>
474
475         <menuitem name="Registrations"
476             id="menu_action_registration" parent="base.menu_event_main"
477             action="action_registration" groups="event.group_event_manager,event.group_event_user"/>
478
479         <menuitem name="Reporting" id="base.menu_report_association" parent="event_main_menu" sequence="20"/>
480
481     </data>
482 </openerp>