1 <?xml version="1.0" encoding="UTF-8"?>
4 <templates id="template" xml:space="preserve">
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>
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>
20 <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" class="main_table">
22 <td colspan="2" valign="top">
23 <div id="oe_header" class="header"></div>
24 <div id="oe_menu" class="menu"></div>
28 <td valign="top" class="login-container" colspan="2">
29 <div id="oe_login" class="login"></div>
32 <tr class="db_options_row">
33 <td valign="top" class="db_container">
34 <div id="oe_database" class="database"></div>
37 <div id="oe_db_options"></div>
41 <td colspan="2" valign="top" height="100%">
42 <table cellspacing="0" cellpadding="0" border="0" height="100%" width="100%">
44 <td valign="top" id="oe_secondary_menu" class="secondary_menu">
46 <td valign="top" class="oe-application-container">
47 <div id="oe_app" class="oe-application">
56 <div id="oe_footer" class="oe_footer">
57 <p class="oe_footer_powered">Powered by <a href="http://www.openerp.com">openerp.com</a>.</p>
67 <ul class="db_options" style="padding: 0px; display: inline;">
68 <li id="db-create">Create</li>
69 <li id="db-drop">Drop</li>
70 <li id="db-backup">Backup</li>
71 <li id="db-restore">Restore</li>
72 <li id="db-change-password">Password</li>
73 <li id="back-to-login">Back to Login</li>
76 <t t-name="Database.CreateDB">
77 <form name="create_db_form" class="oe_forms" method="POST">
80 <td class="option_string">
85 <table align="center" class="db_option_table">
87 <td><label for="super_admin_pwd">Master password:</label></td>
88 <td><input type="password" name="super_admin_pwd" class="required" value="admin"/></td>
91 <td><label for="db_name">New database name:</label></td>
92 <td><input type="text" name="db_name" class="required"/></td>
95 <td><label for="demo_data">Load Demonstration data:</label></td>
96 <td><input type="checkbox" name="demo_data"/></td>
99 <td><label for="db_lang">Default language:</label></td>
101 <select name="db_lang" t-if="lang_list">
102 <t t-foreach="lang_list" t-as="lang">
103 <option t-att-value="lang[0]" t-att-selected="lang[0] === 'en_US' ? 'selected' : undefined"><t t-esc="lang[1]"/></option>
109 <td><label for="create_admin_pwd">Admin password:</label></td>
110 <td><input type="password" name="create_admin_pwd" class="required"/></td>
113 <td><label for="create_confirm_pwd">Confirm password:</label></td>
114 <td><input type="password" name="create_confirm_pwd" class="required"
115 equalTo="input[name=create_admin_pwd]"/></td>
118 <td colspan="2" align="right"><input type="submit" value="Create"/></td>
124 <form name="drop_db_form" class="oe_forms" method="POST">
127 <td class="option_string">
132 <table align="center" class="db_option_table">
134 <td><label for="drop_db">Database:</label></td>
136 <select t-if="db_list" name="drop_db" autofocus="autofocus">
137 <t t-foreach="db_list" t-as="db">
138 <option t-att-value="db"><t t-esc="db"/></option>
144 <td><label for="drop_password">Master Password:</label></td>
145 <td><input type="password" name="drop_pwd" class="required"/></td>
148 <td colspan="2" align="right"><input type="submit" value="Drop"/></td>
153 <t t-name="BackupDB">
154 <form name="backup_db_form" class="oe_forms" method="POST" target="backup-target"
155 action="/web/database/backup">
156 <input type="hidden" name="token"/>
159 <td class="option_string">
164 <table align="center" class="db_option_table">
166 <td><label for="backup_db">Database:</label></td>
168 <select t-if="db_list" name="backup_db" autofocus="autofocus">
169 <t t-foreach="db_list" t-as="db">
170 <option t-att-value="db"><t t-esc="db"/></option>
176 <td><label for="backup_pwd">Master Password:</label></td>
177 <td><input type="password" name="backup_pwd" class="required"/></td>
180 <td colspan="2" align="right"><input type="submit" value="Backup"/></td>
185 <t t-name="RestoreDB">
186 <form name="restore_db_form" class="oe_forms" method="POST">
189 <td class="option_string">
194 <table align="center" class="db_option_table">
196 <td><label for="restore_db">File:</label></td>
197 <td><input type="file" name="db_file" class="required"
198 autofocus="autofocus"/></td>
201 <td><label for="restore_pwd">Master Password:</label></td>
202 <td><input type="password" name="restore_pwd" class="required"/></td>
205 <td><label for="new_db">New database name:</label></td>
206 <td><input type="text" name="new_db" class="required"/></td>
209 <td colspan="2" align="right"><input type="submit" value="Restore"/></td>
214 <t t-name="Change_DB_Pwd">
215 <form name="change_pwd_form" class="oe_forms" method="POST">
218 <td class="option_string">
219 CHANGE MASTER PASSWORD
223 <table align="center" class="db_option_table">
225 <td><label for="old_pwd">Master password:</label></td>
226 <td><input type="password" name="old_pwd" class="required"
227 minlength="1" autofocus="autofocus"/></td>
230 <td><label for="new_pwd">New master password:</label></td>
231 <td><input type="password" name="new_pwd" class="required"
235 <td><label for="confirm_pwd">Confirm new master password:</label></td>
236 <td><input type="password" name="confirm_pwd" class="required"
237 equalTo="input[name=new_pwd]" minlength="1"/></td>
240 <td colspan="2" align="right"><input type="submit" value="Change Password"/></td>
246 <form class="oe_forms">
249 <img src="/web/static/src/img/stock_person.png" alt="" />
251 <div class="oe_box2">
252 <table align="center" cellspacing="2px" cellpadding="0">
254 <td><label for="db">Database:</label></td>
257 <input type="text" name="db" t-att-value="selected_db || ''" autofocus="true"/>
261 <t t-foreach="db_list" t-as="db">
262 <t t-if="selected_db === db">
263 <option t-att-value="db" selected="true">
264 <t t-esc="db"/></option>
266 <t t-if="selected_db !== db">
267 <option t-att-value="db"><t t-esc="db"/></option>
275 <td><label for="login">User:</label></td>
276 <td><input type="text" name="login"
277 t-att-value="selected_login || ''" autofocus="true"/></td>
280 <td><label for="password">Password:</label></td>
281 <td><input type="password" name="password"
282 t-att-value="selected_password || ''"/></td>
287 <button type="button" id="oe-db-config">Database</button>
288 <button type="submit" name="submit">Login</button>
294 <div class="login_error_message">Bad username or password</div>
296 <div class="oe_login_right_pane">
297 <p>We think that daily job activities can be more intuitive, efficient, automated, .. and even fun.</p>
298 <h3>OpenERP's vision to be:</h3>
300 <table cellpadding="0" cellspacing="0" width="100%" style="border:none;">
304 <img src="/web/static/src/img/product.png"/>
307 <strong>Full featured</strong><br />
308 Today's enterprise challenges are multiple. We provide one module for each need.
313 <img src="/web/static/src/img/accessories-archiver.png"/>
316 <strong>Open Source</strong><br />
317 To Build a great product, we rely on the knowledge of thousands of contributors.
322 <img src="/web/static/src/img/partner.png" />
325 <strong>User Friendly</strong><br />
326 In order to be productive, people need clean and easy to use interface.
336 <a t-att-href="'/' + widget.qs" class="company_logo_link">
337 <div class="company_logo" />
341 <t t-name="Header-content">
342 <h1 class="header_title">
343 <t t-esc="user.company_id[1]"/> (<t t-esc="widget.session.db"/>)<br/>
344 <small class="username"><t t-esc="user.name"/></small>
346 <div class="header_corner">
349 <a t-att-href="'/' + widget.qs" title="Home" class="home"><img src="/web/static/src/img/header-home.png" width="16" height="16" border="0"/></a>
353 <a href="#requests" title="Requests" class="requests"><img src="/web/static/src/img/header-requests.png" width="16" height="16" border="0"/><small>1</small></a>
356 <li class="preferences">
357 <a href="#preferences" title="Preferences" class="preferences"><img src="/web/static/src/img/header-preferences.png" width="16" height="16" border="0"/></a>
360 <a href="#about" title="About" class="about"><img src="/web/static/src/img/header-about.png" width="16" height="16" border="0"/></a>
364 <a href="http://doc.openerp.com/v6.0/book?version=$version" title="Help" target="_blank" class="help"><img src="/web/static/src/img/header-help.png" width="16" height="16" border="0"/></a>
369 <a href="#logout" class="logout">LOGOUT</a>
373 <div class="oe-shortcuts"> </div>
375 <ul t-name="Shortcuts">
376 <li t-foreach="shortcuts" t-as="shortcut"
377 t-att-data-id="shortcut.res_id"
378 t-att-data-shortcut-id="shortcut.id"
379 ><t t-esc="shortcut.name"/></li>
382 <table align="center">
384 <td t-foreach="widget.data.data.children" t-as="menu">
385 <a href="#" t-att-data-menu="menu.id">
386 <t t-esc="menu.name"/>
392 <t t-name="Menu.secondary">
393 <div t-attf-class="oe_toggle_secondary_menu">
394 <span class="oe_menu_fold" title="Fold menu">&laquo;</span>
395 <span class="oe_menu_unfold" title="Unfold menu">&raquo;</span>
397 <div t-foreach="widget.data.data.children" t-as="menu" style="display: none" class="oe_secondary_menu" t-att-data-menu-parent="menu.id">
398 <t t-foreach="menu.children" t-as="menu">
399 <t t-set="classname">oe_secondary_menu_item</t>
400 <t t-set="level" t-value="0"/>
401 <t t-call="Menu.secondary.children"/>
405 <t t-name="Menu.secondary.children">
406 <t t-set="level" t-value="level + 1"/>
407 <a href="#" t-att-class="classname + (menu.children.length ? ' submenu' : ' leaf') + ' oe_menu_level_#{level}'" t-att-data-menu="menu.children.length ? undefined : menu.id">
408 <span t-attf-style="padding-left: #{(level - 2) * 20}px"> <t t-esc="menu.name"/></span>
410 <div t-attf-class="oe_secondary_submenu oe_secondary_submenu_level_#{level}" t-if="menu.children.length" t-att-style="menu_first ? undefined : 'display: none'">
411 <t t-foreach="menu.children" t-as="menu">
412 <t t-set="classname">oe_secondary_submenu_item</t>
413 <t t-call="Menu.secondary.children"/>
417 <t t-name="ViewManager">
418 <table class="view-manager-main-table">
420 <td class="view-manager-main-content">
421 <div class="oe-view-manager-header">
422 <div class="oe_vm_switch">
423 <t t-if="views.length != 1" t-foreach="views" t-as="view">
424 <button type="button" t-att-data-view-type="view.view_type">
425 <t t-esc="view.view_type"/>
430 <div t-attf-id="#{prefix}_search" t-opentag="true"/>
431 <t t-foreach="views" t-as="view">
432 <div t-attf-id="#{prefix}_view_#{view.view_type}"/>
435 <td class="view-manager-main-sidebar" height="100%">
436 <t t-foreach="views" t-as="view">
437 <div t-attf-id="#{prefix}_sidebar_#{view.view_type}" class="sidebar-main-div closed-sidebar" style="display: none"/>
444 <t t-extend="ViewManager" t-name="ViewManagerAction">
445 <t t-jquery=".oe-view-manager-header" t-operation="prepend">
446 <blockquote t-if="self.action.help and !self.flags.low_profile
447 and !(self.action.id in self.session.hidden_menutips)">
448 <p><t t-esc="self.action.help"/></p>
450 <button type="button" name="hide">Hide this tip</button>
451 <button type="button" name="disable">Disable all tips</button>
454 <a class="oe-shortcut-toggle" title="Add / Remove Shortcut..."
455 href="javascript: void(0)"> </a>
456 <h2 class="oe_view_title">
457 <t t-esc="self.action.name"/>
458 <button t-if="self.session.debug" class="oe_get_xml_view">
463 <t t-jquery=".oe-view-manager-header" t-operation="after">
464 <ul class="oe-view-manager-logs"></ul>
469 <a class="toggle-sidebar"></a>
470 <div class="sidebar-content">
471 <div class="sidebar-actions">
475 <t t-name="Sidebar.section">
476 <h2><t t-esc="name"/></h2>
477 <div t-att-id="section_id" t-att-class="classname">
479 <li t-foreach="items" t-as="item" t-att-class="item.classname">
480 <a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
481 <t t-esc="item.label"/>
487 <t t-name="TranslateDialog">
488 <ul class="oe_translate_tabs">
489 <li><a t-attf-href="##{widget.element_id}_fields">Fields</a></li>
490 <li><a t-attf-href="##{widget.element_id}_view">View labels</a></li>
491 <li><a t-attf-href="##{widget.element_id}_sidebar">Sidebar Relates</a></li>
493 <div t-attf-id="#{widget.element_id}_fields">
494 <table t-if="widget.view.translatable_fields" class="oe_frame oe_forms oe_translation_form" border="0" cellpadding="0" cellspacing="0" width="100%">
496 <td class="oe_form_separator" width="1%" nowrap="nowrap">
497 <div class="separator horizontal">Field</div>
499 <th t-foreach="widget.languages" align="left">
500 <div class="separator horizontal"><t t-esc="name"/></div>
503 <tr t-foreach="widget.view.translatable_fields" t-as="field">
504 <td class="oe_form_frame_cell" width="1%" nowrap="nowrap">
505 <label class="oe_label"><t t-esc="field.string"/>:</label>
507 <td t-foreach="widget.languages" t-as="lg" class="oe_form_frame_cell">
508 <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%"/>
509 <textarea t-if="field.type == 'text'" t-attf-name="#{lg.code}-#{field.name}" data-value="" class="oe_trad_field" style="width: 100%"></textarea>
514 <div t-attf-id="#{widget.element_id}_view">
517 <div t-attf-id="#{widget.element_id}_sidebar">
521 <t t-name="TreeView">
522 <select t-if="toolbar" style="width: 30%">
524 <table class="oe-treeview-table">
527 <th t-foreach="fields_view" t-as="field"
528 t-if="!field.attrs.modifiers.tree_invisible"
529 class="treeview-header">
530 <t t-esc="fields[field.attrs.name].string" />
538 <tr t-name="TreeView.rows"
539 t-foreach="records" t-as="record"
540 t-att-id="'treerow_' + record.id"
541 t-att-data-id="record.id" t-att-data-level="level + 1">
542 <t t-set="children" t-value="record[children_field]"/>
543 <t t-set="has_children" t-value="children and children.length"/>
545 <td t-foreach="fields_view" t-as="field"
546 t-if="!field.attrs.modifiers.tree_invisible"
547 t-att-data-id="record.id"
548 t-att-style="!field_index ? 'background-position: ' + 19*level + 'px; padding-left: ' + 19*level + 'px' : undefined"
549 t-att-class="!field_index and has_children ? 'treeview-tr' : 'treeview-td'">
550 <span t-if="!field.attrs.modifiers.invisible">
551 <t t-esc="render(record[field.attrs.name], fields[field.attrs.name])" />
555 <table t-name="ListView" class="oe-listview-content">
556 <t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
557 <thead class="ui-widget-header">
558 <tr t-if="options.action_buttons !== false or options.pager !== false">
559 <th t-att-colspan="columns_count">
562 <td t-if="options.action_buttons !== false" class="oe-actions">
563 <button type="button" class="oe-list-add"
564 t-if="options.addable">
565 <t t-esc="options.addable"/>
567 <button type="button" class="oe-list-delete"
568 t-if="options.selectable and options.deletable">
572 <th t-if="options.pager !== false" class="oe-list-pager">
573 <button type="button" disabled="disabled"
574 data-pager-action="first">First</button>
575 <button type="button" disabled="disabled"
576 data-pager-action="previous"
579 <span class="oe-pager-state">
582 <button type="button" disabled="disabled"
583 data-pager-action="next">></button>
584 <button type="button" disabled="disabled"
585 data-pager-action="last">Last</button>
591 <tr t-if="options.header" class="oe-listview-header-columns">
592 <t t-foreach="columns" t-as="column">
593 <th t-if="column.meta">
594 <t t-esc="column.string"/>
597 <th t-if="options.selectable" width="1"/>
598 <t t-foreach="columns" t-as="column">
599 <th t-if="!column.meta and column.invisible !== '1'" t-att-data-id="column.id"
600 t-att-class="((options.sortable and column.tag !== 'button') ? 'oe-sortable' : null)">
601 <t t-if="column.tag !== 'button'"
602 ><t t-esc="column.string"/></t>
605 <th t-if="options.deletable" width="1"/>
608 <tfoot class="ui-widget-header">
610 <td t-if="options.selectable"/>
611 <td t-foreach="aggregate_columns" t-as="column" class="oe-list-footer oe-number"
612 t-att-data-field="column.id" t-att-title="column.label">
614 <td t-if="options.deletable"/>
618 <t t-name="ListView.rows" t-foreach="records.length" t-as="index">
619 <t t-call="ListView.row">
620 <t t-set="record" t-value="records.at(index)"/>
621 <t t-set="row_parity" t-value="index_parity"/>
624 <tr t-name="ListView.row" t-att-class="row_parity"
625 t-att-data-id="record.get('id')">
626 <t t-foreach="columns" t-as="column">
627 <td t-if="column.meta">
631 <th t-if="options.selectable" class="oe-record-selector" width="1">
632 <input type="checkbox"/>
634 <t t-foreach="columns" t-as="column">
635 <t t-set="align" t-value="column.type === 'integer' or column.type == 'float'"/>
636 <td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
637 t-att-class="'oe-field-cell' + (align ? ' oe-number' : '')"
638 t-att-data-field="column.id">
639 <t t-raw="render_cell(record.toForm().data, column)"/>
642 <td t-if="options.deletable" class='oe-record-delete' width="1">
643 <button type="button" name="delete">♻</button>
646 <t t-name="ListView.row.form">
647 <t t-raw="frame.render()"/>
649 <t t-name="FormView">
650 <div class="oe_form_header" t-att-id="view.element_id + '_header'">
651 <div class="oe_form_buttons" t-if="view.options.action_buttons !== false">
652 <!--<button type="button" class="oe_form_button_save">
653 <span class="oe_form_on_update">Save</span>
654 <span class="oe_form_on_create">Create</span>
656 <button type="button" class="oe_form_button_save_edit">
657 <span class="oe_form_on_update">Save & Edit</span>
658 <span class="oe_form_on_create">Create & Edit</span>
660 <!--<button type="button" class="oe_form_button_cancel">Cancel</button>-->
661 <button type="button" class="oe_form_button_new">New</button>
662 <button type="button" class="oe_form_button_duplicate oe_form_on_update">Duplicate</button>
664 <div class="oe_form_pager" t-if="view.options.pager !== false">
665 <button type="button" data-pager-action="first">First</button>
666 <button type="button" data-pager-action="previous"><<</button>
668 <span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span>
670 <button type="button" data-pager-action="next">>></button>
671 <button type="button" data-pager-action="last">Last</button>
674 <t t-raw="frame.render()"/>
676 <t t-name="FormView.sidebar.attachments">
677 <div class="oe-sidebar-attachments-toolbar">
678 <div class="oe-binary-file-set" style="float: right">
679 <form class="oe-binary-form" t-attf-target="#{element_id}_iframe"
680 method="post" enctype="multipart/form-data" action="/web/binary/upload_attachment">
681 <input type="hidden" name="session_id" t-att-value="session.session_id"/>
682 <input type="hidden" name="callback" t-attf-value="#{element_id}_iframe"/>
683 <input type="hidden" name="model" t-att-value="view.dataset.model"/>
684 <input type="hidden" name="id" t-att-value="view.datarecord.id"/>
685 <button class="button" type="button">
686 <img src="/web/static/src/img/throbber.gif" width="16" height="16" style="display: none"/>
689 <input type="file" class="oe-binary-file" name="ufile" title="Add attachment"
690 t-att-onclick="view.datarecord.id ? null : 'alert(\'No record selected ! You can only attach to existing record.\'); return false;'"/>
692 <iframe t-attf-id="#{element_id}_iframe" t-attf-name="#{element_id}_iframe" style="display: none"> </iframe>
695 <br style="clear: both"/>
696 <ul class="oe-sidebar-attachments-items">
697 <li t-foreach="attachments" t-as="attachment">
698 <t t-if="attachment.type == 'binary'" t-set="attachment.url" t-value="'/web/binary/saveas?session_id='
699 + session.session_id + '&model=ir.attachment&id=' + attachment.id
700 + '&field=datas&fieldname=name&t=' + (new Date().getTime())"/>
701 <a class="oe-sidebar-attachments-link" t-att-href="attachment.url" target="_blank">
702 <t t-esc="attachment.name"/>
704 <a href="#" class="oe-sidebar-attachment-delete" t-att-data-id="attachment.id" t-attf-title="Delete the attachment #{attachment.name}">
705 <img src="/web/static/src/img/attachments-close.png" width="15" height="15" border="0"/>
712 <t t-raw="console.log('Unhandled widget', widget)"/>
714 <t t-name="WidgetFrame">
715 <table border="0" width="100%" cellpadding="0" cellspacing="0" class="oe_frame oe_forms">
716 <tr t-foreach="widget.table" t-as="row">
717 <t t-foreach="row" t-as="td">
718 <td t-att-colspan="td.colspan gt 1 ? td.colspan : undefined"
719 t-att-width="td.width"
720 t-att-nowrap="td.nowrap or td.is_field_m2o? 'true' : undefined"
721 t-att-valign="td.table ? 'top' : undefined"
722 t-att-id="td.element_id"
723 t-attf-class="oe_form_frame_cell #{td.classname}"
725 <t t-raw="td.render()"/>
731 <t t-name="WidgetNotebook">
733 <li t-foreach="widget.pages" t-as="page" t-att-id="page.element_tab_id">
734 <a t-att-href="'#' + page.element_id">
735 <t t-esc="page.string"/>
739 <t t-foreach="widget.pages" t-as="page">
740 <t t-raw="page.render()"/>
743 <t t-name="WidgetNotebookPage">
744 <div t-att-id="widget.element_id">
745 <t t-call="WidgetFrame"/>
748 <t t-name="WidgetSeparator">
749 <div t-if="widget.orientation !== 'vertical'" t-att-class="'separator ' + widget.orientation">
750 <t t-esc="widget.string"/>
753 <t t-name="WidgetLabel">
754 <label t-att-for="widget.element_id + '_field'"
755 t-att-class="'oe_label' + (widget.help ? '_help' : '')"
756 t-att-title="widget.help">
757 <t t-esc="widget.string"/>
758 <span t-if="widget.help">?</span>
759 <t t-if="widget.string and widget.node.tag != 'label'">:</t>
762 <t t-name="WidgetParagraph">
763 <p class="oe_form_paragraph"><t t-esc="widget.string"/></p>
765 <t t-name="FieldChar">
766 <input type="text" size="1"
767 t-att-name="widget.name"
768 t-att-id="widget.element_id + '_field'"
769 t-att-class="'field_' + widget.type"
770 t-attf-style="width: #{widget.field.translate ? '99' : '100'}%"
772 <img class="oe_field_translate" t-if="widget.field.translate" src="/web/static/src/img/icons/terp-translate.png" width="16" height="16" border="0"/>
774 <t t-name="FieldEmail">
775 <table cellpadding="0" cellspacing="0" border="0" width="100%">
778 <t t-call="FieldChar"/>
781 <button type="button" class="button" title="Send an e-mail with your default e-mail client">
782 <img src="/web/static/src/img/icons/terp-mail-message-new.png"/>
788 <t t-name="FieldUrl">
789 <table cellpadding="0" cellspacing="0" border="0" width="100%">
792 <t t-call="FieldChar"/>
795 <button type="button" class="button" title="Open this resource">
796 <img src="/web/static/src/img/icons/gtk-ok.png"/>
802 <t t-name="FieldText">
804 t-att-name="widget.name"
805 t-att-id="widget.element_id + '_field'"
806 t-att-class="'field_' + widget.type"
807 t-attf-style="width: #{widget.field.translate ? '99' : '100'}%"
809 <img class="oe_field_translate" t-if="widget.field.translate" src="/web/static/src/img/icons/terp-translate.png" width="16" height="16" border="0"/>
811 <t t-name="FieldDate">
812 <t t-call="FieldChar"/>
813 <img class="oe_input_icon oe_datepicker_trigger" src="/web/static/src/img/ui/field_calendar.png"
814 title="Select date" width="16" height="16" border="0"/>
815 <div class="oe_datepicker ui-widget-content ui-corner-all" style="display: none; position: absolute; z-index: 1;">
816 <div class="oe_datepicker_container"/>
817 <button type="button" class="oe_datepicker_close ui-state-default ui-priority-primary ui-corner-all" style="float: right;">Done</button>
820 <t t-name="FieldSelection">
822 t-att-name="widget.name"
823 t-att-id="widget.element_id + '_field'"
824 t-att-class="'field_' + widget.type"
826 <t t-foreach="widget.values" t-as="option">
827 <option><t t-esc="option[1]"/></option>
831 <t t-name="FieldMany2One">
832 <div t-att-id="widget.element_id" class="oe-m2o">
833 <input t-att-id="widget.element_id + '_input'" type="text" size="1" style="width: 100%;"/>
834 <span class="oe-m2o-drop-down-button" t-att-id="widget.element_id + '_drop_down'">
835 <img src="/web/static/src/img/down-arrow.png" /></span>
836 <span class="oe-m2o-cm-button" t-att-id="widget.name + '_open'">
837 <img src="/web/static/src/img/icons/gtk-index.png"/></span>
838 <div t-att-id="widget.cm_id" class="contextMenu" style="display:none">
842 <t t-name="FieldMany2One.context_menu">
844 <li t-att-id="widget.cm_id + '_open'" style="color:grey">Open...</li>
845 <li t-att-id="widget.cm_id + '_create'">Create...</li>
846 <li t-att-id="widget.cm_id + '_search'" class="oe_m2o_menu_item_mandatory">Search...</li>
847 <t t-set="i" t-value="0"/>
848 <t t-foreach="widget.related_entries" t-as="entry">
849 <li t-att-id="widget.cm_id + '_related_' + i" style="color:grey" class="oe_m2o_menu_item_mandatory">
850 ... <t t-esc="(entry[2] || {})['name'] || ''"/>
852 <t t-set="i" t-value="i+1"/>
856 <t t-name="FieldOne2Many">
857 <div t-att-id="widget.element_id">
860 <t t-name="FieldMany2Many">
861 <div t-att-id="widget.list_id"></div>
863 <t t-name="FieldReference">
864 <table border="0" width="100%" cellpadding="0" cellspacing="0" class="oe_frame oe_forms">
866 <td t-att-id="widget.selection.element_id" class="oe_form_frame_cell oe_form_selection">
867 <t t-raw="widget.selection.render()"/>
869 <td t-att-id="widget.m2o.element_id" class="oe_form_frame_cell oe_form_many2one" nowrap="true">
870 <t t-raw="widget.m2o.render()"/>
875 <t t-name="FieldBoolean">
876 <input type="checkbox"
877 t-att-name="widget.name"
878 t-att-id="widget.element_id + '_field'"
879 t-att-class="'field_' + widget.type"/>
881 <t t-name="FieldProgressBar">
882 <div t-opentag="true" class="oe-progressbar">
886 <t t-name="FieldBinaryImage">
887 <table cellpadding="0" cellspacing="0" border="0">
890 <img src="/web/static/src/img/placeholder.png" class="oe-binary-image"
891 t-att-border="widget.readonly ? 0 : 1"
892 t-att-id="widget.element_id + '_field'"
893 t-att-name="widget.name"
894 t-att-class="'field_' + widget.type"
895 t-att-width="widget.node.attrs.img_width || widget.node.attrs.width"
896 t-att-height="widget.node.attrs.img_height || widget.node.attrs.height"
901 <td align="center" valign="bottom" height="25">
902 <div class="oe-binary">
903 <table cellspacing="0" cellpadding="0" border="0">
906 <div class="oe-binary-file-set" style="width: 40px; height:22px;">
907 <form class="oe-binary-form" t-att-target="widget.iframe"
908 method="post" enctype="multipart/form-data" action="/web/binary/upload">
909 <input type="hidden" name="session_id" value=""/>
910 <input type="hidden" name="callback" t-att-value="widget.iframe"/>
911 <button class="button" type="button" title="Set Image">
912 <img src="/web/static/src/img/icons/STOCK_DIRECTORY.png"/>
914 <input type="file" class="oe-binary-file" name="ufile"/>
919 <button class="button oe-binary-file-clear" type="button" title="Clear">
920 <img src="/web/static/src/img/icons/STOCK_MISSING_IMAGE.png"/>
926 <div class="oe-binary-progress" style="display: none">
927 <img src="/web/static/src/img/throbber.gif" width="16" height="16"/>
930 <iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"> </iframe>
935 <t t-name="FieldBinaryFile">
936 <table cellpadding="0" cellspacing="0" border="0" width="100%">
939 <input type="text" size="1"
940 t-att-name="widget.name"
941 t-att-id="widget.element_id + '_field'"
942 t-att-class="'field_' + widget.type" style="width: 100%"
945 <td class="oe-binary" nowrap="true">
946 <table cellspacing="0" cellpadding="0" border="0">
949 <div class="oe-binary-file-set" style="width: 80px; height:22px;">
950 <form class="oe-binary-form" t-att-target="widget.iframe"
951 method="post" enctype="multipart/form-data" action="/web/binary/upload">
952 <input type="hidden" name="session_id" value=""/>
953 <input type="hidden" name="callback" t-att-value="widget.iframe"/>
954 <button class="button" type="button" title="Set Image">
955 <img src="/web/static/src/img/icons/STOCK_DIRECTORY.png"/>
958 <input type="file" class="oe-binary-file" name="ufile"/>
963 <button class="button oe-binary-file-save" type="button" title="Save As">
964 <img src="/web/static/src/img/icons/gtk-save.png"/>
969 <button class="button oe-binary-file-clear" type="button" title="Clear">
970 <img src="/web/static/src/img/icons/STOCK_MISSING_IMAGE.png"/>
977 <td class="oe-binary-progress" style="display: none" nowrap="true">
978 <img src="/web/static/src/img/throbber.gif" width="16" height="16"/>
980 <iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"> </iframe>
985 <t t-name="WidgetButton">
986 <button type="button"
987 t-att-id="widget.element_id + '_button'"
988 t-att-title="widget.help"
989 style="width: 100%" class="button">
990 <img t-if="widget.node.attrs.icon" t-att-src="'/web/static/src/img/icons/' + widget.node.attrs.icon + '.png'" width="16" height="16"/>
991 <span t-if="widget.string"><t t-esc="widget.string"/></span>
994 <t t-name="SearchView">
995 <form class="oe_forms">
996 <t t-call="SearchView.render_lines"/>
997 <div class="oe_search-view-buttons" style="text-align: right;">
998 <input type="submit" value="Search"/>
999 <input type="reset" value="Clear"/>
1000 <button class="oe_search-view-custom-filter-btn"><span>Advanced Filter</span></button>
1001 <select class="oe_search-view-filters-management">
1006 <t t-name="SearchView.managed-filters">
1007 <option value="_filters">-- Filters --</option>
1008 <t t-set="i" t-value="0"/>
1009 <t t-foreach="filters" t-as="filter">
1010 <option t-att-value="'get:' + i"><t t-esc="filter.name"/></option>
1011 <t t-set="i" t-value="i+1"/>
1013 <option value="_actions">-- Actions --</option>
1014 <option value="save_filter">Save Filter</option>
1015 <option value="manage_filters">Manage Filters</option>
1017 <t t-name="SearchView.managed-filters.add">
1020 <input type="text"/>
1021 <p>(Any existing filter with the same name will be replaced)</p>
1024 <t t-name="SearchView.render_lines">
1025 <table class="oe-searchview-render-line" border="0" cellspacing="0" cellpadding="0"
1026 t-foreach="lines" t-as="line">
1028 <td t-foreach="line" t-as="widget">
1029 <t t-raw="widget.render(defaults)"/>
1034 <button t-name="SearchView.filter" type="button"
1035 t-att-id="element_id"
1036 t-att-title="attrs.help"
1037 t-att-class="classes.join(' ')"
1038 t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined">
1039 <img t-if="attrs.icon" t-att-src="'/web/static/src/img/icons/' + attrs.icon + '.png'" width="16" height="16"/>
1040 <br t-if="attrs.icon and attrs.string"/>
1041 <t t-esc="attrs.string"/>
1043 <span t-name="SearchView.filters" class="filter_label_group"
1044 ><t t-foreach="filters" t-as="filter"
1045 ><t t-raw="filter.render(defaults)"/></t
1047 <t t-name="SearchView.field">
1048 <label t-att-class="'oe_label' + (attrs.help ? '_help' : '')"
1049 t-att-title="attrs.help"
1050 t-att-for="element_id">
1051 <t t-esc="attrs.string || attrs.name"/>
1052 <span t-if="attrs.help">?</span>
1054 <div style="white-space: nowrap;">
1055 <input type="text" size="15" t-att-name="attrs.name"
1056 t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"
1057 t-att-id="element_id"
1058 t-att-value="defaults[attrs.name] || ''"/>
1059 <t t-if="filters.length" t-raw="filters.render(defaults)"/>
1062 <t t-name="SearchView.field.selection">
1063 <label t-att-title="attrs.help"
1064 t-att-class="'oe_label' + (attrs.help ? '_help' : '')"
1065 t-att-for="element_id">
1066 <t t-esc="attrs.string || attrs.name"/>
1067 <span t-if="attrs.help">?</span>
1069 <div style="white-space: nowrap;">
1070 <select t-att-name="attrs.name" t-att-id="element_id"
1071 t-att-autofocus="attrs.default_focus === '1' || undefined">
1073 <t t-foreach="attrs.selection" t-as="option">
1074 <t t-set="selected" t-value="defaults[attrs.name] === option[0]"/>
1075 <option t-if="selected"
1076 t-att-value="option[0]" selected="selected">
1077 <t t-esc="option[1]"/>
1079 <option t-if="!selected" t-att-value="option[0]">
1080 <t t-esc="option[1]"/>
1084 <t t-if="filters.length" t-raw="filters.render(defaults)"/>
1087 <t t-name="SearchView.util.expand">
1088 <div t-att-class="'searchview_group ' + (expand == '0' ? 'folded' : 'expanded')"
1089 t-att-id="element_id">
1090 <a t-if="label" class="searchview_group_string" href="#">
1093 <div class="searchview_group_content">
1094 <t t-raw="content"/>
1098 <t t-name="SearchView.group">
1099 <t t-call="SearchView.util.expand">
1100 <t t-set="expand" t-value="attrs.expand"/>
1101 <t t-set="label" t-value="attrs.string"/>
1103 <t t-call="SearchView.render_lines"/>
1107 <t t-name="SearchView.extended_search">
1108 <t t-call="SearchView.util.expand">
1109 <t t-set="expand" t-value="false"/>
1110 <t t-set="label" t-value="'Advanced Filters'"/>
1112 <div class="searchview_extended_groups_list">
1117 <t t-name="SearchView.extended_search.group">
1118 <div t-att-id="element_id" class="searchview_extended_group">
1119 <select class="searchview_extended_group_choice">
1120 <option value="any">Any of the following conditions must match</option>
1121 <option value="all">All the following conditions must match</option>
1122 <option value="none">None of the following conditions must match</option>
1124 <a class="searchview_extended_delete_group"
1125 href="javascript:void(0)"><span></span></a>
1126 <div class="searchview_extended_propositions_list">
1128 <a class="searchview_extended_add_proposition" href="javascript:void(0)">
1129 <span>Add condition</span></a>
1130 <div class="oe_adv_filters_and"><span>and</span></div>
1133 <t t-name="SearchView.extended_search.proposition">
1134 <div t-att-id="element_id">
1135 <select class="searchview_extended_prop_field">
1136 <t t-foreach="attrs.fields" t-as="field">
1137 <option t-if="typeof field.store === 'undefined' || field.store || field.fnct_search"
1138 t-att="{'selected': field === attrs.selected ? 'selected' : null}"
1139 t-att-value="field.name">
1140 <t t-esc="field.string"/>
1144 <select class="searchview_extended_prop_op"/>
1145 <span class="searchview_extended_prop_value"/>
1146 <a class="searchview_extended_delete_prop"
1147 href="javascript:void(0)"><span> </span></a>
1150 <t t-name="SearchView.extended_search.proposition.char">
1151 <input t-att-id="element_id" class="field_char"/>
1153 <t t-name="SearchView.extended_search.proposition.datetime">
1154 <input t-att-id="element_id" class="field_datetime"/>
1156 <t t-name="SearchView.extended_search.proposition.date">
1157 <input t-att-id="element_id" class="field_date"/>
1159 <t t-name="SearchView.extended_search.proposition.integer">
1160 <input type="number" t-att-id="element_id" class="field_integer" step="1"/>
1162 <t t-name="SearchView.extended_search.proposition.float">
1163 <input type="number" t-att-id="element_id" class="field_float" step="0.01"/>
1165 <t t-name="SearchView.extended_search.proposition.boolean">
1167 <t t-name="SearchView.extended_search.proposition.selection">
1168 <select t-att-id="element_id">
1169 <t t-foreach="field.selection" t-as="element">
1170 <option t-att-value="element[0]"><t t-esc="element[1]"/></option>
1174 <t t-name="DialogWarning">
1175 <table cellspacing="0" cellpadding="0" border="0" class="oe-dialog-warning">
1177 <td><img src="/web/static/src/img/warning.png" class="oe-dialog-icon"/></td>
1181 var message = d.message ? d.message : d.error.data.fault_code;
1182 d.html_error = context.engine.tools.html_escape(message)
1183 .replace(/\n/g, '<br/>');
1185 <t t-raw="html_error"/>
1191 <t t-name="DialogTraceback">
1192 <pre><t t-esc="error.message"/></pre>
1194 <pre><t t-esc="error.data.debug"/></pre>
1196 <t t-name="SelectCreatePopup">
1197 <div t-att-id="element_id">
1198 <table style="width:100%">
1199 <tr style="width:100%">
1200 <td style="width:100%">
1201 <div t-att-id="element_id + '_search'" style="width:100%"></div>
1204 <tr style="width:100%">
1205 <td style="width:100%">
1206 <div t-att-id="element_id + '_view_list'" style="width:100%"></div>
1210 <div t-att-id="element_id + '_view_form'" style="width:100%"></div>
1213 <t t-name="SelectCreatePopup.search.buttons">
1214 <button type="button" class="oe_selectcreatepopup-search-select" disabled="disabled">Select</button>
1215 <button type="button" class="oe_selectcreatepopup-search-close">Cancel</button>
1217 <t t-name="SelectCreatePopup.form.buttons">
1218 <t t-if="widget.options.disable_multiple_selection">
1219 <button type="button" class="oe_selectcreatepopup-form-save">Save</button>
1221 <t t-if="! widget.options.disable_multiple_selection">
1222 <button type="button" class="oe_selectcreatepopup-form-save-new">Save & New</button>
1223 <button type="button" class="oe_selectcreatepopup-form-save">Save & Close</button>
1225 <button type="button" class="oe_selectcreatepopup-form-close">Cancel</button>
1227 <t t-name="FormOpenPopup">
1228 <div t-att-id="element_id">
1229 <div t-att-id="element_id + '_view_form'" style="width:100%"></div>
1232 <t t-name="FormOpenPopup.form.buttons">
1233 <button type="button" class="oe_formopenpopup-form-save">Save</button>
1234 <button type="button" class="oe_formopenpopup-form-close">Cancel</button>
1236 <t t-name="ListView.row.frame" t-extend="WidgetFrame">
1238 $(document.createElement('t'))
1239 .append(this.contents())
1241 't-foreach': this.attr('t-foreach'),
1242 't-as': this.attr('t-as')
1245 .after($(document.createElement('td')).append(
1246 $(document.createElement('button')).attr({
1247 'class': 'oe-edit-row-save', 'type': 'button'}).text('Save')))
1248 .before($(document.createElement('td')).append(
1249 $(document.createElement('button')).attr({
1250 'class': 'oe-edit-row-cancel', 'type': 'button'}).text('Cancel')))
1255 <t t-name="ExportView">
1256 <a id="exportview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Export</a>
1258 <table t-name="ExportTreeView" class="oe-export"
1259 style="background-color: #F3F3F3;">
1262 This wizard will export all data that matches the current search criteria to a CSV file.
1263 You can export all data or only the fields that can be reimported after modification.
1268 <label for="import_compat">Export Type:</label>
1269 <select id="import_compat" name="import_compat">
1270 <option value="yes">Import Compatible Export</option>
1271 <option value="">Export all Data</option>
1274 <label for="export_format">Export Formats</label>
1275 <select id="export_format" name="export_format"></select>
1280 <th>Available fields</th>
1284 <a style="color: blue; text-decoration: none;" href="#" id="export_new_list">Save fields list</a>
1285 <div id="savenewlist"></div>
1286 <div id="ExistsExportList"></div>
1289 <tr style="height: 400px;">
1290 <td class="oe_export_fields_selector_left">
1291 <div id="left_field_panel">
1294 <td class="oe_export_fields_selector_center">
1295 <button id="add_field">Add</button>
1296 <button id="remove_field">Remove</button>
1297 <button id="remove_all_field">Remove All</button>
1299 <td class="oe_export_fields_selector_right">
1300 <select name="fields_list" id="fields_list"
1301 multiple="multiple"></select>
1306 <table t-name="ExportTreeView-Secondary"
1307 id="field-tree-structure" class="oe_export_fields_selector_export"
1308 cellspacing="0" cellpadding="0">
1309 <tr><th class="oe_export_tree_header"> Name </th></tr>
1310 <t t-call="ExportTreeView-Secondary.children"/>
1312 <tr t-name="ExportTreeView-Secondary.children"
1313 t-foreach="fields" t-as="field"
1314 t-att-id="'treerow-' + field.id" class="oe_export_row">
1316 <table class="tree_grid" border="0">
1317 <tr class="oe_export_row">
1318 <t t-foreach="(field.id).split('/')" t-as="level" >
1319 <t t-if="(field.id).split('/')[0] != level">
1320 <td width="18">&nbsp;</td>
1323 <td valign="top" align="left" style="cursor: pointer;" width="18">
1324 <t t-if="field.children">
1325 <t t-if="(field.id).split('/').length != 3">
1326 <img t-att-id="'parentimg-' + field.id" src="/web/static/src/img/expand.gif" width="16" height="16" border="0"/>
1330 <td id="tree-column" valign="middle" align="left" style="cursor: pointer;">
1331 <a t-att-id="'export-' + field.id" t-att-string="field.string" href="javascript: void(0);" style="text-decoration: none;">
1332 <t t-esc="field.string"/>
1340 <t t-name="ExportNewList">
1342 <th><label>Save as:</label></th>
1343 <td><input size="10" type="text" id="savelist_name"/></td>
1344 <td><button class="oe_export_button_export" id="add_export_list">Ok</button></td>
1348 <t t-name="Exists.ExportList">
1349 <label for="saved_export_list">Saved exports:</label>
1351 <select id="saved_export_list">
1353 <t t-foreach="existing_exports" t-as="export">
1354 <option t-att-value="export.id"><t t-esc="export.name"/></option>
1357 <button class="oe_export_button_export" id="delete_export_list" type="button">Delete</button>
1359 <t t-name="Change_Pwd">
1360 <form name="change_password_form" class="oe_forms" method="POST">
1361 <table align="center">
1363 <td><label for="old_pwd">Old Password:</label></td>
1364 <td><input type="password" name="old_pwd"
1365 minlength="1" autofocus="autofocus"/></td>
1368 <td><label for="new_password">New Password:</label></td>
1369 <td><input type="password" name="new_password"
1370 minlength="1" autofocus="autofocus"/></td>
1373 <td><label for="confirm_pwd">Confirm Password:</label></td>
1374 <td><input type="password" name="confirm_pwd"
1375 minlength="1"/></td>
1378 <td colspan="2" align="right"><input type="submit" value="Change Password"/></td>
1383 <t t-name="About-Page">
1385 <h1>OpenERP Web</h1>
1386 <h3 style="padding:0 5px 5px">Version <t t-esc="version_info.version"/></h3>
1388 Copyright © 2011-TODAY OpenERP SA. All Rights Reserved.<br />
1389 OpenERP is a trademark of the <a target="_blank" href="http://openerp.com/" style="text-decoration: underline;">OpenERP SA Company</a>.
1392 Licenced under the terms of <a target="_blank" href="http://www.gnu.org/licenses/agpl.html" style="text-decoration: underline;">GNU Affero General Public License</a>
1395 <h1>About OpenERP</h1>
1397 <a target="_blank" href="http://openerp.com/" style="text-decoration: underline;">OpenERP</a> is a free enterprise-scale software system that is designed to boost
1398 productivity and profit through data integration. It connects, improves and
1399 manages business processes in areas such as sales, finance, supply chain,
1400 project management, production, services, CRM, etc...
1403 The system is platform-independent, and can be installed on Windows, Mac OS X,
1404 and various Linux and other Unix-based distributions. Its architecture enables
1405 new functionality to be rapidly created, modifications to be made to a
1406 production system and migration to a new version to be straightforward.
1409 Depending on your needs, OpenERP is available through a web or application client.
1413 <t t-name="FieldStatus.content">
1414 <ul class="oe-arrow-list">
1415 <t t-set="size" t-value="widget.to_show.length"/>
1416 <t t-foreach="_.range(size)" t-as="i">
1417 <li t-att-class="widget.to_show[i][0] === widget.selected_value ? 'oe-arrow-list-selected' : ''">
1418 <span class="oe-arrow-list-before" t-if="i > 0"></span><span><t t-esc="widget.to_show[i][1]"/></span><span class="oe-arrow-list-after" t-if="i < size - 1"></span>
1423 <t t-name="EmptyComponent">