[Imp] Improved code for Event module
[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">tree,form,calendar,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         <!-- Event Read/Unread actions -->
61         <record id="actions_server_event_event_unread" model="ir.actions.server">
62             <field name="name">Event: Mark unread</field>
63             <field name="condition">True</field>
64             <field name="type">ir.actions.server</field>
65             <field name="model_id" ref="model_event_event"/>
66             <field name="state">code</field>
67             <field name="code">self.message_mark_as_unread(cr, uid, context.get('active_ids'), context=context)</field>
68         </record>
69         <record id="action_event_event_unread" model="ir.values">
70             <field name="name">action_event_event_unread</field>
71             <field name="action_id" ref="actions_server_event_event_unread"/>
72             <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_event_event_unread'))" />
73             <field name="key">action</field>
74             <field name="model_id" ref="model_event_event" />
75             <field name="model">event.event</field>
76             <field name="key2">client_action_multi</field>
77         </record>
78
79         <record id="actions_server_event_event_read" model="ir.actions.server">
80             <field name="name">Event: Mark read</field>
81             <field name="condition">True</field>
82             <field name="type">ir.actions.server</field>
83             <field name="model_id" ref="model_event_event"/>
84             <field name="state">code</field>
85             <field name="code">self.message_mark_as_read(cr, uid, context.get('active_ids'), context=context)</field>
86         </record>
87         <record id="action_event_event_read" model="ir.values">
88             <field name="name">action_event_event_read</field>
89             <field name="action_id" ref="actions_server_event_event_read"/>
90             <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_event_event_read'))" />
91             <field name="key">action</field>
92             <field name="model_id" ref="model_event_event" />
93             <field name="model">event.event</field>
94             <field name="key2">client_action_multi</field>
95         </record>
96
97         <record model="ir.ui.view" id="view_event_form">
98             <field name="name">Events</field>
99             <field name="model">event.event</field>
100             <field name="arch" type="xml">
101                 <form string="Events" version="7.0">
102                     <header>
103                         <button string="Confirm Event" name="button_confirm" states="draft" type="object" class="oe_highlight" groups="base.group_user"/>
104                         <button string="Finish Event" name="button_done" states="confirm" type="object" class="oe_highlight" groups="base.group_user"/>
105                         <button string="Set To Draft" name="button_draft" states="cancel,done" type="object" groups="base.group_user"/>
106                         <button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object" groups="base.group_user"/>
107                         <field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/>
108                     </header>
109                     <sheet>
110                         <div class="oe_right oe_button_box">
111                             <button name="%(event.act_event_list_register_event)d" type="action" string="Registrations" help="Register with this event"/>
112                         </div>
113                         <div class="oe_title">
114                             <label for="name" class="oe_edit_only"/>
115                             <h1><field name="name"/></h1>
116                         </div>
117                         <group>
118                             <group>
119                                 <label for="address_id" string="Location"/>
120                                    <div>
121                                        <field name="address_id" on_change="on_change_address_id(address_id)" />
122                                        <field name="street" placeholder="Street..."/>
123                                        <field name="street2"/>
124                                        <div class="address_format">
125                                            <field name="city" placeholder="City" style="width: 40%%"/>
126                                            <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": true}'/>
127                                            <field name="zip" placeholder="ZIP" style="width: 20%%"/>
128                                        </div>    
129                                        <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": true}'/>
130                                    </div>
131                             </group>
132                             <group>
133                                 <field name="type" on_change="onchange_event_type(type,context)" />
134                                 <field name="date_begin" on_change="onchange_start_date(date_begin,date_end)"/>
135                                 <field name="date_end"/>
136                                 <field name="company_id" groups="base.group_multi_company"/>
137                             </group>
138                         </group>
139                         <notebook>
140                             <page string="Email Details" groups="base.group_no_one">
141                                 <group colspan="4">
142                                     <field name="reply_to"/>
143                                     <field name="email_registration_id"/>
144                                     <field name="email_confirmation_id"/>
145                                 </group>
146                                 <field name="note" nolabel="1"/>
147                             </page>
148                             <page string="Registrations">
149                                 <group>
150                                     <group>
151                                         <field name="register_min"/>
152                                         <field name="register_max"/>
153                                         <label for="register_current" string="Current Registrations" groups="base.group_user"/>
154                                         <div groups="base.group_user">
155                                              <field name="register_prospect" class="oe_inline"/> (confirmed: <field name="register_current" class="oe_inline"/>)
156                                         </div>
157                                         <field name="register_attended"/>
158                                     </group>
159                                     <group>
160                                         <field name="main_speaker_id" domain="[('speaker','=',True)]" context="{'default_speaker':1}"/>
161                                         <field name="speaker_confirmed"/>
162                                     </group>
163                                 </group>
164                                 <field name="registration_ids" colspan="4" nolabel="1" groups="event.group_event_manager,event.group_event_user">
165                                     <tree string="Registration" editable="top">
166                                         <field name="name" />
167                                         <field name="email" />
168                                         <field name="phone"/>
169                                         <field name="nb_register" />
170                                         <field name="state"/>
171                                         <button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
172                                         <button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
173                                         <button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
174                                     </tree>
175                                     <form string="Registration">
176                                         <field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)" />
177                                         <field name="name"/>
178                                         <group colspan="4" col="4">
179                                         <field name="email"/>
180                                         <field name="phone"/>
181                                         </group>
182                                         <group colspan="4" col="4">
183                                             <field name="nb_register"/>
184                                         </group>
185                                         <group colspan="4" col="4">
186                                         </group>
187                                             <group col="8" colspan="4">
188                                                 <separator string="" colspan="4"/>
189                                                 <newline/>
190                                                 <field name="state" colspan="2"/>
191                                                 <button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
192                                                 <button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
193                                                 <button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
194                                             </group>
195                                     </form>
196                                 </field>
197                             </page>
198                         </notebook>
199                     </sheet>
200                     <div class="oe_chatter">
201                         <field name="message_follower_ids" widget="mail_followers"/>
202                         <field name="message_ids" widget="mail_thread" placeholder="Share a note..."/>
203                     </div>
204                 </form>
205             </field>
206         </record>
207
208         <!-- Event tree view -->
209
210         <record model="ir.ui.view" id="view_event_tree">
211             <field name="name">event.event.tree</field>
212             <field name="model">event.event</field>
213             <field name="arch" type="xml">
214                 <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'">
215                     <field name="name" string="Name"/>
216                     <field name="type" string="Event Category"/>
217                     <field name="date_begin"/>
218                     <field name="date_end"/>
219                     <field name="register_current"/>
220                     <field name="register_min"/>
221                     <field name="register_max" invisible="1"/>
222                     <field name="main_speaker_id" groups="base.group_no_one"/>
223                     <field name="user_id"/>
224                     <field name="state"/>
225                     <field name="message_unread" invisible="1"/>
226                 </tree>
227             </field>
228         </record>
229
230
231         <!-- Event Kanban View -->
232
233         <record model="ir.ui.view" id="view_event_kanban">
234             <field name="name">event.event.kanban</field>
235             <field name="model">event.event</field>
236             <field name="arch" type="xml">
237                 <kanban>
238                     <field name="register_max"/>
239                     <field name="type"/>
240                     <field name="user_id"/>
241                     <field name="register_current"/>
242                     <field name="is_subscribed"/>
243                     <field name="country_id"/>
244                     <field name="date_begin"/>
245                     <field name="state"/>
246                     <field name="register_avail"/>
247                     <templates>
248                     <t t-name="kanban-box">
249                       <div class="oe_module_vignette">
250                         <a type="open" class="oe_module_icon">
251                             <div class="oe_event_date "><t t-esc="record.date_begin.raw_value.getDate()"/></div>
252                             <div class="oe_event_month_year">
253                                 <t t-esc="record.date_begin.raw_value.toString('MMM')"/>
254                                 <t t-esc="record.date_begin.raw_value.getFullYear()"/>
255                             </div>
256                             <div class="oe_event_time"><t t-esc="record.date_begin.raw_value.toString('hh:mm tt')"/></div>
257                         </a>
258                         <div class="oe_module_desc">
259                             <h4><a type="open"><field name="name"/></a></h4>
260                             <p>
261                               <t t-if="record.country_id.raw_value">@<field name="country_id"/><br/></t>
262                               <t t-if="record.user_id.raw_value">Organized by <field name="user_id"/><br/></t>
263                               <t t-if="record.register_avail.raw_value lte 10 and record.register_avail.raw_value gt 0"><i>Only</i></t>
264                               <t t-if="record.register_avail.raw_value == 9999"><i>No ticket available.</i></t>
265                               <t t-if="record.register_avail.raw_value != 9999">
266                                 <i><b><t t-if="record.register_avail.raw_value != 9999"><field name="register_avail"/></t></b></i>
267                                 <i>
268                                     <t t-if="record.register_avail.raw_value > 1">tickets </t>
269                                     <t t-if="record.register_avail.raw_value lte 1">ticket </t>
270                                     available.
271                                 </i>
272                               </t>
273                             </p>
274                             <t t-if="record.register_avail.raw_value gt 0 and record.register_avail.raw_value lt 9999">
275                               <t t-if="!record.is_subscribed.raw_value">
276                                 <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}))"/>
277                                 <button t-att-id="'btn_sub'+record.id.raw_value" type="object" name="subscribe_to_event" class="oe_subscribe_button">
278                                     <span >Subscribe</span>
279                                 </button>
280                               </t>
281                             </t>
282                             <t t-if="record.is_subscribed.raw_value">
283                               <button type="object" name="unsubscribe_to_event" class="oe_unsubscribe_button ">
284                                 <span>Subscribed</span>
285                                 <span class="oe_unsubscribe">Unsubscribe</span>
286                               </button>
287                             </t>
288                         </div>
289                       </div>
290                     </t>
291                     </templates>
292                 </kanban>
293             </field>
294         </record>
295
296         <!-- Events  Calendar  View -->
297
298         <record id="view_event_calendar" model="ir.ui.view">
299             <field name="name">event.event.calendar</field>
300             <field name="model">event.event</field>
301             <field eval="2" name="priority"/>
302             <field name="arch" type="xml">
303                 <calendar color="type" date_start="date_begin" date_stop="date_end" string="Event Organization">
304                     <field name="name"/>
305                     <field name="type"/>
306                 </calendar>
307             </field>
308         </record>
309
310         <!-- Event Search View -->
311
312         <record model="ir.ui.view" id="view_event_search">
313             <field name="name">Events</field>
314             <field name="model">event.event</field>
315             <field name="arch" type="xml">
316                 <search string="Events">
317                     <field name="name" string="Events"/>
318                     <filter icon="terp-mail-message-new" string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
319                     <separator/>
320                     <filter icon="terp-check" string="Unconfirmed" name="draft" domain="[('state','=','draft')]" help="Events in New state"/>
321                     <filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','confirm')]" help="Confirmed events"/>
322                     <separator/>
323                     <filter icon="terp-personal" string="My Events" help="My Events" domain="[('user_id','=',uid)]"/>
324                     <separator/>
325                     <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" />
326                     <field name="type"/>
327                     <field name="user_id"/>
328                     <group expand="0" string="Group By...">
329                         <filter string="Responsible"  icon="terp-personal" context="{'group_by': 'user_id'}"/>
330                         <filter string="Event Type" icon="terp-crm"  context="{'group_by':'type'}"/>
331                         <filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
332                         <filter string="Starting Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_begin'}"/>
333                     </group>
334                 </search>
335             </field>
336         </record>
337
338
339         <!-- Events Organisation/CONFIGURATION/EVENTS  -->
340         <record model="ir.actions.act_window" id="action_event_view">
341            <field name="name">Events</field>
342            <field name="type">ir.actions.act_window</field>
343            <field name="res_model">event.event</field>
344            <field name="view_type">form</field>
345            <field name="view_mode">kanban,calendar,tree,form</field>
346            <field name="context">{"search_default_upcoming":1}</field>
347            <field name="search_view_id" ref="view_event_search"/>
348            <field name="help" type="html">
349              <p class="oe_view_nocontent_create">
350                Click to add a new event.
351              </p><p>
352                OpenERP helps you schedule and efficiently organize your events:
353                track subscriptions and participations, automate the confirmation emails,
354                sell tickets, etc.
355              </p>
356            </field>
357         </record>
358
359         <act_window
360             id="act_register_event_partner"
361             name="Subscribe"
362             res_model="event.registration"
363             src_model="res.partner"
364             view_mode="tree,form,calendar,graph"
365             context="{'search_default_partner_id': [active_id], 'default_partner_id': active_id}"
366             view_type="form"/>
367
368         <menuitem name="Events" id="menu_event_event" action="action_event_view" parent="base.menu_event_main" />
369
370         <!-- EVENTS/REGISTRATIONS/EVENTS  -->
371
372         <!-- Registration Read/Unread actions -->
373         <record id="actions_server_event_registration_unread" model="ir.actions.server">
374             <field name="name">Event registration : Mark unread</field>
375             <field name="condition">True</field>
376             <field name="type">ir.actions.server</field>
377             <field name="model_id" ref="model_event_registration"/>
378             <field name="state">code</field>
379             <field name="code">self.message_mark_as_unread(cr, uid, context.get('active_ids'), context=context)</field>
380         </record>
381         <record id="action_event_registration_unread" model="ir.values">
382             <field name="name">action_event_registration_unread</field>
383             <field name="action_id" ref="actions_server_event_registration_unread"/>
384             <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_event_registration_unread'))" />
385             <field name="key">action</field>
386             <field name="model_id" ref="model_event_registration" />
387             <field name="model">event.registration</field>
388             <field name="key2">client_action_multi</field>
389         </record>
390
391         <record id="actions_server_event_registration_read" model="ir.actions.server">
392             <field name="name">Event registration : Mark read</field>
393             <field name="condition">True</field>
394             <field name="type">ir.actions.server</field>
395             <field name="model_id" ref="model_event_registration"/>
396             <field name="state">code</field>
397             <field name="code">self.message_mark_as_read(cr, uid, context.get('active_ids'), context=context)</field>
398         </record>
399         <record id="action_event_registration_read" model="ir.values">
400             <field name="name">action_event_registration_read</field>
401             <field name="action_id" ref="actions_server_event_registration_read"/>
402             <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_event_registration_read'))" />
403             <field name="key">action</field>
404             <field name="model_id" ref="model_event_registration" />
405             <field name="model">event.registration</field>
406             <field name="key2">client_action_multi</field>
407         </record>
408
409         <record model="ir.ui.view" id="view_event_registration_tree">
410             <field name="name">event.registration.tree</field>
411             <field name="model">event.registration</field>
412             <field name="arch" type="xml">
413                 <tree string="Registration" fonts="bold:message_unread==True">
414                     <field name="create_date"/>
415                     <field name="partner_id"/>
416                     <field name="name"/>
417                     <field name="email"/>
418                     <field name="event_id" />
419                     <field name="nb_register"/>
420                     <field name="user_id"/>
421                     <field name="origin"/>
422                     <field name="state"/>
423                     <field name="message_unread" invisible="1"/>
424                 </tree>
425             </field>
426         </record>
427
428         <record model="ir.ui.view" id="view_event_registration_form">
429             <field name="name">event.registration.form</field>
430             <field name="model">event.registration</field>
431             <field name="arch" type="xml">
432                 <form string="Event Registration" version="7.0">
433                     <header>
434                         <button name="registration_open" string="Confirm" states="draft" type="object" class="oe_highlight"/>
435                         <button name="button_reg_close" string="Attended" states="open" type="object" class="oe_highlight"/>
436                         <button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" />
437                         <button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object"/>
438                         <field name="state" nolabel="1" colspan="2" widget="statusbar" statusbar_visible="draft,open,done"/>
439                     </header>
440                     <sheet string="Registration">
441                         <label for="event_id" class="oe_edit_only"/>
442                         <h1>
443                             <field name="event_id" domain="[('state','in',('draft','confirm'))]"/>
444                         </h1>
445                         <group>
446                             <group>
447                                 <field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)"/>
448                                 <field name="name"/>
449                                 <field name="phone"/>
450                                 <label for="email"/>
451                                 <div>
452                                     <field name="email" class="oe_inline"/>
453                                     <button class="oe_inline oe_right" string="Send Email"
454                                         name="%(mail.action_email_compose_message_wizard)d"
455                                         icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
456                                 </div>
457                             </group>
458                             <group>
459                                 <field name="nb_register"/>
460                                 <field name="user_id" attrs="{'readonly':[('state','!=', 'draft')]}"/>
461                             </group>
462                             <group groups="base.group_no_one">
463                                 <field name="create_date"/>
464                                 <field name="date_closed"/>
465                             </group>
466                         </group>
467                     </sheet>
468                     <div class="oe_chatter">
469                         <field name="message_follower_ids" widget="mail_followers"/>
470                         <field name="message_ids" widget="mail_thread" placeholder="Share a note..."/>
471                     </div>
472                 </form>
473             </field>
474         </record>
475
476          <!-- Calendar view of event registration -->
477         <record id="view_event_registration_calendar" model="ir.ui.view">
478             <field name="name">event.registration.calendar</field>
479             <field name="model">event.registration</field>
480             <field eval="2" name="priority"/>
481             <field name="arch" type="xml">
482                 <calendar color="event_id" date_start="event_begin_date" date_stop="event_end_date" string="Event Registration">
483                     <field name="event_id"/>
484                     <field name="name"/>
485                 </calendar>
486             </field>
487         </record>
488
489         <record model="ir.ui.view" id="view_event_registration_graph">
490             <field name="name">Registration Graph</field>
491             <field name="model">event.registration</field>
492             <field name="arch" type="xml">
493                 <graph string="Registration" type="bar" orientation="horizontal">
494                     <field name="event_id"/>
495                     <field name= "nb_register" operator="+"/>
496                 </graph>
497             </field>
498         </record>
499
500
501         <!-- Search view of event registration -->
502         <record model="ir.ui.view" id="view_registration_search">
503             <field name="name">Registrations</field>
504             <field name="model">event.registration</field>
505             <field name="arch" type="xml">
506                 <search string="Event Registration">
507                     <field name="name" string="Participant" filter_domain="['|','|',('name','ilike',self),('email','ilike',self),('origin','ilike',self)]"/>
508                     <filter icon="terp-mail-message-new" string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
509                     <separator/>
510                     <filter icon="terp-check" string="New" name="draft" domain="[('state','=','draft')]" help="Registrations in unconfirmed state"/>
511                     <filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','open')]" help="Confirmed registrations"/>
512                     <separator/>
513                     <filter icon="terp-personal" string="My Registrations" help="My Registrations" domain="[('user_id','=',uid)]"/>
514                     <field name="event_id"/>
515                     <field name="user_id"/>
516                     <field name="partner_id"/>
517                     <group expand="0" string="Group By...">
518                         <filter string="Responsible"  icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
519                         <filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
520                         <filter string="Event" icon="terp-crm" domain="[]" context="{'group_by':'event_id'}"/>
521                         <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
522                    </group>
523                 </search>
524             </field>
525         </record>
526
527         <record model="ir.actions.act_window" id="action_registration">
528           <field name="name">Registrations</field>
529           <field name="res_model">event.registration</field>
530           <field name="view_type">form</field>
531           <field name="domain"></field>
532           <field name="view_mode">tree,form,calendar,graph</field>
533           <field name="context">{}</field>
534           <field name="search_view_id" ref="view_registration_search"/>
535         </record>view_
536
537         <menuitem name="Registrations"
538             id="menu_action_registration" parent="base.menu_event_main"
539             action="action_registration" groups="event.group_event_manager,event.group_event_user"/>
540
541         <menuitem name="Reporting" id="base.menu_report_association" parent="event_main_menu" sequence="20"/>
542
543     </data>
544 </openerp>