915 lines
38 KiB
XML
915 lines
38 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- vim:fdl=1:
|
|
-->
|
|
<templates id="template" xml:space="preserve">
|
|
<t t-name="Interface">
|
|
<div id="oe_loading" class="loading"></div>
|
|
<div id="oe_notification" class="oe_notification">
|
|
<div id="oe_notification_default">
|
|
<a class="ui-notify-cross ui-notify-close" href="#">x</a>
|
|
<h1>#{title}</h1>
|
|
<p>#{text}</p>
|
|
</div>
|
|
<div id="oe_notification_alert" class="ui-state-error">
|
|
<a class="ui-notify-cross ui-notify-close" href="#">x</a>
|
|
<span style="float:left; margin:2px 5px 0 0;" class="ui-icon ui-icon-alert"></span>
|
|
<h1>#{title}</h1>
|
|
<p>#{text}</p>
|
|
</div>
|
|
</div>
|
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" class="main_table">
|
|
<tr>
|
|
<td colspan="2">
|
|
<div id="oe_header" class="header"></div>
|
|
<div id="oe_menu" class="menu"></div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" id="oe_secondary_menu" class="secondary_menu">
|
|
</td>
|
|
<td valign="top" >
|
|
<div id="oe_app" class="oe-application">
|
|
<div style="width:100%;">&nbsp;</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" class="login-container" colspan="2">
|
|
<div id="oe_login" class="login"></div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<div id="oe_footer" class="oe_footer">
|
|
<p class="oe_footer_powered">Powered by <a href="http://www.openerp.com">openerp.com</a>.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<t t-name="Loading">
|
|
Loading...
|
|
</t>
|
|
<t t-name="Login">
|
|
<form>
|
|
<fieldset>
|
|
<legend style="">
|
|
<img src="/base/static/src/img/stock_person.png" alt="" />
|
|
</legend>
|
|
<div class="oe_box2">
|
|
<table align="center" cellspacing="2px" cellpadding="0">
|
|
<tr>
|
|
<td><label for="db">Database:</label></td>
|
|
<td>
|
|
<t t-if="!db_list">
|
|
<input type="text" name="db" value="trunk" autofocus="true"/>
|
|
</t>
|
|
<t t-if="db_list">
|
|
<select name="db">
|
|
<t t-foreach="db_list" t-as="db">
|
|
<t t-if="selected_db === db">
|
|
<option t-att-value="db" selected="true">
|
|
<t t-esc="db"/></option>
|
|
</t>
|
|
<t t-if="selected_db !== db">
|
|
<option t-att-value="db"><t t-esc="db"/></option>
|
|
</t>
|
|
</t>
|
|
</select>
|
|
</t>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><label for="login">User:</label></td>
|
|
<td><input type="text" name="login"
|
|
t-att-value="selected_login || ''" autofocus="true"/></td>
|
|
</tr>
|
|
<tr>
|
|
<td><label for="password">Password:</label></td>
|
|
<td><input type="password" name="password"
|
|
t-att-value="selected_password || ''"/></td>
|
|
</tr>
|
|
<tr t-if="has_local_storage">
|
|
<td><label for="remember">Rember password:</label></td>
|
|
<td class="oe_remember">
|
|
<t t-if="remember">
|
|
<input type="checkbox" name="remember" checked="yes"/>
|
|
</t>
|
|
<t t-if="!remember">
|
|
<input type="checkbox" name="remember"/>
|
|
</t>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<button type="submit" name="submit">Login</button>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</fieldset>
|
|
<div class="login_error_message">Bad username or password</div>
|
|
</form>
|
|
<div class="oe_login_right_pane">
|
|
<p>We think that daily job activities can be more intuitive, efficient, automated, .. and even fun.</p>
|
|
<h3>OpenERP's vision to be:</h3>
|
|
|
|
<table cellpadding="0" cellspacing="0" width="100%" style="border:none;">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<img src="/base/static/src/img/product.png"/>
|
|
</td>
|
|
<td>
|
|
<strong>Full featured</strong><br />
|
|
Today's enterprise challenges are multiple. We provide one module for each need.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<img src="/base/static/src/img/accessories-archiver.png"/>
|
|
</td>
|
|
<td>
|
|
<strong>Open Source</strong><br />
|
|
To Build a great product, we rely on the knowledge of thousands of contributors.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<img src="/base/static/src/img/partner.png" />
|
|
</td>
|
|
<td>
|
|
<strong>User Friendly</strong><br />
|
|
In order to be productive, people need clean and easy to use interface.
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
</div>
|
|
</t>
|
|
<t t-name="Header">
|
|
<a href="/" class="company_logo_link">
|
|
<div class="company_logo" />
|
|
</a>
|
|
<h1 class="header_title" t-if="session.session_is_valid()">
|
|
<span class="company">$company</span> - (<span class="database">$database</span>)<br/>
|
|
<small class="username">$username session_id: <t t-esc="session.session_id"/></small>
|
|
</h1>
|
|
<div class="header_corner">
|
|
<ul class="block" t-if="session.session_is_valid()">
|
|
<li>
|
|
<a href="#home" title="Home" class="home"><img src="/base/static/src/img/header-home.png" width="16" height="16" border="0"/></a>
|
|
</li>
|
|
<li>
|
|
<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>
|
|
</li>
|
|
<li class="preferences">
|
|
<a href="#preferences" title="Preferences" class="preferences"><img src="/base/static/src/img/header-preferences.png" width="16" height="16" border="0"/></a>
|
|
</li>
|
|
<li>
|
|
<a href="#about" title="About" class="about"><img src="/base/static/src/img/header-about.png" width="16" height="16" border="0"/></a>
|
|
</li>
|
|
<li>
|
|
<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>
|
|
</li>
|
|
</ul>
|
|
<div class="block">
|
|
<a href="#logout" class="logout">LOGOUT</a>
|
|
</div>
|
|
|
|
</div>
|
|
</t>
|
|
<t t-name="Menu">
|
|
<table align="center">
|
|
<tr>
|
|
<t t-foreach="data.children" t-as="menu">
|
|
<td>
|
|
<a href="#" t-att-data-menu="menu.id">
|
|
<t t-esc="menu.name"/>
|
|
</a>
|
|
</td>
|
|
</t>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<t t-name="Menu.secondary">
|
|
<div style="display: none" class="menu_accordion" t-att-data-menu-parent="menu.id">
|
|
<t t-foreach="menu.children" t-as="menu">
|
|
<t t-set="header">h3</t>
|
|
<t t-call="Menu.secondary.children"/>
|
|
</t>
|
|
</div>
|
|
</t>
|
|
<t t-name="Menu.secondary.children">
|
|
<<t t-esc="header"/>>
|
|
<a href="#" t-attf-id="menu_#{menu.id}">
|
|
<span><t t-esc="menu.name"/></span>
|
|
</a>
|
|
</<t t-esc="header"/>>
|
|
<div class="menu_content">
|
|
<t t-foreach="menu.children" t-as="menu">
|
|
<t t-if="!menu.children.length">
|
|
<a href="#" class="leaf" t-att-data-menu="menu.id">
|
|
<span><t t-esc="menu.name"/></span>
|
|
</a>
|
|
</t>
|
|
<t t-if="menu.children.length">
|
|
<div class="submenu_accordion">
|
|
<t t-call="Menu.secondary.children">
|
|
<t t-set="header">h4</t>
|
|
</t>
|
|
</div>
|
|
</t>
|
|
</t>
|
|
</div>
|
|
</t>
|
|
<t t-name="ViewManager">
|
|
<table class="view-manager-main-table">
|
|
<tr>
|
|
<td class="view-manager-main-content">
|
|
<!-- TODO prefix id with the element_id of the controller t-attf-id="#{prefix}_localid" -->
|
|
<div class="oe_vm_switch">
|
|
<t t-if="views.length != 1" t-foreach="views" t-as="view">
|
|
<button type="button" t-att-data-view-type="view.view_type">
|
|
<t t-esc="view.view_type"/>
|
|
</button>
|
|
</t>
|
|
</div>
|
|
<div t-attf-id="#{prefix}_search" t-opentag="true"/>
|
|
<t t-foreach="views" t-as="view">
|
|
<div t-attf-id="#{prefix}_view_#{view.view_type}"/>
|
|
</t>
|
|
</td>
|
|
<td class="view-manager-main-sidebar" height="100%">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<table t-name="ListView">
|
|
<t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
|
|
<t t-set="actions_span" t-value="Math.floor((options.deletable or options.addable) ? columns_count/2 : 0)"/>
|
|
<thead class="ui-widget-header">
|
|
<tr>
|
|
<th t-if="actions_span" t-att-colspan="actions_span"
|
|
class="oe-actions">
|
|
<t t-if="flags.action_buttons !== false">
|
|
<button type="button" id="oe-list-add"
|
|
t-if="options.addable">
|
|
<t t-esc="options.addable"/>
|
|
</button>
|
|
<button type="button" id="oe-list-delete"
|
|
t-if="options.selectable and options.deletable">
|
|
Delete
|
|
</button>
|
|
</t>
|
|
</th>
|
|
<th t-att-colspan="columns_count - actions_span"
|
|
class="oe-list-pager">
|
|
<t t-if="flags.pager !== false">
|
|
<button type="button" data-pager-action="first">First</button>
|
|
<button type="button" data-pager-action="previous"
|
|
><<</button>
|
|
|
|
<span class="oe-pager-first">1</span>
|
|
to <span class="oe-pager-last">1</span>
|
|
of <span class="oe-pager-total">1</span>
|
|
|
|
<button type="button" data-pager-action="next">>></button>
|
|
<button type="button" data-pager-action="last">Last</button>
|
|
</t>
|
|
</th>
|
|
</tr>
|
|
<tr t-if="options.header">
|
|
<t t-foreach="columns" t-as="column">
|
|
<th t-if="column.meta">
|
|
<t t-esc="column.string"/>
|
|
</th>
|
|
</t>
|
|
<th t-if="options.selectable"/>
|
|
<t t-foreach="columns" t-as="column">
|
|
<th t-if="!column.meta and column.invisible !== '1'" t-att-data-id="column.id"
|
|
t-att-class="((options.sortable and column.tag !== 'button') ? 'oe-sortable' : null)">
|
|
<t t-if="column.tag !== 'button'">
|
|
<t t-esc="column.string"/>
|
|
<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')) : ''"/>
|
|
</t>
|
|
</th>
|
|
</t>
|
|
<th t-if="options.deletable"/>
|
|
</tr>
|
|
</thead>
|
|
<tfoot class="ui-widget-header">
|
|
<tr>
|
|
<td t-if="options.selectable"/>
|
|
<td t-foreach="aggregate_columns" t-as="column" class="oe-list-footer oe-number"
|
|
t-att-data-field="column.field" t-att-title="column.label">
|
|
</td>
|
|
<td t-if="options.deletable"/>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
<t t-name="ListView.rows" t-foreach="rows" t-as="row">
|
|
<t t-call="ListView.row">
|
|
<t t-set="style" t-value="null"/>
|
|
<t-if test="row.color">
|
|
<t t-set="style" t-value="'color: ' + row.color"/>
|
|
</t-if>
|
|
</t>
|
|
</t>
|
|
<tr t-name="ListView.row" t-att-style="style" t-att-class="row_parity"
|
|
t-att-data-index="row_index">
|
|
<t t-foreach="columns" t-as="column">
|
|
<td t-if="column.meta">
|
|
|
|
</td>
|
|
</t>
|
|
<th t-if="options.selectable" class="oe-record-selector">
|
|
<input type="checkbox"/>
|
|
</th>
|
|
<t t-foreach="columns" t-as="column">
|
|
<t t-set="align" t-value="column.type === 'integer' or column.type == 'float'"/>
|
|
<td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
|
|
t-att-class="'oe-field-cell' + (align ? ' oe-number' : '')"
|
|
t-att-data-field="column.id">
|
|
<t t-set="attrs" t-value="column.attrs_for(row.data)"/>
|
|
<t t-if="!attrs.invisible">
|
|
<t t-set="is_button" t-value="column.tag === 'button'"/>
|
|
<!-- TODO: get correct widget from form -->
|
|
<t t-if="!is_button and row['data'][column.id].value !== false">
|
|
<t t-set="value" t-value="row['data'][column.id].value"/>
|
|
<t t-esc="value instanceof Array ? value[1] : value"/>
|
|
</t>
|
|
<button type="button" t-att-title="column.help"
|
|
t-if="is_button">
|
|
<img t-att-src="'/base/static/src/img/icons/' + column.icon + '.png'"
|
|
t-att-alt="column.string"/>
|
|
</button>
|
|
</t>
|
|
</td>
|
|
</t>
|
|
<td t-if="options.deletable" class='oe-record-delete'>
|
|
<button type="button" name="delete">♻</button>
|
|
</td>
|
|
</tr>
|
|
<t t-name="ListView.row.form">
|
|
<t t-raw="frame.render()"/>
|
|
</t>
|
|
<t t-name="FormView">
|
|
<h2 class="oe_view_title"><t t-esc="view.fields_view.arch.attrs.string"/></h2>
|
|
<div class="oe_form_header" t-att-id="view.element_id + '_header'">
|
|
<div class="oe_form_buttons" t-if="view.flags.action_buttons !== false">
|
|
<!--<button type="button" class="oe_form_button_save">Save</button>-->
|
|
<button type="button" class="oe_form_button_save_edit">Save & Edit</button>
|
|
<!--<button type="button" class="oe_form_button_cancel">Cancel</button>-->
|
|
<button type="button" class="oe_form_button_new">New</button>
|
|
</div>
|
|
<div class="oe_form_pager" t-if="view.flags.pager !== false">
|
|
<button type="button" data-pager-action="first">First</button>
|
|
<button type="button" data-pager-action="previous"><<</button>
|
|
|
|
<span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span>
|
|
|
|
<button type="button" data-pager-action="next">>></button>
|
|
<button type="button" data-pager-action="last">Last</button>
|
|
</div>
|
|
</div>
|
|
<t t-raw="frame.render()"/>
|
|
</t>
|
|
<t t-name="FormView.sidebar.attachments">
|
|
<h2>Attachments</h2>
|
|
<div class="oe-sidebar-attachments-toolbar">
|
|
<div class="oe-binary-file-set" style="float: right">
|
|
<form class="oe-binary-form" t-attf-target="#{element_id}_iframe"
|
|
method="post" enctype="multipart/form-data" action="/base/binary/upload_attachment">
|
|
<input type="hidden" name="session_id" t-att-value="session.session_id"/>
|
|
<input type="hidden" name="callback" t-attf-value="#{element_id}_iframe"/>
|
|
<input type="hidden" name="model" t-att-value="dataset.model"/>
|
|
<input type="hidden" name="id" t-att-value="datarecord.id"/>
|
|
<button class="button" type="button">
|
|
<img src="/base/static/src/img/throbber.gif" width="16" height="16" style="display: none"/>
|
|
<span>Add</span>
|
|
</button>
|
|
<input type="file" class="oe-binary-file" name="ufile" title="Add attachment"
|
|
t-att-onclick="datarecord.id ? null : 'alert(\'No record selected ! You can only attach to existing record.\'); return false;'"/>
|
|
</form>
|
|
<iframe t-attf-id="#{element_id}_iframe" t-attf-name="#{element_id}_iframe" style="display: none"> </iframe>
|
|
</div>
|
|
</div>
|
|
<br style="clear: both"/>
|
|
<ul class="oe-sidebar-attachments-items">
|
|
<li t-foreach="attachments" t-as="attachment">
|
|
<t t-if="attachment.type == 'binary'" t-set="attachment.url" t-value="'/base/binary/saveas?session_id='
|
|
+ session.session_id + '&model=ir.attachment&id=' + attachment.id
|
|
+ '&field=datas' + '&fieldname=name' + '&t=' + (new Date().getTime())"/>
|
|
<a class="oe-sidebar-attachments-link" t-att-href="attachment.url" target="_blank">
|
|
<t t-esc="attachment.name"/>
|
|
</a>
|
|
<a href="#" class="oe-sidebar-attachment-delete" t-att-data-id="attachment.id" t-attf-title="Delete the attachment #{attachment.name}">
|
|
<img src="/base/static/src/img/attachments-close.png" width="15" height="15" border="0"/>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</t>
|
|
<t t-name="Widget">
|
|
Unhandled widget
|
|
<t t-raw="console.log('Unhandled widget', widget)"/>
|
|
</t>
|
|
<t t-name="WidgetFrame">
|
|
<table border="0" width="100%" cellpadding="0" cellspacing="0" class="oe_frame">
|
|
<tr t-foreach="widget.table" t-as="row">
|
|
<t t-foreach="row" t-as="td">
|
|
<td t-att-colspan="td.colspan gt 1 ? td.colspan : undefined"
|
|
t-att-width="td.width ? td.width : undefined"
|
|
t-att-nowrap="td.is_field_label or td.is_field_m2o? 'true' : undefined"
|
|
t-att-valign="td.table ? 'top' : undefined"
|
|
t-att-id="td.element_id"
|
|
t-att-class="'oe_form_frame_cell oe_form_' + (td.is_field_label ? 'label' : (td.field ? 'field_' + td.type : td.type))"
|
|
>
|
|
<t t-raw="td.render()"/>
|
|
</td>
|
|
</t>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<t t-name="WidgetNotebook">
|
|
<ul>
|
|
<li t-foreach="widget.pages" t-as="page">
|
|
<a t-att-href="'#' + widget.element_id + '-' + page_index">
|
|
<t t-esc="page.string"/>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<t t-foreach="widget.pages" t-as="page">
|
|
<div t-att-id="widget.element_id + '-' + page_index">
|
|
<t t-raw="page.render()"/>
|
|
</div>
|
|
</t>
|
|
</t>
|
|
<t t-name="WidgetSeparator">
|
|
<div t-att-class="'separator ' + (widget.node.attrs.orientation || 'horizontal')">
|
|
<t t-esc="widget.string"/>
|
|
</div>
|
|
</t>
|
|
<t t-name="WidgetLabel">
|
|
<label t-att-for="widget.element_id + '_field'"
|
|
t-att-class="'oe_form_label' + (widget.help ? '_help' : '')"
|
|
t-att-title="widget.help"
|
|
t-att-ondblclick="'console.log(\'' + widget.element_id + '\', openerp.screen.' + widget.element_id + ')'">
|
|
<t t-esc="widget.string"/>
|
|
<span t-if="widget.help">?</span>
|
|
<t t-if="widget.string and widget.node.tag != 'label'">:</t>
|
|
</label>
|
|
</t>
|
|
<t t-name="FieldChar">
|
|
<input type="text"
|
|
t-att-name="widget.name"
|
|
t-att-id="widget.element_id + '_field'"
|
|
t-att-class="'field_' + widget.type" style="width: 100%"
|
|
/>
|
|
</t>
|
|
<t t-name="FieldEmail">
|
|
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
|
<tr>
|
|
<td width="100%">
|
|
<t t-call="FieldChar"/>
|
|
</td>
|
|
<td width="16">
|
|
<button type="button" class="button" title="Send an e-mail with your default e-mail client">
|
|
<img src="/base/static/src/img/icons/terp-mail-message-new.png"/>
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<t t-name="FieldUrl">
|
|
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
|
<tr>
|
|
<td width="100%">
|
|
<t t-call="FieldChar"/>
|
|
</td>
|
|
<td width="16">
|
|
<button type="button" class="button" title="Open this resource">
|
|
<img src="/base/static/src/img/icons/gtk-ok.png"/>
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<t t-name="FieldText">
|
|
<textarea rows="6" style="width: 100%;"
|
|
t-att-name="widget.name"
|
|
t-att-id="widget.element_id + '_field'"
|
|
t-att-class="'field_' + widget.type"
|
|
></textarea>
|
|
</t>
|
|
<t t-name="FieldDate">
|
|
<input type="text" style="width: 100%"
|
|
t-att-name="widget.name"
|
|
t-att-id="widget.element_id + '_field'"
|
|
t-att-class="'field_' + widget.type"
|
|
/>
|
|
</t>
|
|
<t t-name="FieldSelection">
|
|
<select
|
|
t-att-name="widget.name"
|
|
t-att-id="widget.element_id + '_field'"
|
|
t-att-class="'field_' + widget.type"
|
|
style="width: 100%">
|
|
<t t-foreach="widget.field.selection" t-as="options">
|
|
<option t-att-value="options[0]">
|
|
<t t-esc="options[1]"/>
|
|
</option>
|
|
</t>
|
|
</select>
|
|
</t>
|
|
<t t-name="FieldMany2One">
|
|
<div t-att-id="widget.element_id" class="oe-m2o">
|
|
<input t-att-id="widget.element_id + '_input'" type="text" style="width: 100%;"/>
|
|
<span class="oe-m2o-drop-down-button" t-att-id="widget.element_id + '_drop_down'">
|
|
<img src="/base/static/src/img/down-arrow.png" /></span>
|
|
<span class="oe-m2o-cm-button" t-att-id="widget.name + '_open'">
|
|
<img src="/base/static/src/img/icons/gtk-index.png"/></span>
|
|
<div t-att-id="widget.cm_id" class="contextMenu" style="display:none"><ul>
|
|
<li t-att-id="widget.cm_id + '_search'">Search</li>
|
|
<li t-att-id="widget.cm_id + '_create'">Create New</li>
|
|
<li t-att-id="widget.cm_id + '_open'" style="color:grey">Open</li>
|
|
</ul></div>
|
|
</div>
|
|
</t>
|
|
<t t-name="FieldOne2Many">
|
|
<div t-att-id="widget.element_id">
|
|
One2Many widget
|
|
</div>
|
|
</t>
|
|
<t t-name="FieldMany2Many">
|
|
<div t-att-id="widget.list_id"></div>
|
|
</t>
|
|
<t t-name="FieldReference">
|
|
<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"/>
|
|
</t>
|
|
<t t-name="FieldBoolean">
|
|
<input type="checkbox"
|
|
t-att-name="widget.name"
|
|
t-att-id="widget.element_id + '_field'"
|
|
t-att-class="'field_' + widget.type"/>
|
|
</t>
|
|
<t t-name="FieldProgressBar">
|
|
<div t-opentag="true" class="oe-progressbar">
|
|
<span></span>
|
|
</div>
|
|
</t>
|
|
<t t-name="FieldBinaryImage">
|
|
<table cellpadding="0" cellspacing="0" border="0">
|
|
<tr>
|
|
<td align="center">
|
|
<img src="/base/static/src/img/placeholder.png" class="oe-binary-image" border="1"
|
|
t-att-id="widget.element_id + '_field'"
|
|
t-att-name="widget.name"
|
|
t-att-class="'field_' + widget.type"
|
|
t-att-width="widget.node.attrs.img_width || widget.node.attrs.width"
|
|
t-att-height="widget.node.attrs.img_height || widget.node.attrs.height"
|
|
/>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" valign="bottom" height="25">
|
|
<div class="oe-binary">
|
|
<table cellspacing="0" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
<div class="oe-binary-file-set" style="width: 40px; height:22px;">
|
|
<form class="oe-binary-form" t-att-target="widget.iframe"
|
|
method="post" enctype="multipart/form-data" action="/base/binary/upload">
|
|
<input type="hidden" name="session_id" value=""/>
|
|
<input type="hidden" name="callback" t-att-value="widget.iframe"/>
|
|
<button class="button" type="button" title="Set Image">
|
|
<img src="/base/static/src/img/icons/STOCK_DIRECTORY.png"/>
|
|
</button>
|
|
<input type="file" class="oe-binary-file" name="ufile"/>
|
|
</form>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<button class="button oe-binary-file-clear" type="button" title="Clear">
|
|
<img src="/base/static/src/img/icons/STOCK_MISSING_IMAGE.png"/>
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="oe-binary-progress" style="display: none">
|
|
<img src="/base/static/src/img/throbber.gif" width="16" height="16"/>
|
|
<b>Uploading ...</b>
|
|
</div>
|
|
<iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"> </iframe>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<t t-name="FieldBinaryFile">
|
|
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
|
<tr>
|
|
<td width="100%">
|
|
<input type="text"
|
|
t-att-name="widget.name"
|
|
t-att-id="widget.element_id + '_field'"
|
|
t-att-class="'field_' + widget.type" style="width: 100%"
|
|
/>
|
|
</td>
|
|
<td class="oe-binary" nowrap="true">
|
|
<table cellspacing="0" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
<div class="oe-binary-file-set" style="width: 80px; height:22px;">
|
|
<form class="oe-binary-form" t-att-target="widget.iframe"
|
|
method="post" enctype="multipart/form-data" action="/base/binary/upload">
|
|
<input type="hidden" name="session_id" value=""/>
|
|
<input type="hidden" name="callback" t-att-value="widget.iframe"/>
|
|
<button class="button" type="button" title="Set Image">
|
|
<img src="/base/static/src/img/icons/STOCK_DIRECTORY.png"/>
|
|
<span>Select</span>
|
|
</button>
|
|
<input type="file" class="oe-binary-file" name="ufile"/>
|
|
</form>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<button class="button oe-binary-file-save" type="button" title="Save As">
|
|
<img src="/base/static/src/img/icons/gtk-save.png"/>
|
|
<span>Save As</span>
|
|
</button>
|
|
</td>
|
|
<td>
|
|
<button class="button oe-binary-file-clear" type="button" title="Clear">
|
|
<img src="/base/static/src/img/icons/STOCK_MISSING_IMAGE.png"/>
|
|
<span>Clear</span>
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="oe-binary-progress" style="display: none" nowrap="true">
|
|
<img src="/base/static/src/img/throbber.gif" width="16" height="16"/>
|
|
<b>Uploading ...</b>
|
|
<iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"> </iframe>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<t t-name="WidgetButton">
|
|
<button type="button"
|
|
t-att-id="widget.element_id + '_button'"
|
|
t-att-title="widget.help"
|
|
style="width: 100%" class="button">
|
|
<img t-if="widget.node.attrs.icon" t-att-src="'/base/static/src/img/icons/' + widget.node.attrs.icon + '.png'" width="16" height="16"/>
|
|
<span t-if="widget.string"><t t-esc="widget.string"/></span>
|
|
</button>
|
|
</t>
|
|
<t t-name="SearchView">
|
|
<h2 class="oe_view_title"><t t-esc="view.attrs['string']"/></h2>
|
|
<form>
|
|
<t t-call="SearchView.render_lines"/>
|
|
<div class="oe_search-view-buttons" style="text-align: right;">
|
|
<input type="submit" value="Search"/>
|
|
<input type="reset" value="Clear"/>
|
|
<button class="oe_search-view-custom-filter-btn"><span>Advanced Filter</span></button>
|
|
<select class="oe_search-view-filters-management">
|
|
<option value="_filters">-- Filters --</option>
|
|
<option value="_actions">-- Actions --</option>
|
|
<option value="save_filter">Save Filter</option>
|
|
<option value="manage_filters">Manage Filters</option>
|
|
</select>
|
|
</div>
|
|
</form>
|
|
</t>
|
|
<t t-name="SearchView.render_lines">
|
|
<table class="oe-searchview-render-line" border="0" cellspacing="0" cellpadding="0"
|
|
t-foreach="lines" t-as="line">
|
|
<tr>
|
|
<td t-foreach="line" t-as="widget">
|
|
<t t-raw="widget.render(defaults)"/>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</t>
|
|
<button t-name="SearchView.filter" type="button"
|
|
t-att-id="element_id"
|
|
t-att-title="attrs.help"
|
|
t-att-class="classes.join(' ')"
|
|
t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined">
|
|
<img t-if="attrs.icon" t-att-src="'/base/static/src/img/icons/' + attrs.icon + '.png'" width="16" height="16"/>
|
|
<br t-if="attrs.icon and attrs.string"/>
|
|
<t t-esc="attrs.string"/>
|
|
</button>
|
|
<span t-name="SearchView.filters" class="filter_label_group"
|
|
><t t-foreach="filters" t-as="filter"
|
|
><t t-raw="filter.render(defaults)"/></t
|
|
></span>
|
|
<t t-name="SearchView.field">
|
|
<label style="display: block" t-att-title="attrs.help"
|
|
t-att-for="element_id">
|
|
<t t-esc="attrs.string || attrs.name"/>
|
|
<span t-if="attrs.help">(?)</span>
|
|
</label>
|
|
<div style="white-space: nowrap;">
|
|
<input type="text" size="15" t-att-name="attrs.name"
|
|
t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"
|
|
t-att-id="element_id"
|
|
t-att-value="defaults[attrs.name] || ''"/>
|
|
<t t-if="filters.length" t-raw="filters.render(defaults)"/>
|
|
</div>
|
|
</t>
|
|
<t t-name="SearchView.fields.date">
|
|
<label style="display: block" t-att-title="attrs.help"
|
|
t-att-for="element_id">
|
|
<t t-esc="attrs.string || attrs.name"/>
|
|
<span t-if="attrs.help">(?)</span>
|
|
</label>
|
|
<div style="white-space: nowrap;" t-att-id="element_id">
|
|
<input t-att-name="attrs.name" type="text" class="field_date"
|
|
t-att-value="defaults[attrs.name] || ''"
|
|
t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"/>
|
|
to
|
|
<input t-att-name="attrs.name" type="text" class="field_date"
|
|
t-att-value="defaults[attrs.name] || ''"/>
|
|
<t t-if="filters.length" t-raw="filters.render(defaults)"/>
|
|
</div>
|
|
</t>
|
|
<t t-name="SearchView.field.selection">
|
|
<label style="display: block" t-att-title="attrs.help"
|
|
t-att-for="element_id">
|
|
<t t-esc="attrs.string || attrs.name"/>
|
|
<span t-if="attrs.help">(?)</span>
|
|
</label>
|
|
<div style="white-space: nowrap;">
|
|
<select t-att-name="attrs.name" t-att-id="element_id"
|
|
t-att-autofocus="attrs.default_focus === '1' || undefined">
|
|
<option/>
|
|
<t t-foreach="attrs.selection" t-as="option">
|
|
<t t-set="selected" t-value="defaults[attrs.name] === option[0]"/>
|
|
<option t-if="selected"
|
|
t-att-value="option[0]" selected="selected">
|
|
<t t-esc="option[1]"/>
|
|
</option>
|
|
<option t-if="!selected" t-att-value="option[0]">
|
|
<t t-esc="option[1]"/>
|
|
</option>
|
|
</t>
|
|
</select>
|
|
<t t-if="filters.length" t-raw="filters.render(defaults)"/>
|
|
</div>
|
|
</t>
|
|
<t t-name="SearchView.util.expand">
|
|
<div t-att-class="'searchview_group ' + (expand == '0' ? 'folded' : 'expanded')"
|
|
t-att-id="element_id">
|
|
<a t-if="label" class="searchview_group_string" href="#">
|
|
<t t-esc="label"/>
|
|
</a>
|
|
<div class="searchview_group_content">
|
|
<t t-raw="content"/>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
<t t-name="SearchView.group">
|
|
<t t-call="SearchView.util.expand">
|
|
<t t-set="expand" t-value="attrs.expand"/>
|
|
<t t-set="label" t-value="attrs.string"/>
|
|
<t t-set="content">
|
|
<t t-call="SearchView.render_lines"/>
|
|
</t>
|
|
</t>
|
|
</t>
|
|
<t t-name="SearchView.extended_search">
|
|
<t t-call="SearchView.util.expand">
|
|
<t t-set="expand" t-value="false"/>
|
|
<t t-set="label" t-value="'Advanced Filters'"/>
|
|
<t t-set="content">
|
|
<div class="searchview_extended_groups_list">
|
|
</div>
|
|
</t>
|
|
</t>
|
|
</t>
|
|
<t t-name="SearchView.extended_search.group">
|
|
<div t-att-id="element_id" class="searchview_extended_group">
|
|
<select class="searchview_extended_group_choice">
|
|
<option value="all">All the following conditions must match</option>
|
|
<option value="any">Any of the following conditions must match</option>
|
|
<option value="none">None of the following conditions must match</option>
|
|
</select>
|
|
<a class="searchview_extended_delete_group"
|
|
href="javascript:void(0)"><span></span></a>
|
|
<div class="searchview_extended_propositions_list">
|
|
</div>
|
|
<a class="searchview_extended_add_proposition" href="javascript:void(0)">
|
|
<span>Add condition</span></a>
|
|
</div>
|
|
</t>
|
|
<t t-name="SearchView.extended_search.proposition">
|
|
<div t-att-id="element_id">
|
|
<select class="searchview_extended_prop_field">
|
|
<t t-foreach="attrs.fields" t-as="field">
|
|
<option t-att="{'selected': field === attrs.selected ? 'selected' : null}"
|
|
t-att-value="field.name">
|
|
<t t-esc="field.string"/>
|
|
</option>
|
|
</t>
|
|
</select>
|
|
<select class="searchview_extended_prop_op"/>
|
|
<span class="searchview_extended_prop_value"/>
|
|
<a class="searchview_extended_delete_prop"
|
|
href="javascript:void(0)"><span></span></a>
|
|
</div>
|
|
</t>
|
|
<t t-name="SearchView.extended_search.proposition.char">
|
|
<input t-att-id="element_id" class="field_char"/>
|
|
</t>
|
|
<t t-name="SearchView.extended_search.proposition.datetime">
|
|
<input t-att-id="element_id" class="field_datetime"/>
|
|
</t>
|
|
<t t-name="SearchView.extended_search.proposition.date">
|
|
<input t-att-id="element_id" class="field_date"/>
|
|
</t>
|
|
<t t-name="SearchView.extended_search.proposition.integer">
|
|
<input type="number" t-att-id="element_id" class="field_integer" step="1"/>
|
|
</t>
|
|
<t t-name="SearchView.extended_search.proposition.float">
|
|
<input type="number" t-att-id="element_id" class="field_float" step="0.01"/>
|
|
</t>
|
|
<t t-name="SearchView.extended_search.proposition.boolean">
|
|
</t>
|
|
<t t-name="SearchView.extended_search.proposition.selection">
|
|
<select t-att-id="element_id">
|
|
<t t-foreach="field.selection" t-as="element">
|
|
<option t-att-value="element[0]"><t t-esc="element[1]"/></option>
|
|
</t>
|
|
</select>
|
|
</t>
|
|
<t t-name="ViewManager.sidebar">
|
|
<div t-att-id="element_id" class="sidebar-main-div closed-sidebar">
|
|
|
|
</div>
|
|
</t>
|
|
<t t-name="ViewManager.sidebar.internal">
|
|
<a class="toggle-sidebar"></a>
|
|
<div class="sidebar-content">
|
|
<div class="sidebar-attachments" t-if="view == 'form'"> </div>
|
|
<div class="sidebar-actions">
|
|
<t t-foreach="sidebar.sections" t-as="section" t-if="section.elements.length">
|
|
<h2><t t-esc="section.label"/></h2>
|
|
<ul>
|
|
<li t-foreach="section.elements" t-as="element">
|
|
<a class="oe_sidebar_action_a" t-attf-data-index="#{section_index}-#{element_index}" href="#">
|
|
<t t-esc="element.name"/>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
<t t-name="DialogWarning">
|
|
<div id="dialog-message" t-att-title="title">
|
|
<p>
|
|
<span class="ui-icon ui-icon-circle-check" style="float:left; margin:0 7px 50px 0;"></span>
|
|
<t t-esc="message"/>
|
|
</p>
|
|
</div>
|
|
</t>
|
|
<t t-name="SelectCreatePopup">
|
|
<div t-att-id="element_id">
|
|
<div t-att-id="element_id + '_search'"></div>
|
|
<div t-att-id="element_id + '_view_list'"></div>
|
|
<div t-att-id="element_id + '_view_form'"></div>
|
|
</div>
|
|
</t>
|
|
<t t-name="SelectCreatePopup.search.buttons">
|
|
<button type="button" class="oe_selectcreatepopup-search-select" disabled="disabled">Select</button>
|
|
<button type="button" class="oe_selectcreatepopup-search-close">Close</button>
|
|
</t>
|
|
<t t-name="SelectCreatePopup.form.buttons">
|
|
<button type="button" class="oe_selectcreatepopup-form-save">Save</button>
|
|
<button type="button" class="oe_selectcreatepopup-form-close">Close</button>
|
|
</t>
|
|
|
|
<t t-name="ListView.row.frame" t-extend="WidgetFrame">
|
|
<t t-jquery="tr">
|
|
$(document.createElement('t'))
|
|
.append(this.contents())
|
|
.attr({
|
|
't-foreach': this.attr('t-foreach'),
|
|
't-as': this.attr('t-as')
|
|
})
|
|
.replaceAll(this)
|
|
.after($(document.createElement('td')).append(
|
|
$(document.createElement('button')).attr({
|
|
'class': 'oe-edit-row-save', 'type': 'button'}).text('Save')))
|
|
.before($(document.createElement('td')).append(
|
|
$(document.createElement('button')).attr({
|
|
'class': 'oe-edit-row-cancel', 'type': 'button'}).text('Cancel')))
|
|
.unwrap();
|
|
</t>
|
|
</t>
|
|
</templates>
|