Loading...
</t>
<t t-name="Login">
-
<form>
<fieldset>
<legend style="">
<table align="center" cellspacing="2px" cellpadding="0">
<tr>
<td><label for="db">Database:</label></td>
- <td class="oe_field_value">
- <input type="text" name="db" value="trunk" autofocus="true"/>
+ <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 class="oe_field_value"><input type="text" name="login" value="admin" autofocus="true"/></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 class="oe_field_value"><input type="password" name="password" value="a"/></td>
+ <td><input type="password" name="password"
+ t-att-value="selected_password || ''"/></td>
</tr>
<tr>
<td></td>
- <td class="db_login_buttons">
- <input type="submit" name="submit" value="Login"/>
+ <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>
+ <span class="database"><t t-esc="session.db"/></span> - <t t-esc="session.login"/> <br/>
+ <small class="username">rpc_session_id: <t t-esc="session.session_id"/></small>
</h1>
<div class="header_corner">
<ul class="block" t-if="session.session_is_valid()">
<!-- 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[1]">
- <t t-esc="view[1]"/>
+ <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[1]}"/>
+ <div t-attf-id="#{prefix}_view_#{view.view_type}"/>
</t>
</td>
<td class="view-manager-main-sidebar" height="100%">
</tr>
</table>
</t>
-<table t-name="ListView">
+<table t-name="ListView" class="oe-listview-content">
<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>
+ <tr t-if="flags.action_buttons !== false or flags.pager !== false">
+ <th t-att-colspan="columns_count">
+ <table>
+ <tr>
+ <td t-if="flags.action_buttons !== false" class="oe-actions">
+ <button type="button" class="oe-list-add"
+ t-if="options.addable">
+ <t t-esc="options.addable"/>
+ </button>
+ <button type="button" class="oe-list-delete"
+ t-if="options.selectable and options.deletable">
+ Delete
+ </button>
+ </td>
+ <th t-if="flags.pager !== false" class="oe-list-pager">
+ <button type="button" disabled="disabled"
+ data-pager-action="first">First</button>
+ <button type="button" disabled="disabled"
+ 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>
+ <span class="oe-pager-state">
+ </span>
- <button type="button" data-pager-action="next">>></button>
- <button type="button" data-pager-action="last">Last</button>
- </t>
+ <button type="button" disabled="disabled"
+ data-pager-action="next">></button>
+ <button type="button" disabled="disabled"
+ data-pager-action="last">Last</button>
+ </th>
+ </tr>
+ </table>
</th>
</tr>
<tr t-if="options.header">
<t t-esc="column.string"/>
</th>
</t>
- <th t-if="options.selectable"/>
+ <th t-if="options.selectable" width="1"/>
<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>
+ <t t-if="column.tag !== 'button'"
+ ><t t-esc="column.string"/></t>
</th>
</t>
- <th t-if="options.deletable"/>
+ <th t-if="options.deletable" width="1"/>
</tr>
</thead>
- <tfoot class="ui-widget-header" t-if="aggregate_columns.length">
+ <tfoot class="ui-widget-header">
<tr>
- <td t-att-colspan="columns_count" class='oe-list-footer'>
-
+ <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-if>
</t>
</t>
-<tr t-name="ListView.row" t-att-style="style" t-att-class="row_parity">
+<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">
+ <th t-if="options.selectable" class="oe-record-selector" width="1">
<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"
- class="oe-field-cell" 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>
+ t-att-class="'oe-field-cell' + (align ? ' oe-number' : '')"
+ t-att-data-field="column.id">
+ <t t-raw="render_cell(row.data, column)"/>
</td>
</t>
- <td t-if="options.deletable" class='oe-record-delete'>
+ <td t-if="options.deletable" class='oe-record-delete' width="1">
<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'">
+ <h2 class="oe_view_title"><t t-esc="view.fields_view.arch.attrs.string"/> <button class="oe_get_xml_view">xml</button></h2>
<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_save">
+ <span class="oe_form_on_update">Save</span>
+ <span class="oe_form_on_create">Create</span>
+ </button>-->
+ <button type="button" class="oe_form_button_save_edit">
+ <span class="oe_form_on_update">Save & Edit</span>
+ <span class="oe_form_on_create">Create & Edit</span>
+ </button>
<!--<button type="button" class="oe_form_button_cancel">Cancel</button>-->
<button type="button" class="oe_form_button_new">New</button>
</div>
<t t-raw="console.log('Unhandled widget', widget)"/>
</t>
<t t-name="WidgetFrame">
- <table border="0" width="100%" cellpadding="2" cellspacing="2" class="oe_frame">
+ <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-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_' + (td.is_field_label ? 'label' : (td.field ? 'field_' + td.type : td.type))"
+ 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>
<t t-name="WidgetNotebook">
<ul>
- <li t-foreach="widget.pages" t-as="page">
- <a t-att-href="'#' + widget.element_id + '-' + page_index">
+ <li t-foreach="widget.pages" t-as="page" t-att-id="page.element_tab_id">
+ <a t-att-href="'#' + page.element_id">
<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-raw="page.render()"/>
</t>
</t>
+<t t-name="WidgetNotebookPage">
+ <div t-att-id="widget.element_id">
+ <t t-call="WidgetFrame"/>
+ </div>
+</t>
<t t-name="WidgetSeparator">
<div t-att-class="'separator ' + (widget.node.attrs.orientation || 'horizontal')">
<t t-esc="widget.string"/>
<t t-if="widget.string and widget.node.tag != 'label'">:</t>
</label>
</t>
+<t t-name="WidgetParagraph">
+ <p class="oe_form_paragraph"><t t-esc="widget.string"/></p>
+</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-foreach="widget.field.selection" t-as="options">
- <option t-att-value="options[0]">
- <t t-esc="options[1]"/>
+ <t t-foreach="widget.field_index" t-as="options">
+ <option t-att-value="options.ikey">
+ <t t-esc="options.label"/>
</option>
</t>
</select>
</t>
<t t-name="FieldMany2One">
- <div style="padding-right: 16px;white-space: nowrap;">
- <input type="text"
- t-att-name="widget.name"
- t-att-id="widget.element_id + '_field'"
- t-att-class="'field_' + widget.type"
- t-att-type="widget.type"
- style="width: 100%;"/>
- <span type='button' t-att-class="'ui_combo'" tabindex="'-1'" title="'Show All Items'"></span>
- <img t-att-id="widget.name + '_open'" t-att-alt="'Open'" t-att-title="'Create'" t-att-src="'/base/static/src/img/iconset-d-drop.gif'" t-att-class="'m2o_open'"/>
+ <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 + '_open'" style="color:grey">Open...</li>
+ <li t-att-id="widget.cm_id + '_create'">Create...</li>
+ <li t-att-id="widget.cm_id + '_search'">Search...</li>
+ </ul></div>
</div>
</t>
<t t-name="FieldOne2Many">
<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="all">All the following conditions must match</option>
<option value="none">None of the following conditions must match</option>
</select>
- <a class="searchview_extended_delete_group"
+ <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 class="oe_adv_filters_and"><span>and</span></div>
</div>
</t>
<t t-name="SearchView.extended_search.proposition">
<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>
+ href="javascript:void(0)"><span> </span></a>
</div>
</t>
<t t-name="SearchView.extended_search.proposition.char">
</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>
+ <table cellspacing="0" cellpadding="0" border="0" class="oe-dialog-warning">
+ <tr>
+ <td><img src="/base/static/src/img/warning.png" class="oe-dialog-icon"/></td>
+ <td>
+ <p>
+ <t t-js="d">
+ var message = d.message ? d.message : d.error.data.fault_code;
+ d.html_error = context.engine.tools.html_escape(message)
+ .replace(/\n/g, '<br/>');
+ </t>
+ <t t-raw="html_error"/>
+ </p>
+ </td>
+ </tr>
+ </table>
+</t>
+<t t-name="DialogTraceback">
+ <pre><t t-esc="error.message"/></pre>
+ <hr/>
+ <pre><t t-esc="error.data.debug"/></pre>
+</t>
+<t t-name="SelectCreatePopup">
+ <div t-att-id="element_id">
+ <table style="width:100%">
+ <tr style="width:100%">
+ <td style="width:100%">
+ <div t-att-id="element_id + '_search'" style="width:100%"></div>
+ </td>
+ </tr>
+ <tr style="width:100%">
+ <td style="width:100%">
+ <div t-att-id="element_id + '_view_list'" style="width:100%"></div>
+ </td>
+ </tr>
+ </table>
+ <div t-att-id="element_id + '_view_form'" style="width:100%"></div>
</div>
</t>
-<t t-name="Many2XSelectPopup">
+<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="FormOpenPopup">
<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-att-id="element_id + '_view_form'" style="width:100%"></div>
</div>
</t>
-<t t-name="Many2XSelectPopup.search.buttons">
- <button type="button" class="oe_many2xselectpopup-search-new">New</button>
- <button type="button" class="oe_many2xselectpopup-search-close">Close</button>
+<t t-name="FormOpenPopup.form.buttons">
+ <button type="button" class="oe_formopenpopup-form-save">Save</button>
+ <button type="button" class="oe_formopenpopup-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>
+
+<t t-name="ExportView">
+ <a id="exportview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Export</a>
+</t>
+
+<t t-name="ExportTreeView">
+ <table class="view" style="background-color: #F3F3F3;">
+ <tr>
+ <td align="left">
+ This wizard will export all data that matches the current search criteria to a CSV file.
+ You can export all data or only the fields that can be reimported after modification.
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <table>
+ <tr>
+ <td class="label"><label>Export Type:</label></td>
+ <td>
+ <select id="import_compat" name="import_compat">
+ <option value="1">Import Compatible Export</option>
+ <option value="0">Export all Data</option>
+ </select>
+ </td>
+ <td class="label"><label>Export Format</label></td>
+ <td>
+ <select id="export_format" name="export_format">
+ <option value="csv">CSV</option>
+ <option value="xls">Excel</option>
+ </select>
+ </td>
+
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <table class="fields-selector-export">
+ <tr>
+ <th class="oe_view_title" valign="bottom">Available fields</th>
+ <th class="oe_view_title"></th>
+ <th class="oe_view_title">Fields to export
+ <a style="color: blue; text-decoration: none;" href="#" id="export_new_list">Save fields list</a>
+ <div id="savenewlist"></div>
+ <div id="ExistsExportList"></div>
+ </th>
+ </tr>
+ <tr>
+ <td class="fields-selector-left">
+ <div id="left_field_panel">
+ </div>
+ </td>
+ <td>
+ <table class="fields-selector-center">
+ <tr>
+ <td align="center">
+ <button id="add_field" class="button-export">Add</button>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">
+ <button id="remove_field" class="button-export">Remove</button>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">
+ <button id="remove_all_field" class="button-export">Remove All</button>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td class="fields-selector-right">
+ <select name="fields_list" id="fields_list" multiple="multiple"></select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</t>
+
+<t t-name="ExportTreeView-Secondary">
+ <table id="field-tree-structure" class="fields-selector-export" cellspacing="0" cellpadding="0">
+ <tr><th class="tree_header"> Name </th></tr>
+ <t t-call="ExportTreeView-Secondary.children"/>
+ </table>
</t>
-<t t-name="Many2XSelectPopup.form.buttons">
- <button type="button" class="oe_many2xselectpopup-form-save">Save</button>
- <button type="button" class="oe_many2xselectpopup-form-close">Close</button>
+<t t-name="ExportTreeView-Secondary.children">
+ <t t-foreach="fields" t-as="field" >
+ <tr t-att-id="'treerow-' + field.id" class="row">
+ <td>
+ <table class="tree-grid" border="0">
+ <tr class="row">
+ <t t-foreach="(field.id).split('/')" t-as="level" >
+ <t t-if="(field.id).split('/')[0] != level">
+ <td width="18">&nbsp;</td>
+ </t>
+ </t>
+ <td valign="top" align="left" style="cursor: pointer;" width="18">
+ <t t-if="(field.children).length >= 1">
+ <t t-if="(field.id).split('/').length != 3">
+ <img t-att-id="'parentimg-' + field.id" src="/base/static/src/img/expand.gif" width="16" height="16" border="0"/>
+ </t>
+ </t>
+ </td>
+ <td id="tree-column" valign="middle" align="left" style="cursor: pointer;">
+ <a t-att-id="'export-' + field.id" t-att-string="field.string" href="javascript: void(0);" style="text-decoration: none;">
+ <t t-esc="field.string"/>
+ </a>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </t>
+</t>
+
+<t t-name="ExportNewList">
+ <tr>
+ <th><label>Save as:</label></th>
+ <td><input size="10" type="text" id="savelist_name"/></td>
+ <td><button class="button-export" id="add_export_list">Ok</button></td>
+ </tr>
+</t>
+
+<t t-name="Exists.ExportList">
+ <tr><th align="right"><label >Saved exports:</label></th></tr>
+ <tr align="left">
+ <td>
+ <select id="saved_export_list" style="width: 100%;">
+ <option></option>
+ <t t-foreach="existing_exports" t-as="export">
+ <option t-att-value="export.id"><t t-esc="export.name"/></option>
+ </t>
+ </select>
+ </td>
+ <td><button class="button-export" id="delete_export_list">Delete</button></td>
+ </tr>
</t>
</templates>