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