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 <div id="oe_login" class="login"></div>
21 <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" class="main_table">
24 <div id="oe_header" class="header"></div>
25 <div id="oe_menu" class="menu"></div>
29 <td valign="top" id="oe_secondary_menu" class="secondary_menu">
32 <div id="oe_app" class="oe-application">
33 <div style="width:100%;">&nbsp;</div>
39 <div id="oe_footer" class="oe_footer">
40 <p class="oe_footer_powered">Powered by <a href="http://www.openerp.com">openerp.com</a>.</p>
51 Database: <input type="text" name="db" value="trunk"/><br/>
52 Login: <input type="text" name="login" value="admin"/><br/>
53 Password: <input type="password" name="password" value="a"/><br/>
54 <input type="submit" name="submit" value="Login"/>
58 <a href="/" class="company_logo_link">
59 <div class="company_logo" />
61 <h1 class="header_title" t-if="session.session_is_valid()">
62 <span class="company">$company</span> - (<span class="database">$database</span>)<br/>
63 <small class="username">$username session_id: <t t-esc="session.session_id"/></small>
65 <div class="header_corner">
66 <ul class="block" t-if="session.session_is_valid()">
68 <a href="#home" title="Home" class="home"><img src="/base/static/src/img/header-home.png" width="16" height="16" border="0"/></a>
71 <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>
73 <li class="preferences">
74 <a href="#preferences" title="Preferences" class="preferences"><img src="/base/static/src/img/header-preferences.png" width="16" height="16" border="0"/></a>
77 <a href="#about" title="About" class="about"><img src="/base/static/src/img/header-about.png" width="16" height="16" border="0"/></a>
80 <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>
84 <a href="#logout" class="logout">LOGOUT</a>
90 <table align="center">
92 <t t-foreach="data.children" t-as="menu">
94 <a href="#" t-att-data-menu="menu.id">
95 <span><t t-esc="menu.name"/></span>
102 <t t-name="Menu.secondary">
103 <div style="display: none" class="menu_accordion" t-att-data-menu-parent="menu.id">
104 <t t-foreach="menu.children" t-as="menu">
105 <t t-set="header">h3</t>
106 <t t-call="Menu.secondary.children"/>
110 <t t-name="Menu.secondary.children">
111 <<t t-esc="header"/>>
112 <a href="#" t-attf-id="menu_#{menu.id}">
113 <span><t t-esc="menu.name"/></span>
115 </<t t-esc="header"/>>
116 <div class="menu_content">
117 <t t-foreach="menu.children" t-as="menu">
118 <t t-if="!menu.children.length">
119 <a href="#" class="leaf" t-att-data-menu="menu.id">
120 <span><t t-esc="menu.name"/></span>
123 <t t-if="menu.children.length">
124 <div class="submenu_accordion">
125 <t t-call="Menu.secondary.children">
126 <t t-set="header">h4</t>
133 <t t-name="ViewManager">
134 <table class="view-manager-main-table">
136 <td class="view-manager-main-content">
137 <!-- TODO prefix id with the element_id of the controller t-attf-id="#{prefix}_localid" -->
138 <div class="oe_vm_switch">
139 <t t-if="views.length != 1" t-foreach="views" t-as="view">
140 <button type="button" t-att-data-view-type="view[1]">
145 <div t-attf-id="#{prefix}_search" t-opentag="true"/>
146 <t t-foreach="views" t-as="view">
147 <div t-attf-id="#{prefix}_view_#{view[1]}"/>
150 <td class="view-manager-main-sidebar">
155 <table t-name="ListView">
156 <t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
157 <t t-set="actions_span" t-value="Math.floor((options.deletable or options.addable) ? columns_count/2 : 0)"/>
158 <thead class="ui-widget-header">
159 <tr t-if="options.selectable">
160 <th t-if="actions_span" t-att-colspan="actions_span"
162 <t t-if="flags.action_buttons !== false">
163 <button type="button" id="oe-list-add"
164 t-if="options.addable">
165 <t t-esc="options.addable"/>
167 <button type="button" id="oe-list-delete"
168 t-if="options.deletable">
173 <th t-att-colspan="columns_count - actions_span"
174 class="oe-list-pager">
175 <t t-if="flags.pager !== false">
176 <button type="button" data-pager-action="first">First</button>
177 <button type="button" data-pager-action="previous"
180 <span class="oe-pager-first">1</span>
181 to <span class="oe-pager-last">1</span>
182 of <span class="oe-pager-total">1</span>
184 <button type="button" data-pager-action="next">>></button>
185 <button type="button" data-pager-action="last">Last</button>
189 <tr t-if="options.header">
190 <th t-if="options.selectable"/>
191 <t t-foreach="columns" t-as="column">
192 <th t-if="column.invisible !== '1'" t-att-data-id="column.id"
193 t-att-class="((options.sortable and column.tag !== 'button') ? 'oe-sortable' : null)">
194 <t t-if="column.tag !== 'button'">
195 <t t-esc="column.string"/>
196 <span t-att-class="(fields_view.sorted.field === column.id) ? ('ui-icon' + (fields_view.sorted.reversed ? ' ui-icon-triangle-1-n' : ' ui-icon-triangle-1-s')) : ''"/>
200 <th t-if="options.deletable"/>
204 <t t-name="ListView.rows" t-foreach="rows" t-as="row">
205 <t t-call="ListView.row">
206 <t t-set="style" t-value="null"/>
207 <t-if test="row.color">
208 <t t-set="style" t-value="'color: ' + row.color"/>
212 <tr t-name="ListView.row" t-att-style="style" t-att-class="row_parity">
213 <th t-if="options.selectable" class="oe-record-selector">
214 <input type="checkbox"/>
216 <t t-foreach="columns" t-as="column">
217 <t t-set="attrs" t-value="column.attrs_for(row.data)"/>
218 <td t-if="column.invisible !== '1'" t-att-title="column.help"
219 class="oe-field-cell" t-att-data-field="column.id">
220 <t t-if="!attrs.invisible">
221 <t t-set="is_button" t-value="column.tag === 'button'"/>
222 <!-- TODO: get correct widget from form -->
223 <t t-if="!is_button and row['data'][column.id].value">
224 <t t-set="value" t-value="row['data'][column.id].value"/>
225 <t t-esc="value instanceof Array ? value[1] : value"/>
227 <button type="button" t-att-title="column.help"
229 <img t-att-src="'/base/static/src/img/icons/' + column.icon + '.png'"
230 t-att-alt="column.string"/>
235 <td t-if="options.deletable" class='oe-record-delete'>
236 <button type="button" name="delete">â™»</button>
239 <t t-name="FormView">
240 <h2 class="oe_view_title"><t t-esc="view.fields_view.arch.attrs.string"/></h2>
241 <div class="oe_form_header" t-att-id="view.element_id + '_header'">
242 <div class="oe_form_buttons" t-if="view.flags.action_buttons !== false">
243 <!--<button type="button" class="oe_form_button_save">Save</button>-->
244 <button type="button" class="oe_form_button_save_edit">Save & Edit</button>
245 <!--<button type="button" class="oe_form_button_cancel">Cancel</button>-->
246 <button type="button" class="oe_form_button_new">New</button>
248 <div class="oe_form_pager" t-if="view.flags.pager !== false">
249 <button type="button" data-pager-action="first">First</button>
250 <button type="button" data-pager-action="previous"><<</button>
252 <span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span>
254 <button type="button" data-pager-action="next">>></button>
255 <button type="button" data-pager-action="last">Last</button>
258 <t t-raw="frame.render()"/>
262 <t t-raw="console.log('Unhandled widget', widget)"/>
264 <t t-name="WidgetFrame">
265 <table border="0" width="100%" cellpadding="2" cellspacing="2" class="oe_frame">
266 <tr t-foreach="widget.table" t-as="row">
267 <t t-foreach="row" t-as="td">
268 <td t-att-colspan="td.colspan gt 1 ? td.colspan : undefined"
269 t-att-width="td.width ? td.width : undefined"
270 t-att-nowrap="td.is_field_label or td.is_field_m2o? 'true' : undefined"
271 t-att-valign="td.table ? 'top' : undefined"
272 t-att-id="td.element_id"
273 t-att-class="'oe_form_' + (td.is_field_label ? 'label' : (td.field ? 'field_' + td.type : td.type))"
275 <t t-raw="td.render()"/>
281 <t t-name="WidgetNotebook">
283 <li t-foreach="widget.pages" t-as="page">
284 <a t-att-href="'#' + widget.element_id + '-' + page_index">
285 <t t-esc="page.string"/>
289 <t t-foreach="widget.pages" t-as="page">
290 <div t-att-id="widget.element_id + '-' + page_index">
291 <t t-raw="page.render()"/>
295 <t t-name="WidgetSeparator">
296 <div t-att-class="'separator ' + (widget.node.attrs.orientation || 'horizontal')">
297 <t t-esc="widget.string"/>
300 <t t-name="WidgetLabel">
301 <label t-att-for="widget.element_id + '_field'"
302 t-att-class="'oe_form_label' + (widget.help ? '_help' : '')"
303 t-att-title="widget.help"
304 t-att-ondblclick="'console.log(\'' + widget.element_id + '\', openerp.screen.' + widget.element_id + ')'">
305 <t t-esc="widget.string"/>
306 <span t-if="widget.help">?</span>
307 <t t-if="widget.string and widget.node.tag != 'label'">:</t>
310 <t t-name="FieldChar">
312 t-att-name="widget.name"
313 t-att-id="widget.element_id + '_field'"
314 t-att-class="'field_' + widget.type" style="width: 100%"
317 <t t-name="FieldEmail">
318 <table cellpadding="0" cellspacing="0" border="0" width="100%">
321 <t t-call="FieldChar"/>
324 <button type="button" class="button" title="Send an e-mail with your default e-mail client">
325 <img src="/base/static/src/img/icons/terp-mail-message-new.png"/>
331 <t t-name="FieldUrl">
332 <table cellpadding="0" cellspacing="0" border="0" width="100%">
335 <t t-call="FieldChar"/>
338 <button type="button" class="button" title="Open this resource">
339 <img src="/base/static/src/img/icons/gtk-ok.png"/>
345 <t t-name="FieldText">
346 <textarea rows="6" style="width: 100%;"
347 t-att-name="widget.name"
348 t-att-id="widget.element_id + '_field'"
349 t-att-class="'field_' + widget.type"
352 <t t-name="FieldDate">
353 <input type="text" style="width: 100%"
354 t-att-name="widget.name"
355 t-att-id="widget.element_id + '_field'"
356 t-att-class="'field_' + widget.type"
359 <t t-name="FieldSelection">
361 t-att-name="widget.name"
362 t-att-id="widget.element_id + '_field'"
363 t-att-class="'field_' + widget.type"
365 <t t-foreach="widget.field.selection" t-as="options">
366 <option t-att-value="options[0]">
367 <t t-esc="options[1]"/>
372 <t t-name="FieldMany2One">
374 t-att-name="widget.name"
375 t-att-id="widget.element_id + '_field'"
376 t-att-class="'field_' + widget.type"
377 t-att-type="widget.type"
378 style="width: 100%;"/>
379 <div type='button' class='ui_combo' tabindex="'-1'" title="'Show All Items'"></div>
381 <t t-name="FieldOne2Many">
382 <div t-att-id="widget.element_id">
386 <t t-name="FieldMany2Many">
387 <div t-att-id="widget.list_id"></div>
389 <t t-name="FieldReference">
390 <input type="text" t-att-name="widget.name" t-att-id="widget.element_id" t-att-class="'field_' + widget.type" style="width: 100%" placeholder="Widget Reference"/>
392 <t t-name="FieldBoolean">
393 <input type="checkbox"
394 t-att-name="widget.name"
395 t-att-id="widget.element_id + '_field'"
396 t-att-class="'field_' + widget.type"/>
398 <t t-name="FieldProgressBar">
399 <div t-opentag="true" class="oe-progressbar">
403 <t t-name="FieldBinaryImage">
404 <table cellpadding="0" cellspacing="0" border="0">
407 <img src="/base/static/src/img/placeholder.png" class="oe-binary-image" border="1"
408 t-att-id="widget.element_id + '_field'"
409 t-att-name="widget.name"
410 t-att-class="'field_' + widget.type"
411 t-att-width="widget.node.attrs.img_width || widget.node.attrs.width"
412 t-att-height="widget.node.attrs.img_height || widget.node.attrs.height"
417 <td align="center" valign="bottom" height="25">
418 <div class="oe-binary">
419 <!-- TODO: input@type=file inside a button won't work in firefox. Use links instead -->
420 <button class="button oe-binary-file-set" type="button" title="Set Image">
421 <img src="/base/static/src/img/icons/STOCK_DIRECTORY.png"/>
422 <form class="oe-binary-form" t-att-target="widget.iframe"
423 method="post" enctype="multipart/form-data" action="/base/formview/upload">
424 <input type="hidden" name="session_id" value=""/>
425 <input type="hidden" name="callback" t-att-value="widget.iframe"/>
426 <input type="file" class="oe-binary-file" name="ufile"/>
429 <button class="button oe-binary-file-save" type="button" title="Save As">
430 <img src="/base/static/src/img/icons/gtk-save.png"/>
432 <button class="button oe-binary-file-clear" type="button" title="Clear">
433 <img src="/base/static/src/img/icons/STOCK_MISSING_IMAGE.png"/>
436 <div class="oe-binary-progress" style="display: none">
437 <img src="/base/static/src/img/throbber.gif" width="16" height="16"/>
440 <iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"> </iframe>
445 <t t-name="FieldBinaryFile">
446 <table cellpadding="0" cellspacing="0" border="0" width="100%">
450 t-att-name="widget.name"
451 t-att-id="widget.element_id + '_field'"
452 t-att-class="'field_' + widget.type" style="width: 100%"
455 <td class="oe-binary" nowrap="true">
456 <!-- TODO: input@type=file inside a button won't work in firefox. Use links instead -->
457 <button class="button oe-binary-file-set" type="button" title="Select file">
458 <img src="/base/static/src/img/icons/STOCK_DIRECTORY.png"/>
460 <form class="oe-binary-form" t-att-target="widget.iframe"
461 method="post" enctype="multipart/form-data" action="/base/formview/upload">
462 <input type="hidden" name="session_id" value=""/>
463 <input type="hidden" name="callback" t-att-value="widget.iframe"/>
464 <input type="file" class="oe-binary-file" name="ufile"/>
467 <button class="button oe-binary-file-save" type="button" title="Save As">
468 <img src="/base/static/src/img/icons/gtk-save.png"/>
471 <button class="button oe-binary-file-clear" type="button" title="Clear">
472 <img src="/base/static/src/img/icons/STOCK_MISSING_IMAGE.png"/>
476 <td class="oe-binary-progress" style="display: none" nowrap="true">
477 <img src="/base/static/src/img/throbber.gif" width="16" height="16"/>
479 <iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"> </iframe>
484 <t t-name="WidgetButton">
485 <button type="button"
486 t-att-id="widget.element_id + '_button'"
487 t-att-title="widget.help"
488 style="width: 100%" class="button">
489 <img t-if="widget.node.attrs.icon" t-att-src="'/base/static/src/img/icons/' + widget.node.attrs.icon + '.png'" width="16" height="16"/>
490 <span t-if="widget.string"><t t-esc="widget.string"/></span>
493 <t t-name="SearchView">
494 <h2 class="oe_view_title"><t t-esc="view.attrs['string']"/></h2>
496 <t t-call="SearchView.render_lines"/>
497 <div class="oe_search-view-buttons" style="text-align: right;">
498 <input type="submit" value="Search"/>
499 <input type="reset" value="Clear"/>
503 <t t-name="SearchView.render_lines">
504 <table class="oe-searchview-render-line" border="0" cellspacing="0" cellpadding="0"
505 t-foreach="lines" t-as="line">
507 <td t-foreach="line" t-as="widget">
508 <t t-raw="widget.render(defaults)"/>
513 <button t-name="SearchView.filter" type="button"
514 t-att-id="element_id"
515 t-att-title="attrs.help"
516 t-att-class="classes.join(' ')"
517 t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined">
518 <img t-if="attrs.icon" t-att-src="'/base/static/src/img/icons/' + attrs.icon + '.png'" width="16" height="16"/>
519 <br t-if="attrs.icon and attrs.string"/>
520 <t t-esc="attrs.string"/>
522 <span t-name="SearchView.filters" class="filter_label_group"
523 ><t t-foreach="filters" t-as="filter"
524 ><t t-raw="filter.render(defaults)"/></t
526 <t t-name="SearchView.field">
527 <label style="display: block" t-att-title="attrs.help"
528 t-att-for="element_id">
529 <t t-esc="attrs.string || attrs.name"/>
530 <span t-if="attrs.help">(?)</span>
532 <div style="white-space: nowrap;">
533 <input type="text" size="15" t-att-name="attrs.name"
534 t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"
535 t-att-id="element_id"
536 t-att-value="defaults[attrs.name] || ''"/>
537 <t t-if="filters.length" t-raw="filters.render(defaults)"/>
540 <t t-name="SearchView.fields.date">
541 <label style="display: block" t-att-title="attrs.help"
542 t-att-for="element_id">
543 <t t-esc="attrs.string || attrs.name"/>
544 <span t-if="attrs.help">(?)</span>
546 <div style="white-space: nowrap;" t-att-id="element_id">
547 <input t-att-name="attrs.name" type="text" class="field_date"
548 t-att-value="defaults[attrs.name] || ''"
549 t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"/>
551 <input t-att-name="attrs.name" type="text" class="field_date"
552 t-att-value="defaults[attrs.name] || ''"/>
553 <t t-if="filters.length" t-raw="filters.render(defaults)"/>
556 <t t-name="SearchView.field.selection">
557 <label style="display: block" t-att-title="attrs.help"
558 t-att-for="element_id">
559 <t t-esc="attrs.string || attrs.name"/>
560 <span t-if="attrs.help">(?)</span>
562 <div style="white-space: nowrap;">
563 <select t-att-name="attrs.name" t-att-id="element_id"
564 t-att-autofocus="attrs.default_focus === '1' || undefined">
566 <t t-foreach="attrs.selection" t-as="option">
567 <t t-set="selected" t-value="defaults[attrs.name] === option[0]"/>
568 <option t-if="selected"
569 t-att-value="option[0]" selected="selected">
570 <t t-esc="option[1]"/>
572 <option t-if="!selected" t-att-value="option[0]">
573 <t t-esc="option[1]"/>
577 <t t-if="filters.length" t-raw="filters.render(defaults)"/>
580 <t t-name="SearchView.util.expand">
581 <div t-att-class="'searchview_group ' + (expand == '0' ? 'folded' : 'expanded')"
582 t-att-id="element_id">
583 <a t-if="label" class="searchview_group_string" href="#">
586 <div class="searchview_group_content">
591 <t t-name="SearchView.group">
592 <t t-call="SearchView.util.expand">
593 <t t-set="expand" t-value="attrs.expand"/>
594 <t t-set="label" t-value="attrs.string"/>
596 <t t-call="SearchView.render_lines"/>
600 <t t-name="SearchView.extended_search">
601 <t t-call="SearchView.util.expand">
602 <t t-set="expand" t-value="false"/>
603 <t t-set="label" t-value="'Custom Filters'"/>
605 <div class="searchview_extended_groups_list">
607 <button class="searchview_extended_add_group"
608 type="button"><span>Add group of conditions</span></button>
612 <t t-name="SearchView.extended_search.group">
613 <div t-att-id="element_id" class="searchview_extended_group">
614 <select class="searchview_extended_group_choice">
615 <option value="all">All the following conditions must match</option>
616 <option value="any">Any of the following conditions must match</option>
617 <option value="none">None of the following conditions must match</option>
619 <button class="searchview_extended_delete_group"
620 type="button"><span>Delete this group of conditions</span></button>
621 <div class="searchview_extended_propositions_list">
623 <button class="searchview_extended_add_proposition" type="button"><span>Add condition</span></button>
626 <t t-name="SearchView.extended_search.proposition">
627 <div t-att-id="element_id">
628 <select class="searchview_extended_prop_field">
629 <t t-foreach="attrs.fields" t-as="field">
630 <option t-att="{'selected': field === attrs.selected ? 'selected' : null}"
631 t-att-value="field.name">
632 <t t-esc="field.string"/>
636 <select class="searchview_extended_prop_op"/>
637 <span class="searchview_extended_prop_value"/>
638 <button class="searchview_extended_delete_prop"
639 type="button"><span>Delete this condition</span></button>
642 <t t-name="SearchView.extended_search.proposition.char">
643 <input t-att-id="element_id" class="field_char"/>
645 <t t-name="SearchView.extended_search.proposition.datetime">
646 <input t-att-id="element_id" class="field_datetime"/>
648 <t t-name="SearchView.extended_search.proposition.date">
649 <input t-att-id="element_id" class="field_date"/>
651 <t t-name="SearchView.extended_search.proposition.integer">
652 <input type="number" t-att-id="element_id" class="field_integer" step="1"/>
654 <t t-name="SearchView.extended_search.proposition.float">
655 <input type="number" t-att-id="element_id" class="field_float" step="0.01"/>
657 <t t-name="ViewManager.sidebar">
658 <div t-att-id="element_id" class="sidebar-main-div closed-sidebar">
662 <t t-name="ViewManager.sidebar.internal">
663 <a class="toggle-sidebar"></a>
664 <div t-att-id="element_id" class="sidebar-sub-div">
665 <div class="sidebar-displaying-div">
666 <t t-set="i" t-value="1-1"/> <!-- al do stupid things -->
667 <t t-foreach="sections" t-as="section">
668 <t t-if="section.elements.length > 0">
669 <h2><t t-esc="section.label"/></h2>
671 <t t-set="j" t-value="1-1"/>
672 <t t-foreach="section.elements" t-as="element">
673 <li><a class="oe_sidebar_action_a" t-att-data-i="i" t-att-data-j="j" href="#">
674 <t t-esc="element.name"/></a></li>
675 <t t-set="j" t-value="j+1"/>
679 <t t-set="i" t-value="i+1"/>
684 <t t-name="DialogWarning">
685 <div id="dialog-message" t-att-title="title">
687 <span class="ui-icon ui-icon-circle-check" style="float:left; margin:0 7px 50px 0;"></span>
692 <t t-name="Many2XSelectPopup">
693 <div t-att-id="element_id">
694 <div t-att-id="element_id + '_search'"></div>
695 <div t-att-id="element_id + '_view_list'"></div>
696 <div t-att-id="element_id + '_view_form'"></div>
699 <t t-name="Many2XSelectPopup.search.buttons">
700 <button type="button" class="oe_many2xselectpopup-search-new">New</button>
701 <button type="button" class="oe_many2xselectpopup-search-close">Close</button>
703 <t t-name="Many2XSelectPopup.form.buttons">
704 <button type="button" class="oe_many2xselectpopup-form-save">Save</button>
705 <button type="button" class="oe_many2xselectpopup-form-close">Close</button>