[FIX]Fix header problem in preview table and selection of column if duplicate it...
[odoo/odoo.git] / addons / base / static / src / xml / base.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- vim:fdl=1:
3 -->
4 <templates id="template" xml:space="preserve">
5 <t t-name="Interface">
6     <div id="oe_loading" class="loading"></div>
7     <div id="oe_notification" class="oe_notification">
8         <div id="oe_notification_default">
9             <a class="ui-notify-cross ui-notify-close" href="#">x</a>
10             <h1>#{title}</h1>
11             <p>#{text}</p>
12         </div>
13         <div id="oe_notification_alert" class="ui-state-error">
14             <a class="ui-notify-cross ui-notify-close" href="#">x</a>
15             <span style="float:left; margin:2px 5px 0 0;" class="ui-icon ui-icon-alert"></span>
16             <h1>#{title}</h1>
17             <p>#{text}</p>
18         </div>
19     </div>
20     <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" class="main_table">
21     <tr>
22         <td colspan="2" valign="top">
23             <div id="oe_header" class="header"></div>
24             <div id="oe_menu" class="menu"></div>
25         </td>
26     </tr>
27     <tr>
28         <td valign="top" class="login-container" colspan="2">
29             <div id="oe_login" class="login"></div>
30         </td>
31     </tr>
32     <tr class="db_options_row">
33         <td valign="top" class="db_container">
34             <div id="oe_database" class="database"></div>
35         </td>
36         <td valign="top">
37                 <div id="oe_db_options"></div>
38         </td>
39     </tr>
40     <tr>
41         <td valign="top" id="oe_secondary_menu" class="secondary_menu">
42         </td>
43         <td valign="top">
44             <div id="oe_app" class="oe-application">
45             </div>
46         </td>
47     </tr>
48     <tr>
49         <td colspan="2">
50             <div id="oe_footer" class="oe_footer">
51                 <p class="oe_footer_powered">Powered by <a href="http://www.openerp.com">openerp.com</a>.</p>
52             </div>
53         </td>
54     </tr>
55     </table>
56 </t>
57 <t t-name="Loading">
58     Loading...
59 </t>
60 <t t-name="Database">
61     <ul class="db_options" style="padding: 0px; display: inline;">
62         <li id="db-create">Create</li>
63         <li id="db-drop">Drop</li>
64         <li id="db-backup">Backup</li>
65         <li id="db-restore">Restore</li>
66         <li id="db-change-password">Password</li>
67         <li id="back-to-login">Back to Login</li>
68     </ul>
69 </t>
70 <t t-name="Database.CreateDB">
71     <form name="create_db_form" class="oe_forms" method="POST">
72         <table width="100%">
73             <tr>
74                 <td class="option_string">
75                     CREATE DATABASE
76                 </td>
77             </tr>
78         </table>
79         <table align="center" class="db_option_table">
80             <tr>
81                 <td><label for="super_admin_pwd">Master password:</label></td>
82                 <td><input type="password" name="super_admin_pwd" class="required" value="admin"/></td>
83             </tr>
84             <tr>
85                 <td><label for="db_name">New database name:</label></td>
86                 <td><input type="text" name="db_name" class="required"/></td>
87             </tr>
88             <tr>
89                 <td><label for="demo_data">Load Demonstration data:</label></td>
90                 <td><input type="checkbox" name="demo_data"/></td>
91             </tr>
92             <tr>
93                 <td><label for="db_lang">Default language:</label></td>
94                 <td>
95                     <select name="db_lang" t-if="lang_list">
96                         <t t-foreach="lang_list" t-as="lang">
97                             <option t-att-value="lang[0]" t-att-selected="lang[0] === 'en_US' ? 'selected' : undefined"><t t-esc="lang[1]"/></option>
98                         </t>
99                     </select>
100                 </td>
101             </tr>
102             <tr>
103                 <td><label for="create_admin_pwd">Admin password:</label></td>
104                 <td><input type="password" name="create_admin_pwd" class="required"/></td>
105             </tr>
106             <tr>
107                 <td><label for="create_confirm_pwd">Confirm password:</label></td>
108                 <td><input type="password" name="create_confirm_pwd" class="required"
109                            equalTo="input[name=create_admin_pwd]"/></td>
110             </tr>
111             <tr>
112                 <td colspan="2" align="right"><input type="submit" value="Create"/></td>
113             </tr>
114         </table>
115     </form>
116 </t>
117 <t t-name="DropDB">
118     <form name="drop_db_form" class="oe_forms" method="POST">
119         <table width="100%">
120             <tr>
121                 <td class="option_string">
122                     DROP DATABASE
123                 </td>
124             </tr>
125         </table>
126         <table align="center" class="db_option_table">
127             <tr>
128                 <td><label for="drop_db">Database:</label></td>
129                 <td>
130                     <select t-if="db_list" name="drop_db" autofocus="autofocus">
131                         <t t-foreach="db_list" t-as="db">
132                             <option t-att-value="db"><t t-esc="db"/></option>
133                         </t>
134                     </select>
135                 </td>
136             </tr>
137             <tr>
138                 <td><label for="drop_password">Master Password:</label></td>
139                 <td><input type="password" name="drop_pwd" class="required"/></td>
140             </tr>
141             <tr>
142                 <td colspan="2" align="right"><input type="submit" value="Drop"/></td>
143             </tr>
144         </table>
145     </form>
146 </t>
147 <t t-name="BackupDB">
148     <form name="backup_db_form" class="oe_forms" method="POST" target="backup-target"
149           action="/base/database/backup">
150         <input type="hidden" name="token"/>
151         <table width="100%">
152             <tr>
153                 <td class="option_string">
154                     BACKUP DATABASE
155                 </td>
156             </tr>
157         </table>
158         <table align="center" class="db_option_table">
159             <tr>
160                 <td><label for="backup_db">Database:</label></td>
161                 <td>
162                     <select t-if="db_list" name="backup_db" autofocus="autofocus">
163                         <t t-foreach="db_list" t-as="db">
164                             <option t-att-value="db"><t t-esc="db"/></option>
165                         </t>
166                     </select>
167                 </td>
168             </tr>
169             <tr>
170                 <td><label for="backup_pwd">Master Password:</label></td>
171                 <td><input type="password" name="backup_pwd" class="required"/></td>
172             </tr>
173             <tr>
174                 <td colspan="2" align="right"><input type="submit" value="Backup"/></td>
175             </tr>
176         </table>
177     </form>
178 </t>
179 <t t-name="RestoreDB">
180     <form name="restore_db_form" class="oe_forms" method="POST">
181         <table width="100%">
182             <tr>
183                 <td class="option_string">
184                     RESTORE DATABASE
185                 </td>
186             </tr>
187         </table>
188         <table align="center" class="db_option_table">
189             <tr>
190                 <td><label for="restore_db">File:</label></td>
191                 <td><input type="file" name="db_file" class="required"
192                          autofocus="autofocus"/></td>
193             </tr>
194             <tr>
195                 <td><label for="restore_pwd">Master Password:</label></td>
196                 <td><input type="password" name="restore_pwd" class="required"/></td>
197             </tr>
198         <tr>
199                 <td><label for="new_db">New database name:</label></td>
200                 <td><input type="text" name="new_db" class="required"/></td>
201             </tr>
202         <tr>
203             <td colspan="2" align="right"><input type="submit" value="Restore"/></td>
204             </tr>
205         </table>
206     </form>
207 </t>
208 <t t-name="Change_DB_Pwd">
209     <form name="change_pwd_form" class="oe_forms" method="POST">
210         <table width="100%">
211             <tr>
212                 <td class="option_string">
213                     CHANGE MASTER PASSWORD
214                 </td>
215             </tr>
216         </table>
217         <table align="center" class="db_option_table">
218             <tr>
219                 <td><label for="old_pwd">Master password:</label></td>
220                 <td><input type="password" name="old_pwd" class="required"
221                            minlength="1" autofocus="autofocus"/></td>
222             </tr>
223             <tr>
224             <td><label for="new_pwd">New master password:</label></td>
225             <td><input type="password" name="new_pwd" class="required"
226                        minlength="1"/></td>
227             </tr>
228             <tr>
229                 <td><label for="confirm_pwd">Confirm new master password:</label></td>
230                 <td><input type="password" name="confirm_pwd" class="required"
231                            equalTo="input[name=new_pwd]" minlength="1"/></td>
232             </tr>
233             <tr>
234                 <td colspan="2" align="right"><input type="submit" value="Change Password"/></td>
235             </tr>
236         </table>
237     </form>
238 </t>
239 <t t-name="Login">
240     <form class="oe_forms">
241         <fieldset>
242             <legend style="">
243                 <img src="/base/static/src/img/stock_person.png" alt="" />
244             </legend>
245             <div class="oe_box2">
246                 <table align="center" cellspacing="2px" cellpadding="0">
247                     <tr>
248                         <td><label for="db">Database:</label></td>
249                         <td>
250                             <t t-if="!db_list">
251                                 <input type="text" name="db" t-att-value="selected_db || ''" autofocus="true"/>
252                             </t>
253                             <t t-if="db_list">
254                                 <select name="db">
255                                     <t t-foreach="db_list" t-as="db">
256                                         <t t-if="selected_db === db">
257                                             <option t-att-value="db" selected="true">
258                                                 <t t-esc="db"/></option>
259                                         </t>
260                                         <t t-if="selected_db !== db">
261                                             <option t-att-value="db"><t t-esc="db"/></option>
262                                         </t>
263                                     </t>
264                                 </select>
265                             </t>
266                         </td>
267                     </tr>
268                     <tr>
269                         <td><label for="login">User:</label></td>
270                         <td><input type="text" name="login"
271                             t-att-value="selected_login || ''" autofocus="true"/></td>
272                     </tr>
273                     <tr>
274                         <td><label for="password">Password:</label></td>
275                         <td><input type="password" name="password"
276                                 t-att-value="selected_password || ''"/></td>
277                     </tr>
278                     <tr>
279                         <td></td>
280                         <td>
281                                 <button type="button" id="oe-db-config">Database</button>
282                             <button type="submit" name="submit">Login</button>
283                         </td>
284                     </tr>
285                 </table>
286             </div>
287         </fieldset>
288         <div class="login_error_message">Bad username or password</div>
289     </form>
290     <div class="oe_login_right_pane">
291         <p>We think that daily job activities can be more intuitive, efficient, automated, .. and even fun.</p>
292         <h3>OpenERP's vision to be:</h3>
293
294         <table cellpadding="0" cellspacing="0" width="100%" style="border:none;">
295             <tbody>
296             <tr>
297                 <td>
298                     <img src="/base/static/src/img/product.png"/>
299                 </td>
300                 <td>
301                     <strong>Full featured</strong><br />
302                     Today's enterprise challenges are multiple. We provide one module for each need.
303                 </td>
304             </tr>
305             <tr>
306                 <td>
307                     <img src="/base/static/src/img/accessories-archiver.png"/>
308                 </td>
309                 <td>
310                     <strong>Open Source</strong><br />
311                     To Build a great product, we rely on the knowledge of thousands of contributors.
312                 </td>
313             </tr>
314             <tr>
315                 <td>
316                     <img src="/base/static/src/img/partner.png" />
317                 </td>
318                 <td>
319                     <strong>User Friendly</strong><br />
320                     In order to be productive, people need clean and easy to use interface.
321                 </td>
322             </tr>
323             </tbody>
324         </table>
325
326     </div>
327 </t>
328 <t t-name="Header">
329     <div>
330         <a t-att-href="'/' + widget.qs" class="company_logo_link">
331             <div class="company_logo" />
332         </a>
333     </div>
334 </t>
335 <t t-name="Header-content">
336     <h1 class="header_title">
337         <span class="database"><t t-esc="widget.session.db"/></span> - <t t-esc="widget.session.login"/> <br/>
338         <small class="username">rpc_session_id: <t t-esc="widget.session.session_id"/></small>
339     </h1>
340     <div class="header_corner">
341         <ul class="block">
342             <li>
343                 <a href="#home" title="Home" class="home"><img src="/base/static/src/img/header-home.png" width="16" height="16" border="0"/></a>
344             </li>
345             <li>
346                 <a href="#requests" title="Requests" class="requests"><img src="/base/static/src/img/header-requests.png" width="16" height="16" border="0"/><small>1</small></a>
347             </li>
348             <li class="preferences">
349                 <a href="#preferences" title="Preferences" class="preferences"><img src="/base/static/src/img/header-preferences.png" width="16" height="16" border="0"/></a>
350             </li>
351             <li>
352                 <a href="#about" title="About" class="about"><img src="/base/static/src/img/header-about.png" width="16" height="16" border="0"/></a>
353             </li>
354             <li>
355                 <a href="http://doc.openerp.com/v6.0/book?version=$version" title="Help" target="_blank" class="help"><img src="/base/static/src/img/header-help.png" width="16" height="16" border="0"/></a>
356             </li>
357         </ul>
358         <div class="block">
359             <a href="#logout" class="logout">LOGOUT</a>
360         </div>
361
362     </div>
363     <div class="oe-shortcuts"> </div>
364 </t>
365 <ul t-name="Shortcuts">
366     <li t-foreach="shortcuts" t-as="shortcut"
367             t-att-data-id="shortcut.res_id"
368             t-att-data-shortcut-id="shortcut.id"
369         ><t t-esc="shortcut.name"/></li>
370 </ul>
371 <t t-name="Menu">
372     <table align="center">
373         <tr>
374         <t t-foreach="data.children" t-as="menu">
375             <td>
376                 <a href="#" t-att-data-menu="menu.id">
377                     <t t-esc="menu.name"/>
378                 </a>
379             </td>
380         </t>
381         </tr>
382     </table>
383 </t>
384 <t t-name="Menu.secondary">
385     <div style="display: none" class="menu_accordion" t-att-data-menu-parent="menu.id">
386         <t t-foreach="menu.children" t-as="menu">
387             <t t-set="header">h3</t>
388             <t t-call="Menu.secondary.children"/>
389         </t>
390     </div>
391 </t>
392 <t t-name="Menu.secondary.children">
393     &lt;<t t-esc="header"/>&gt;
394         <a href="#" t-attf-id="menu_#{menu.id}">
395             <span><t t-esc="menu.name"/></span>
396         </a>
397     &lt;/<t t-esc="header"/>&gt;
398     <div class="menu_content">
399         <t t-foreach="menu.children" t-as="menu">
400             <t t-if="!menu.children.length">
401                 <a href="#" class="leaf" t-att-data-menu="menu.id">
402                     <span><t t-esc="menu.name"/></span>
403                 </a>
404             </t>
405             <t t-if="menu.children.length">
406                 <div class="submenu_accordion">
407                     <t t-call="Menu.secondary.children">
408                         <t t-set="header">h4</t>
409                     </t>
410                 </div>
411             </t>
412         </t>
413     </div>
414 </t>
415 <t t-name="ViewManager">
416     <table class="view-manager-main-table">
417     <tr>
418         <td class="view-manager-main-content">
419             <a class="oe-shortcut-toggle" title="Add / Remove Shortcut..."
420                href="javascript: void(0)"> </a>
421             <div class="oe_vm_switch">
422                 <t t-if="views.length != 1" t-foreach="views" t-as="view">
423                     <button type="button" t-att-data-view-type="view.view_type">
424                         <t t-esc="view.view_type"/>
425                     </button>
426                 </t>
427             </div>
428             <div t-attf-id="#{prefix}_search" t-opentag="true"/>
429             <t t-foreach="views" t-as="view">
430                 <div t-attf-id="#{prefix}_view_#{view.view_type}"/>
431             </t>
432         </td>
433         <td class="view-manager-main-sidebar" height="100%">
434             <t t-foreach="views" t-as="view">
435                 <div t-attf-id="#{prefix}_sidebar_#{view.view_type}" class="sidebar-main-div closed-sidebar" style="display: none"/>
436             </t>
437         </td>
438     </tr>
439     </table>
440 </t>
441 <t t-name="Sidebar">
442     <a class="toggle-sidebar"></a>
443     <div class="sidebar-content">
444         <div class="sidebar-actions">
445         </div>
446     </div>
447 </t>
448 <t t-name="Sidebar.section">
449     <h2><t t-esc="name"/></h2>
450     <div t-att-id="section_id" t-att-class="classname">
451         <ul t-if="items">
452             <li t-foreach="items" t-as="item" t-att-class="item.classname">
453                 <a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
454                     <t t-esc="item.label"/>
455                 </a>
456             </li>
457         </ul>
458     </div>
459 </t>
460 <t t-name="TranslateDialog">
461     <ul class="oe_translate_tabs">
462         <li><a t-attf-href="##{widget.element_id}_fields">Fields</a></li>
463         <li><a t-attf-href="##{widget.element_id}_view">View labels</a></li>
464         <li><a t-attf-href="##{widget.element_id}_sidebar">Sidebar Relates</a></li>
465     </ul>
466     <div t-attf-id="#{widget.element_id}_fields">
467         <table t-if="widget.view.translatable_fields" class="oe_frame oe_forms oe_translation_form" border="0" cellpadding="0" cellspacing="0" width="100%">
468         <tr>
469             <td class="oe_form_separator" width="1%" nowrap="nowrap">
470                 <div class="separator horizontal">Field</div>
471             </td>
472             <th t-foreach="widget.languages" align="left">
473                 <div class="separator horizontal"><t t-esc="name"/></div>
474             </th>
475         </tr>
476         <tr t-foreach="widget.view.translatable_fields" t-as="field">
477             <td class="oe_form_frame_cell" width="1%" nowrap="nowrap">
478                 <label class="oe_form_label"><t t-esc="field.string"/>:</label>
479             </td>
480             <td t-foreach="widget.languages" t-as="lg" class="oe_form_frame_cell">
481                 <input t-if="field.type == 'char'" type="text" t-attf-name="#{lg.code}-#{field.name}" value="" data-value="" class="oe_trad_field" style="width: 100%"/>
482                 <textarea t-if="field.type == 'text'" t-attf-name="#{lg.code}-#{field.name}" data-value="" class="oe_trad_field" style="width: 100%"></textarea>
483             </td>
484         </tr>
485         </table>
486     </div>
487     <div t-attf-id="#{widget.element_id}_view">
488         Translate view
489     </div>
490     <div t-attf-id="#{widget.element_id}_sidebar">
491         Translate sidebar
492     </div>
493 </t>
494 <t t-name="TreeView">
495     <h2 class="oe_view_title"><t t-esc="title"/></h2>
496     <select t-if="toolbar" style="width: 30%">
497     </select>
498     <table class="oe-treeview-table">
499         <thead>
500             <tr>
501                 <th t-foreach="fields_view" t-as="field"
502                     t-if="!field.attrs.modifiers.tree_invisible"
503                     class="treeview-header">
504                     <t t-esc="fields[field.attrs.name].string" />
505                 </th>
506             </tr>
507         </thead>
508         <tbody>
509         </tbody>
510     </table>
511 </t>
512 <tr t-name="TreeView.rows"
513         t-foreach="records" t-as="record"
514         t-att-id="'treerow_' + record.id"
515         t-att-data-id="record.id" t-att-data-level="level + 1">
516     <t t-set="children" t-value="record[children_field]"/>
517     <t t-set="has_children" t-value="children and children.length"/>
518
519     <td t-foreach="fields_view" t-as="field"
520         t-if="!field.attrs.modifiers.tree_invisible"
521         t-att-data-id="record.id"
522         t-att-style="!field_index ? 'background-position: ' + 19*level + 'px; padding-left: ' + 19*level + 'px' : undefined"
523         t-att-class="!field_index and has_children ? 'treeview-tr' : 'treeview-td'">
524         <span t-if="!field.attrs.modifiers.invisible">
525             <t t-esc="render(record[field.attrs.name], fields[field.attrs.name])" />
526         </span>
527     </td>
528 </tr>
529 <table t-name="ListView" class="oe-listview-content">
530     <t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
531     <thead class="ui-widget-header">
532         <tr t-if="options.action_buttons !== false or options.pager !== false">
533             <th t-att-colspan="columns_count">
534                 <table>
535                     <tr>
536                         <td t-if="options.action_buttons !== false" class="oe-actions">
537                             <button type="button" class="oe-list-add"
538                                     t-if="options.addable">
539                                 <t t-esc="options.addable"/>
540                             </button>
541                             <button type="button" class="oe-list-delete"
542                                     t-if="options.selectable and options.deletable">
543                                 Delete
544                             </button>
545                         </td>
546                         <th t-if="options.pager !== false" class="oe-list-pager">
547                             <button type="button" disabled="disabled"
548                                     data-pager-action="first">First</button>
549                             <button type="button" disabled="disabled"
550                                     data-pager-action="previous"
551                                     >&lt;</button>
552
553                             <span class="oe-pager-state">
554                             </span>
555
556                             <button type="button" disabled="disabled"
557                                     data-pager-action="next">&gt;</button>
558                             <button type="button" disabled="disabled"
559                                     data-pager-action="last">Last</button>
560                         </th>
561                     </tr>
562                 </table>
563             </th>
564         </tr>
565         <tr t-if="options.header">
566             <t t-foreach="columns" t-as="column">
567                 <th t-if="column.meta">
568                     <t t-esc="column.string"/>
569                 </th>
570             </t>
571             <th t-if="options.selectable" width="1"/>
572             <t t-foreach="columns" t-as="column">
573                 <th t-if="!column.meta and column.invisible !== '1'" t-att-data-id="column.id"
574                     t-att-class="((options.sortable and column.tag !== 'button') ? 'oe-sortable' : null)">
575                     <t t-if="column.tag !== 'button'"
576                         ><t t-esc="column.string"/></t>
577                 </th>
578             </t>
579             <th t-if="options.deletable" width="1"/>
580         </tr>
581     </thead>
582     <tfoot class="ui-widget-header">
583         <tr>
584             <td t-if="options.selectable"/>
585             <td t-foreach="aggregate_columns" t-as="column" class="oe-list-footer oe-number"
586                 t-att-data-field="column.id" t-att-title="column.label">
587             </td>
588             <td t-if="options.deletable"/>
589         </tr>
590     </tfoot>
591 </table>
592 <t t-name="ListView.rows" t-foreach="records.length" t-as="index">
593     <t t-call="ListView.row">
594         <t t-set="record" t-value="records.at(index)"/>
595         <t t-set="row_parity" t-value="index_parity"/>
596     </t>
597 </t>
598 <tr t-name="ListView.row" t-att-class="row_parity"
599         t-att-data-id="record.get('id')">
600     <t t-foreach="columns" t-as="column">
601         <td t-if="column.meta">
602
603         </td>
604     </t>
605     <th t-if="options.selectable" class="oe-record-selector" width="1">
606         <input type="checkbox"/>
607     </th>
608     <t t-foreach="columns" t-as="column">
609         <t t-set="align" t-value="column.type === 'integer' or column.type == 'float'"/>
610         <td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
611             t-att-class="'oe-field-cell' + (align ? ' oe-number' : '')"
612             t-att-data-field="column.id">
613             <t t-raw="render_cell(record.toForm().data, column)"/>
614         </td>
615     </t>
616     <td t-if="options.deletable" class='oe-record-delete' width="1">
617         <button type="button" name="delete">â™»</button>
618     </td>
619 </tr>
620 <t t-name="ListView.row.form">
621     <t t-raw="frame.render()"/>
622 </t>
623 <t t-name="FormView">
624     <div class="oe_form_header" t-att-id="view.element_id + '_header'">
625         <h2 class="oe_view_title"><t t-esc="view.fields_view.arch.attrs.string"/> <button class="oe_get_xml_view">xml</button></h2>
626         <div class="oe_form_buttons" t-if="view.options.action_buttons !== false">
627             <!--<button type="button" class="oe_form_button_save">
628                 <span class="oe_form_on_update">Save</span>
629                 <span class="oe_form_on_create">Create</span>
630             </button>-->
631             <button type="button" class="oe_form_button_save_edit">
632                 <span class="oe_form_on_update">Save &amp; Edit</span>
633                 <span class="oe_form_on_create">Create &amp; Edit</span>
634             </button>
635             <!--<button type="button" class="oe_form_button_cancel">Cancel</button>-->
636             <button type="button" class="oe_form_button_new">New</button>
637         </div>
638         <div class="oe_form_pager" t-if="view.options.pager !== false">
639             <button type="button" data-pager-action="first">First</button>
640             <button type="button" data-pager-action="previous">&lt;&lt;</button>
641
642             <span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span>
643
644             <button type="button" data-pager-action="next">&gt;&gt;</button>
645             <button type="button" data-pager-action="last">Last</button>
646         </div>
647     </div>
648     <t t-raw="frame.render()"/>
649 </t>
650 <t t-name="FormView.sidebar.attachments">
651     <div class="oe-sidebar-attachments-toolbar">
652         <div class="oe-binary-file-set" style="float: right">
653             <form class="oe-binary-form" t-attf-target="#{element_id}_iframe"
654                 method="post" enctype="multipart/form-data" action="/base/binary/upload_attachment">
655                 <input type="hidden" name="session_id" t-att-value="session.session_id"/>
656                 <input type="hidden" name="callback" t-attf-value="#{element_id}_iframe"/>
657                 <input type="hidden" name="model" t-att-value="view.dataset.model"/>
658                 <input type="hidden" name="id" t-att-value="view.datarecord.id"/>
659                 <button class="button" type="button">
660                     <img src="/base/static/src/img/throbber.gif" width="16" height="16" style="display: none"/>
661                     <span>Add</span>
662                 </button>
663                 <input type="file" class="oe-binary-file" name="ufile" title="Add attachment"
664                     t-att-onclick="view.datarecord.id ? null : 'alert(\'No record selected ! You can only attach to existing record.\'); return false;'"/>
665             </form>
666             <iframe t-attf-id="#{element_id}_iframe" t-attf-name="#{element_id}_iframe" style="display: none"> </iframe>
667         </div>
668     </div>
669     <br style="clear: both"/>
670     <ul class="oe-sidebar-attachments-items">
671         <li t-foreach="attachments" t-as="attachment">
672             <t t-if="attachment.type == 'binary'" t-set="attachment.url" t-value="'/base/binary/saveas?session_id='
673                 + session.session_id + '&amp;model=ir.attachment&amp;id=' + attachment.id
674                 + '&amp;field=datas&amp;fieldname=name&amp;t=' + (new Date().getTime())"/>
675             <a class="oe-sidebar-attachments-link" t-att-href="attachment.url" target="_blank">
676                 <t t-esc="attachment.name"/>
677             </a>
678             <a href="#" class="oe-sidebar-attachment-delete" t-att-data-id="attachment.id" t-attf-title="Delete the attachment #{attachment.name}">
679                 <img src="/base/static/src/img/attachments-close.png" width="15" height="15" border="0"/>
680             </a>
681         </li>
682     </ul>
683 </t>
684 <t t-name="Widget">
685     Unhandled widget
686     <t t-raw="console.log('Unhandled widget', widget)"/>
687 </t>
688 <t t-name="WidgetFrame">
689     <table border="0" width="100%" cellpadding="0" cellspacing="0" class="oe_frame oe_forms">
690     <tr t-foreach="widget.table" t-as="row">
691         <t t-foreach="row" t-as="td">
692             <td t-att-colspan="td.colspan gt 1 ? td.colspan : undefined"
693                 t-att-width="td.width ? td.width : undefined"
694                 t-att-nowrap="td.is_field_label or td.is_field_m2o? 'true' : undefined"
695                 t-att-valign="td.table ? 'top' : undefined"
696                 t-att-id="td.element_id"
697                 t-att-class="'oe_form_frame_cell oe_form_' + (td.is_field_label ? 'label' : (td.field ? 'field_' + td.type : td.type))"
698             >
699                 <t t-raw="td.render()"/>
700             </td>
701         </t>
702     </tr>
703     </table>
704 </t>
705 <t t-name="WidgetNotebook">
706     <ul>
707         <li t-foreach="widget.pages" t-as="page" t-att-id="page.element_tab_id">
708             <a t-att-href="'#' + page.element_id">
709                 <t t-esc="page.string"/>
710             </a>
711         </li>
712     </ul>
713     <t t-foreach="widget.pages" t-as="page">
714         <t t-raw="page.render()"/>
715     </t>
716 </t>
717 <t t-name="WidgetNotebookPage">
718     <div t-att-id="widget.element_id">
719         <t t-call="WidgetFrame"/>
720     </div>
721 </t>
722 <t t-name="WidgetSeparator">
723     <div t-att-class="'separator ' + (widget.node.attrs.orientation || 'horizontal')">
724         <t t-esc="widget.string"/>
725     </div>
726 </t>
727 <t t-name="WidgetLabel">
728     <label t-att-for="widget.element_id + '_field'"
729            t-att-class="'oe_form_label' + (widget.help ? '_help' : '')"
730            t-att-title="widget.help">
731         <t t-esc="widget.string"/>
732         <span t-if="widget.help">?</span>
733         <t t-if="widget.string and widget.node.tag != 'label'">:</t>
734     </label>
735 </t>
736 <t t-name="WidgetParagraph">
737     <p class="oe_form_paragraph"><t t-esc="widget.string"/></p>
738 </t>
739 <t t-name="FieldChar">
740     <input type="text" size="1"
741         t-att-name="widget.name"
742         t-att-id="widget.element_id + '_field'"
743         t-att-class="'field_' + widget.type"
744         t-attf-style="width: #{widget.field.translate ? '99' : '100'}%"
745     />
746     <img class="oe_field_translate" t-if="widget.field.translate" src="/base/static/src/img/icons/terp-translate.png" width="16" height="16" border="0"/>
747 </t>
748 <t t-name="FieldEmail">
749     <table cellpadding="0" cellspacing="0" border="0" width="100%">
750     <tr>
751         <td width="100%">
752             <t t-call="FieldChar"/>
753         </td>
754         <td width="16">
755             <button type="button" class="button" title="Send an e-mail with your default e-mail client">
756                 <img src="/base/static/src/img/icons/terp-mail-message-new.png"/>
757             </button>
758         </td>
759     </tr>
760     </table>
761 </t>
762 <t t-name="FieldUrl">
763     <table cellpadding="0" cellspacing="0" border="0" width="100%">
764     <tr>
765         <td width="100%">
766             <t t-call="FieldChar"/>
767         </td>
768         <td width="16">
769             <button type="button" class="button" title="Open this resource">
770                 <img src="/base/static/src/img/icons/gtk-ok.png"/>
771             </button>
772         </td>
773     </tr>
774     </table>
775 </t>
776 <t t-name="FieldText">
777     <textarea rows="6"
778         t-att-name="widget.name"
779         t-att-id="widget.element_id + '_field'"
780         t-att-class="'field_' + widget.type"
781         t-attf-style="width: #{widget.field.translate ? '99' : '100'}%"
782     ></textarea>
783     <img class="oe_field_translate" t-if="widget.field.translate" src="/base/static/src/img/icons/terp-translate.png" width="16" height="16" border="0"/>
784 </t>
785 <t t-name="FieldDate">
786     <input type="text" size="1" style="width: 100%"
787         t-att-name="widget.name"
788         t-att-id="widget.element_id + '_field'"
789         t-att-class="'field_' + widget.type"
790     />
791 </t>
792 <t t-name="FieldSelection">
793     <select
794         t-att-name="widget.name"
795         t-att-id="widget.element_id + '_field'"
796         t-att-class="'field_' + widget.type"
797         style="width: 100%">
798             <t t-foreach="widget.field_index" t-as="options">
799                 <option t-att-value="options.ikey">
800                     <t t-esc="options.label"/>
801                 </option>
802             </t>
803     </select>
804 </t>
805 <t t-name="FieldMany2One">
806     <div t-att-id="widget.element_id" class="oe-m2o">
807         <input t-att-id="widget.element_id + '_input'" type="text" size="1" style="width: 100%;"/>
808         <span class="oe-m2o-drop-down-button" t-att-id="widget.element_id + '_drop_down'">
809             <img src="/base/static/src/img/down-arrow.png" /></span>
810         <span class="oe-m2o-cm-button" t-att-id="widget.name + '_open'">
811             <img src="/base/static/src/img/icons/gtk-index.png"/></span>
812         <div t-att-id="widget.cm_id" class="contextMenu" style="display:none">
813         </div>
814     </div>
815 </t>
816 <t t-name="FieldMany2One.context_menu">
817     <ul>
818         <li t-att-id="widget.cm_id + '_open'" style="color:grey">Open...</li>
819         <li t-att-id="widget.cm_id + '_create'">Create...</li>
820         <li t-att-id="widget.cm_id + '_search'" class="oe_m2o_menu_item_mandatory">Search...</li>
821         <t t-set="i" t-value="0"/>
822         <t t-foreach="widget.related_entries" t-as="entry">
823             <li t-att-id="widget.cm_id + '_related_' + i" style="color:grey" class="oe_m2o_menu_item_mandatory">
824                 ... <t t-esc="(entry[2] || {})['name'] || ''"/>
825             </li>
826             <t t-set="i" t-value="i+1"/>
827         </t>
828     </ul>
829 </t>
830 <t t-name="FieldOne2Many">
831     <div t-att-id="widget.element_id">
832     </div>
833 </t>
834 <t t-name="FieldMany2Many">
835     <div t-att-id="widget.list_id"></div>
836 </t>
837 <t t-name="FieldReference">
838     <table border="0" width="100%" cellpadding="0" cellspacing="0" class="oe_frame oe_forms">
839     <tr>
840         <td t-att-id="widget.selection.element_id" class="oe_form_frame_cell oe_form_selection">
841             <t t-raw="widget.selection.render()"/>
842         </td>
843         <td t-att-id="widget.m2o.element_id" class="oe_form_frame_cell oe_form_many2one" nowrap="true">
844             <t t-raw="widget.m2o.render()"/>
845         </td>
846     </tr>
847     </table>
848 </t>
849 <t t-name="FieldBoolean">
850     <input type="checkbox"
851         t-att-name="widget.name"
852         t-att-id="widget.element_id + '_field'"
853         t-att-class="'field_' + widget.type"/>
854 </t>
855 <t t-name="FieldProgressBar">
856     <div t-opentag="true" class="oe-progressbar">
857         <span></span>
858     </div>
859 </t>
860 <t t-name="FieldBinaryImage">
861     <table cellpadding="0" cellspacing="0" border="0">
862     <tr>
863         <td align="center">
864             <img src="/base/static/src/img/placeholder.png" class="oe-binary-image" border="1"
865                 t-att-id="widget.element_id + '_field'"
866                 t-att-name="widget.name"
867                 t-att-class="'field_' + widget.type"
868                 t-att-width="widget.node.attrs.img_width || widget.node.attrs.width"
869                 t-att-height="widget.node.attrs.img_height || widget.node.attrs.height"
870             />
871         </td>
872     </tr>
873     <tr>
874         <td align="center" valign="bottom" height="25">
875             <div class="oe-binary">
876                 <table cellspacing="0" cellpadding="0" border="0">
877                 <tr>
878                     <td>
879                         <div class="oe-binary-file-set" style="width: 40px; height:22px;">
880                             <form class="oe-binary-form" t-att-target="widget.iframe"
881                                 method="post" enctype="multipart/form-data" action="/base/binary/upload">
882                                 <input type="hidden" name="session_id" value=""/>
883                                 <input type="hidden" name="callback" t-att-value="widget.iframe"/>
884                                 <button class="button" type="button" title="Set Image">
885                                     <img src="/base/static/src/img/icons/STOCK_DIRECTORY.png"/>
886                                 </button>
887                                 <input type="file" class="oe-binary-file" name="ufile"/>
888                             </form>
889                         </div>
890                     </td>
891                     <td>
892                         <button class="button oe-binary-file-clear" type="button" title="Clear">
893                             <img src="/base/static/src/img/icons/STOCK_MISSING_IMAGE.png"/>
894                         </button>
895                     </td>
896                 </tr>
897                 </table>
898             </div>
899             <div class="oe-binary-progress" style="display: none">
900                 <img src="/base/static/src/img/throbber.gif" width="16" height="16"/>
901                 <b>Uploading ...</b>
902             </div>
903             <iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"> </iframe>
904         </td>
905     </tr>
906     </table>
907 </t>
908 <t t-name="FieldBinaryFile">
909     <table cellpadding="0" cellspacing="0" border="0" width="100%">
910     <tr>
911         <td width="100%">
912             <input type="text" size="1"
913                 t-att-name="widget.name"
914                 t-att-id="widget.element_id + '_field'"
915                 t-att-class="'field_' + widget.type" style="width: 100%"
916             />
917         </td>
918         <td class="oe-binary" nowrap="true">
919             <table cellspacing="0" cellpadding="0" border="0">
920             <tr>
921                 <td>
922                     <div class="oe-binary-file-set" style="width: 80px; height:22px;">
923                         <form class="oe-binary-form" t-att-target="widget.iframe"
924                             method="post" enctype="multipart/form-data" action="/base/binary/upload">
925                             <input type="hidden" name="session_id" value=""/>
926                             <input type="hidden" name="callback" t-att-value="widget.iframe"/>
927                             <button class="button" type="button" title="Set Image">
928                                 <img src="/base/static/src/img/icons/STOCK_DIRECTORY.png"/>
929                                 <span>Select</span>
930                             </button>
931                             <input type="file" class="oe-binary-file" name="ufile"/>
932                         </form>
933                     </div>
934                 </td>
935                 <td>
936                     <button class="button oe-binary-file-save" type="button" title="Save As">
937                         <img src="/base/static/src/img/icons/gtk-save.png"/>
938                         <span>Save As</span>
939                     </button>
940                 </td>
941                 <td>
942                     <button class="button oe-binary-file-clear" type="button" title="Clear">
943                         <img src="/base/static/src/img/icons/STOCK_MISSING_IMAGE.png"/>
944                         <span>Clear</span>
945                     </button>
946                 </td>
947             </tr>
948             </table>
949         </td>
950         <td class="oe-binary-progress" style="display: none" nowrap="true">
951             <img src="/base/static/src/img/throbber.gif" width="16" height="16"/>
952             <b>Uploading ...</b>
953             <iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"> </iframe>
954         </td>
955     </tr>
956     </table>
957 </t>
958 <t t-name="WidgetButton">
959     <button type="button"
960         t-att-id="widget.element_id + '_button'"
961         t-att-title="widget.help"
962         style="width: 100%" class="button">
963         <img t-if="widget.node.attrs.icon" t-att-src="'/base/static/src/img/icons/' + widget.node.attrs.icon + '.png'" width="16" height="16"/>
964         <span t-if="widget.string"><t t-esc="widget.string"/></span>
965     </button>
966 </t>
967 <t t-name="SearchView">
968     <h2 class="oe_view_title"><t t-esc="view.attrs['string']"/></h2>
969     <form class="oe_forms">
970         <t t-call="SearchView.render_lines"/>
971         <div class="oe_search-view-buttons" style="text-align: right;">
972             <input type="submit" value="Search"/>
973             <input type="reset" value="Clear"/>
974             <button class="oe_search-view-custom-filter-btn"><span>Advanced Filter</span></button>
975             <select class="oe_search-view-filters-management">
976             </select>
977         </div>
978     </form>
979 </t>
980 <t t-name="SearchView.managed-filters">
981     <option value="_filters">-- Filters --</option>
982     <t t-set="i" t-value="0"/>
983     <t t-foreach="filters" t-as="filter">
984         <option t-att-value="'get:' + i"><t t-esc="filter.name"/></option>
985         <t t-set="i" t-value="i+1"/>
986     </t>
987     <option value="_actions">-- Actions --</option>
988     <option value="save_filter">Save Filter</option>
989     <option value="manage_filters">Manage Filters</option>
990 </t>
991 <t t-name="SearchView.managed-filters.add">
992     <div>
993         <p>Filter Name:</p>
994         <input type="text"/>
995         <p>(Any existing filter with the same name will be replaced)</p>
996     </div>
997 </t>
998 <t t-name="SearchView.render_lines">
999     <table class="oe-searchview-render-line" border="0" cellspacing="0" cellpadding="0"
1000            t-foreach="lines" t-as="line">
1001         <tr>
1002             <td t-foreach="line" t-as="widget">
1003                 <t t-raw="widget.render(defaults)"/>
1004             </td>
1005         </tr>
1006     </table>
1007 </t>
1008 <button t-name="SearchView.filter" type="button"
1009         t-att-id="element_id"
1010         t-att-title="attrs.help"
1011         t-att-class="classes.join(' ')"
1012         t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined">
1013     <img t-if="attrs.icon" t-att-src="'/base/static/src/img/icons/' + attrs.icon + '.png'" width="16" height="16"/>
1014     <br t-if="attrs.icon and attrs.string"/>
1015     <t t-esc="attrs.string"/>
1016 </button>
1017 <span t-name="SearchView.filters" class="filter_label_group"
1018     ><t t-foreach="filters" t-as="filter"
1019         ><t t-raw="filter.render(defaults)"/></t
1020 ></span>
1021 <t t-name="SearchView.field">
1022     <label style="display: block" t-att-title="attrs.help"
1023            t-att-for="element_id">
1024         <t t-esc="attrs.string || attrs.name"/>
1025         <span t-if="attrs.help">(?)</span>
1026     </label>
1027     <div style="white-space: nowrap;">
1028         <input type="text" size="15" t-att-name="attrs.name"
1029                t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"
1030                t-att-id="element_id"
1031                t-att-value="defaults[attrs.name] || ''"/>
1032         <t t-if="filters.length" t-raw="filters.render(defaults)"/>
1033     </div>
1034 </t>
1035 <t t-name="SearchView.field.selection">
1036     <label style="display: block" t-att-title="attrs.help"
1037            t-att-for="element_id">
1038         <t t-esc="attrs.string || attrs.name"/>
1039         <span t-if="attrs.help">(?)</span>
1040     </label>
1041     <div style="white-space: nowrap;">
1042         <select t-att-name="attrs.name" t-att-id="element_id"
1043                 t-att-autofocus="attrs.default_focus === '1' || undefined">
1044             <option/>
1045             <t t-foreach="attrs.selection" t-as="option">
1046                 <t t-set="selected" t-value="defaults[attrs.name] === option[0]"/>
1047                 <option t-if="selected"
1048                         t-att-value="option[0]" selected="selected">
1049                     <t t-esc="option[1]"/>
1050                 </option>
1051                 <option t-if="!selected" t-att-value="option[0]">
1052                     <t t-esc="option[1]"/>
1053                 </option>
1054             </t>
1055         </select>
1056         <t t-if="filters.length" t-raw="filters.render(defaults)"/>
1057     </div>
1058 </t>
1059 <t t-name="SearchView.util.expand">
1060     <div t-att-class="'searchview_group ' + (expand == '0' ? 'folded' : 'expanded')"
1061          t-att-id="element_id">
1062         <a t-if="label" class="searchview_group_string" href="#">
1063             <t t-esc="label"/>
1064         </a>
1065         <div class="searchview_group_content">
1066             <t t-raw="content"/>
1067         </div>
1068     </div>
1069 </t>
1070 <t t-name="SearchView.group">
1071     <t t-call="SearchView.util.expand">
1072         <t t-set="expand" t-value="attrs.expand"/>
1073         <t t-set="label" t-value="attrs.string"/>
1074         <t t-set="content">
1075             <t t-call="SearchView.render_lines"/>
1076         </t>
1077     </t>
1078 </t>
1079 <t t-name="SearchView.extended_search">
1080     <t t-call="SearchView.util.expand">
1081         <t t-set="expand" t-value="false"/>
1082         <t t-set="label" t-value="'Advanced Filters'"/>
1083         <t t-set="content">
1084             <div class="searchview_extended_groups_list">
1085             </div>
1086         </t>
1087     </t>
1088 </t>
1089 <t t-name="SearchView.extended_search.group">
1090     <div t-att-id="element_id" class="searchview_extended_group">
1091         <select class="searchview_extended_group_choice">
1092             <option value="any">Any of the following conditions must match</option>
1093             <option value="all">All the following conditions must match</option>
1094             <option value="none">None of the following conditions must match</option>
1095         </select>
1096         <a class="searchview_extended_delete_group"
1097                 href="javascript:void(0)"><span></span></a>
1098         <div class="searchview_extended_propositions_list">
1099         </div>
1100         <a class="searchview_extended_add_proposition" href="javascript:void(0)">
1101             <span>Add condition</span></a>
1102         <div class="oe_adv_filters_and"><span>and</span></div>
1103     </div>
1104 </t>
1105 <t t-name="SearchView.extended_search.proposition">
1106     <div t-att-id="element_id">
1107         <select class="searchview_extended_prop_field">
1108             <t t-foreach="attrs.fields" t-as="field">
1109                 <option t-att="{'selected': field === attrs.selected ? 'selected' : null}"
1110                         t-att-value="field.name">
1111                     <t t-esc="field.string"/>
1112                 </option>
1113             </t>
1114         </select>
1115         <select class="searchview_extended_prop_op"/>
1116         <span class="searchview_extended_prop_value"/>
1117         <a class="searchview_extended_delete_prop"
1118                 href="javascript:void(0)"><span> </span></a>
1119     </div>
1120 </t>
1121 <t t-name="SearchView.extended_search.proposition.char">
1122     <input t-att-id="element_id" class="field_char"/>
1123 </t>
1124 <t t-name="SearchView.extended_search.proposition.datetime">
1125     <input t-att-id="element_id" class="field_datetime"/>
1126 </t>
1127 <t t-name="SearchView.extended_search.proposition.date">
1128     <input t-att-id="element_id" class="field_date"/>
1129 </t>
1130 <t t-name="SearchView.extended_search.proposition.integer">
1131     <input type="number" t-att-id="element_id" class="field_integer" step="1"/>
1132 </t>
1133 <t t-name="SearchView.extended_search.proposition.float">
1134     <input type="number" t-att-id="element_id" class="field_float" step="0.01"/>
1135 </t>
1136 <t t-name="SearchView.extended_search.proposition.boolean">
1137 </t>
1138 <t t-name="SearchView.extended_search.proposition.selection">
1139     <select t-att-id="element_id">
1140         <t t-foreach="field.selection" t-as="element">
1141         <option t-att-value="element[0]"><t t-esc="element[1]"/></option>
1142         </t>
1143     </select>
1144 </t>
1145 <t t-name="DialogWarning">
1146     <table cellspacing="0" cellpadding="0" border="0" class="oe-dialog-warning">
1147     <tr>
1148         <td><img src="/base/static/src/img/warning.png" class="oe-dialog-icon"/></td>
1149         <td>
1150             <p>
1151                 <t t-js="d">
1152                     var message = d.message ? d.message : d.error.data.fault_code;
1153                     d.html_error = context.engine.tools.html_escape(message)
1154                         .replace(/\n/g, '<br/>');
1155                 </t>
1156                 <t t-raw="html_error"/>
1157             </p>
1158         </td>
1159     </tr>
1160     </table>
1161 </t>
1162 <t t-name="DialogTraceback">
1163     <pre><t t-esc="error.message"/></pre>
1164     <hr/>
1165     <pre><t t-esc="error.data.debug"/></pre>
1166 </t>
1167 <t t-name="SelectCreatePopup">
1168     <div t-att-id="element_id">
1169         <table style="width:100%">
1170             <tr style="width:100%">
1171                 <td style="width:100%">
1172                     <div t-att-id="element_id + '_search'" style="width:100%"></div>
1173                 </td>
1174             </tr>
1175             <tr style="width:100%">
1176                 <td style="width:100%">
1177                     <div t-att-id="element_id + '_view_list'" style="width:100%"></div>
1178                 </td>
1179             </tr>
1180         </table>
1181         <div t-att-id="element_id + '_view_form'" style="width:100%"></div>
1182     </div>
1183 </t>
1184 <t t-name="SelectCreatePopup.search.buttons">
1185     <button type="button" class="oe_selectcreatepopup-search-select" disabled="disabled">Select</button>
1186     <button type="button" class="oe_selectcreatepopup-search-close">Cancel</button>
1187 </t>
1188 <t t-name="SelectCreatePopup.form.buttons">
1189     <t t-if="widget.options.disable_multiple_selection">
1190         <button type="button" class="oe_selectcreatepopup-form-save">Save</button>
1191     </t>
1192     <t t-if="! widget.options.disable_multiple_selection">
1193         <button type="button" class="oe_selectcreatepopup-form-save-new">Save &amp; New</button>
1194         <button type="button" class="oe_selectcreatepopup-form-save">Save &amp; Close</button>
1195     </t>
1196     <button type="button" class="oe_selectcreatepopup-form-close">Cancel</button>
1197 </t>
1198 <t t-name="FormOpenPopup">
1199     <div t-att-id="element_id">
1200         <div t-att-id="element_id + '_view_form'" style="width:100%"></div>
1201     </div>
1202 </t>
1203 <t t-name="FormOpenPopup.form.buttons">
1204     <button type="button" class="oe_formopenpopup-form-save">Save</button>
1205     <button type="button" class="oe_formopenpopup-form-close">Cancel</button>
1206 </t>
1207 <t t-name="ListView.row.frame" t-extend="WidgetFrame">
1208     <t t-jquery="tr">
1209         $(document.createElement('t'))
1210             .append(this.contents())
1211             .attr({
1212                 't-foreach': this.attr('t-foreach'),
1213                 't-as': this.attr('t-as')
1214             })
1215             .replaceAll(this)
1216             .after($(document.createElement('td')).append(
1217                 $(document.createElement('button')).attr({
1218                     'class': 'oe-edit-row-save', 'type': 'button'}).text('Save')))
1219             .before($(document.createElement('td')).append(
1220                 $(document.createElement('button')).attr({
1221                     'class': 'oe-edit-row-cancel', 'type': 'button'}).text('Cancel')))
1222             .unwrap();
1223     </t>
1224 </t>
1225
1226 <t t-name="ExportView">
1227     <a id="exportview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Export</a>
1228 </t>
1229 <t t-name="ExportTreeView">
1230     <table class="view" style="background-color: #F3F3F3;">
1231         <tr>
1232             <td align="left">
1233                 This wizard will export all data that matches the current search criteria to a CSV file.
1234                 You can export all data or only the fields that can be reimported after modification.
1235             </td>
1236         </tr>
1237         <tr>
1238             <td>
1239                 <table>
1240                     <tr>
1241                         <td class="label"><label>Export Type:</label></td>
1242                         <td>
1243                             <select id="import_compat" name="import_compat">
1244                                 <option value="1">Import Compatible Export</option>
1245                                 <option value="0">Export all Data</option>
1246                             </select>
1247                         </td>
1248                         <td class="label"><label>Export Format</label></td>
1249                         <td>
1250                             <select id="export_format" name="export_format">
1251                                 <option value="csv">CSV</option>
1252                                 <option value="xls">Excel</option>
1253                             </select>
1254                         </td>
1255
1256                     </tr>
1257                 </table>
1258             </td>
1259         </tr>
1260
1261         <tr>
1262             <td>
1263                 <table class="oe_export_fields_selector_export">
1264                     <tr>
1265                         <th class="oe_view_title" valign="bottom">Available fields</th>
1266                         <th class="oe_view_title"></th>
1267                         <th class="oe_view_title">Fields to export
1268                         <a style="color: blue; text-decoration: none;" href="#" id="export_new_list">Save fields list</a>
1269                         <div id="savenewlist"></div>
1270                         <div id="ExistsExportList"></div>
1271                         </th>
1272                     </tr>
1273                     <tr>
1274                         <td class="oe_export_fields_selector_left">
1275                             <div id="left_field_panel">
1276                             </div>
1277                         </td>
1278                         <td>
1279                             <table class="oe_export_fields_selector_center">
1280                                 <tr>
1281                                     <td align="center">
1282                                         <button id="add_field" class="oe_export_button_export">Add</button>
1283                                     </td>
1284                                 </tr>
1285                                 <tr>
1286                                     <td align="center">
1287                                         <button id="remove_field" class="oe_export_button_export">Remove</button>
1288                                     </td>
1289                                 </tr>
1290                                 <tr>
1291                                     <td align="center">
1292                                         <button id="remove_all_field" class="oe_export_button_export">Remove All</button>
1293                                     </td>
1294                                 </tr>
1295                             </table>
1296                         </td>
1297                         <td class="oe_export_fields_selector_right">
1298                             <select name="fields_list" id="fields_list" multiple="multiple"></select>
1299                         </td>
1300                     </tr>
1301                 </table>
1302             </td>
1303         </tr>
1304     </table>
1305 </t>
1306
1307 <t t-name="ExportTreeView-Secondary">
1308     <table id="field-tree-structure" class="oe_export_fields_selector_export" cellspacing="0" cellpadding="0">
1309         <tr><th class="oe_export_tree_header"> Name </th></tr>
1310         <t t-call="ExportTreeView-Secondary.children"/>
1311     </table>
1312 </t>
1313 <t t-name="ExportTreeView-Secondary.children">
1314     <t t-foreach="fields" t-as="field" >
1315         <tr t-att-id="'treerow-' + field.id" class="oe_export_row">
1316             <td>
1317                 <table class="tree_grid" border="0">
1318                     <tr class="oe_export_row">
1319                         <t t-foreach="(field.id).split('/')" t-as="level" >
1320                             <t t-if="(field.id).split('/')[0] != level">
1321                                 <td width="18">&amp;nbsp;</td>
1322                             </t>
1323                         </t>
1324                         <td valign="top" align="left" style="cursor: pointer;" width="18">
1325                             <t t-if="(field.children).length >= 1">
1326                                 <t t-if="(field.id).split('/').length != 3">
1327                                     <img t-att-id="'parentimg-' + field.id" src="/base/static/src/img/expand.gif" width="16" height="16" border="0"/>
1328                                 </t>
1329                             </t>
1330                         </td>
1331                         <td id="tree-column" valign="middle" align="left" style="cursor: pointer;">
1332                             <a t-att-id="'export-' + field.id"  t-att-string="field.string" href="javascript: void(0);" style="text-decoration: none;">
1333                                 <t t-esc="field.string"/>
1334                             </a>
1335                         </td>
1336                     </tr>
1337                 </table>
1338             </td>
1339         </tr>
1340     </t>
1341 </t>
1342
1343 <t t-name="ExportNewList">
1344     <tr>
1345         <th><label>Save as:</label></th>
1346         <td><input size="10" type="text" id="savelist_name"/></td>
1347         <td><button class="oe_export_button_export" id="add_export_list">Ok</button></td>
1348     </tr>
1349 </t>
1350
1351 <t t-name="Exists.ExportList">
1352     <tr><th align="right"><label >Saved exports:</label></th></tr>
1353     <tr align="left">
1354         <td>
1355             <select id="saved_export_list" style="width: 100%;">
1356                 <option></option>
1357                 <t t-foreach="existing_exports" t-as="export">
1358                     <option t-att-value="export.id"><t t-esc="export.name"/></option>
1359                 </t>
1360             </select>
1361         </td>
1362         <td><button class="oe_export_button_export" id="delete_export_list">Delete</button></td>
1363     </tr>
1364 </t>
1365 <t t-name="ImportView">
1366     <a id="importview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Import</a>
1367 </t>
1368 <t t-name="ImportDataView">
1369 <form name="import_data" id="import_data" action="" method="post" enctype="multipart/form-data">
1370     <input type="hidden" name="session_id" t-att-value="session.session_id"/>
1371     <input type="hidden" name="model" t-att-value="dataset.model"/>
1372      <table cellspacing="5" border="0" width="100%">
1373         <tr>
1374             <td>
1375                 <table width="100%">
1376                     <tr>
1377                         <td width="100%" valign="middle" colspan="4">
1378                             <h2 class="separator horizontal">1. Import a .CSV file</h2>
1379                         </td>
1380                     </tr>
1381                     <tr>
1382                         <td>
1383                             Select a .CSV file to import. If you need a sample of file to import,
1384                             you should use the export tool with the "Import Compatible" option.
1385                         </td>
1386                     </tr>
1387                 </table>
1388             </td>
1389         </tr>
1390         <tr>
1391             <td>
1392                 <table align="center">
1393                     <tr>
1394                         <td><label>CSV File:</label></td>
1395                         <td>
1396                             <input type="file" id="csvfile" size="50" name="csvfile"/>
1397                         </td>
1398                     </tr>
1399                 </table>
1400             </td>
1401         </tr>
1402         <tr>
1403             <td height="10px">
1404             </td>
1405         </tr>
1406         <tr>
1407             <td width="100%">
1408                 <div id="record">
1409                     <table width="100%">
1410                         <tr>
1411                             <td width="100%" valign="middle">
1412                                 <h2 class="separator horizontal">2. Check your file format</h2>
1413                             </td>
1414                         </tr>
1415                     </table>
1416                     <div id="result"></div>
1417                     <fieldset>
1418                         <legend style="cursor:pointer;">CSV Options</legend>
1419                         <table style="display:none">
1420                             <tr>
1421                                <td><label for="csv_separator">Separator:</label></td>
1422                                 <td><input type="text" name="csvsep" id="csv_separator" value=","/></td>
1423                                 <td><label for="csv_delimiter">Delimiter:</label></td>
1424                                 <td><input type="text" name="csvdel" id="csv_delimiter" value='"'/></td>
1425                             </tr>
1426                             <tr>
1427                                 <td><label for="csv_encoding">Encoding:</label></td>
1428                                 <td>
1429                                     <select name="csvcode" id="csv_encoding">
1430                                         <option value="utf-8">UTF-8</option>
1431                                         <option value="latin1">Latin 1</option>
1432                                     </select>
1433                                 </td>
1434                                 <td><label>Lines to skip:</label></td>
1435                                 <td><input type="text" name="csvskip" id="csv_skip" value="1"/></td>
1436                             </tr>
1437                         </table>
1438                     </fieldset>
1439                 </div>
1440             </td>
1441         </tr>
1442         <tr>
1443             <td width="100%">
1444                 <div id="success"></div>
1445             </td>
1446         </tr>
1447     </table>
1448 </form>
1449 </t>
1450 <t t-name="ImportView-result">
1451     <t t-if="error">
1452         <table id="error_tbl">
1453             <tr style="white-space:pre-line;">The import failed due to:<t t-esc="error.message"/></tr>
1454             <t t-if="error.preview">
1455                 <tr>Here is a preview of the file we could not import:</tr>
1456                 <tr><pre><t t-esc="error.preview"/></pre></tr>
1457             </t>
1458         </table>
1459     </t>
1460     <t t-if="records">
1461         <table id="records_data" class="oe_import_grid" width="100%" style="margin: 5px 0;">
1462             <t t-foreach="records" t-as="record">
1463                 <t t-if="record=='header'">
1464                     <tr class="oe_import_grid-header">
1465                         <t t-foreach="records.header" t-as="header">
1466                             <td class="oe_import_grid-cell" id="header"><t t-esc="header[0]"/></td>
1467                         </t>
1468                     </tr>
1469                 </t>
1470                 <t t-if="record=='sel'">
1471                     <tr>
1472                         <t t-foreach="records.header" t-as="header">
1473                             <td>
1474                                 <select name="sel_field" id="sel_field">
1475                                     <option selected="selected" value=""></option>
1476                                     <t t-foreach="records.sel" t-as="selection">
1477                                         <option t-att="{'selected': header[0] === selection ? 'selected' : null}"
1478                                                 t-att-value="selection"><t t-esc="selection"/>
1479                                         </option>
1480                                     </t>
1481                                 </select>
1482                             </td>
1483                         </t>
1484                     </tr>
1485                 </t>
1486                 <t t-if="record=='row'">
1487                     <t t-foreach="records.row" t-as="row">
1488                         <tr class="oe_import_grid-row">
1489                             <t t-foreach="row" t-as="column">
1490                                 <td class="oe_import_grid-cell"><t t-esc="column"/></td>
1491                             </t>
1492                         </tr>
1493                     </t>
1494                 </t>
1495             </t>
1496         </table>
1497     </t>
1498     <t t-if="success">
1499         <table width="100%">
1500             <tr>
1501                 <td width="100%" valign="middle" colspan="4">
1502                     <h2 class="separator horizontal">3. File imported</h2>
1503                 </td>
1504             </tr>
1505             <tr>
1506                 <t t-esc="success.message"/>
1507             </tr>
1508         </table>
1509     </t>
1510 </t>
1511 </templates>