</div>
</div>
</t>
-<t t-name="Interface">
- <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" class="main_table">
- <tr>
- <td colspan="2" valign="top">
- <div id="oe_header" class="header"></div>
- <div id="oe_menu" class="menu"></div>
- </td>
- </tr>
- <tr>
- <td colspan="2" valign="top" height="100%">
- <table cellspacing="0" cellpadding="0" border="0" height="100%" width="100%">
- <tr>
- <td valign="top" id="oe_secondary_menu" class="secondary_menu"></td>
- <td valign="top" class="oe-application-container">
- <div id="oe_app" class="oe-application">
- </div>
- </td>
- </tr>
- </table>
- </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</a></p>
+<t t-name="WebClient">
+ <div class="oe_webclient">
+ <div class="oe_topbar">
+ <div class="oe_menu_placeholder"/>
+ <div class="oe_user_menu_placeholder"/>
+ <div class="oe_systray"/>
+ </div>
+ <div class="oe_leftbar">
+ <a href="#" class="oe_logo"><img t-att-src='_s + "/web/static/src/img/logo.png"'/></a>
+
+ <div class="oe_secondary_menus_container"/>
+
+ <div class="oe_footer">
+ Powered by <a href="http://www.openerp.com"><span>Open</span>ERP</a>
</div>
- </td>
- </tr>
- </table>
+ </div>
+ <div class="oe_application"/>
+ </div>
</t>
<t t-name="Loading">
<div id="oe_loading">
<option t-att-value="db"><t t-esc="db"/></option>
</t>
</select>
- <input t-if="!db_list" name="drop_db" class="required"
+ <input t-if="!db_list" name="backup_db" class="required"
type="text" autofocus="autofocus"/>
</td>
</tr>
<div id="oe_db_options" class="oe_db_options"></div>
</div>
</t>
-<t t-name="Header">
- <div>
- <a t-att-href="'/' + widget.qs" class="company_logo_link">
- <div class="company_logo" />
- </a>
- </div>
-</t>
-<t t-name="Header-content">
- <h1 class="header_title">
- <t t-esc="user.company_id[1]"/> (<t t-esc="widget.session.db"/>)<br/>
- <small class="username"><t t-esc="user.name"/></small>
- </h1>
- <div class="header_corner">
- <ul class="block">
- <li>
- <a t-att-href="'/' + widget.qs" title="Home" class="home"><img t-att-src='_s + "/web/static/src/img/header-home.png"' width="16" height="16" border="0"/></a>
- </li>
- <li class="preferences">
- <a href="javascript:void(0)" title="Preferences" class="preferences"><img t-att-src='_s + "/web/static/src/img/header-preferences.png"' width="16" height="16" border="0"/></a>
- </li>
- <li>
- <a href="javascript:void(0)" title="About" class="about"><img t-att-src='_s + "/web/static/src/img/header-about.png"' width="16" height="16" border="0"/></a>
- </li>
- </ul>
- <div class="block">
- <a href="javascript:void(0)" class="logout">LOGOUT</a>
- </div>
- </div>
- <div class="oe-shortcuts"> </div>
-</t>
-<ul t-name="Shortcuts">
- <li t-foreach="shortcuts" t-as="shortcut"
- t-att-data-id="shortcut.res_id"
- t-att-data-shortcut-id="shortcut.id"
- ><t t-esc="shortcut.name"/></li>
-</ul>
<t t-name="Menu">
- <table align="center">
- <tr>
- <td t-foreach="widget.data.data.children" t-as="menu">
- <a href="#" t-att-data-menu="menu.id">
- <t t-esc="menu.name"/>
- </a>
- </td>
- </tr>
- </table>
+ <ul class="oe_menu" t-if="widget.data">
+ <li t-foreach="widget.data.data.children" t-as="menu">
+ <t t-call="Menu.secondary.link"/>
+ </li>
+ </ul>
</t>
<t t-name="Menu.secondary">
- <div t-attf-class="oe_toggle_secondary_menu">
- <span class="oe_menu_fold" title="Fold menu"><t t-raw="'&laquo;'"/></span>
- <span class="oe_menu_unfold" title="Unfold menu"><t t-raw="'&raquo;'"/></span>
- </div>
<div t-foreach="widget.data.data.children" t-as="menu" style="display: none" class="oe_secondary_menu" t-att-data-menu-parent="menu.id">
<t t-foreach="menu.children" t-as="menu">
- <t t-set="classname" t-translation="off">oe_secondary_menu_item</t>
- <t t-set="level" t-value="0"/>
- <t t-call="Menu.secondary.children"/>
+ <div class="oe_secondary_menu_section">
+ <t t-esc="menu.name"/>
+ <!--
+ Shall the section be still clickable ?
+ <t t-call="Menu.secondary.link"/>
+ -->
+ </div>
+ <t t-call="Menu.secondary.submenu"/>
</t>
</div>
</t>
-<t t-name="Menu.secondary.children">
- <t t-set="level" t-value="level + 1"/>
- <a href="#" t-att-id="menu.children.length ? 'menu_' + menu.id : undefined"
- t-att-class="classname + (menu.children.length ? ' submenu' : ' leaf') + (menu_first and level == 1 ? ' opened' : '')"
- t-att-data-menu="menu.children.length ? undefined : menu.id">
- <span t-attf-style="padding-left: #{(level - 2) * 20}px"> <t t-esc="menu.name"/></span>
+<t t-name="Menu.secondary.submenu">
+ <ul t-if="menu.children.length" class="oe_secondary_submenu">
+ <li t-foreach="menu.children" t-as="menu">
+ <t t-call="Menu.secondary.link"/>
+ <!--<span class="oe_menu_label">8</span>-->
+ <t t-call="Menu.secondary.submenu"/>
+ </li>
+ </ul>
+</t>
+<t t-name="Menu.secondary.link">
+ <a href="#"
+ t-att-class="menu.children.length ? 'oe_menu_toggler' : 'oe_menu_leaf'"
+ t-att-data-menu="menu.id"
+ t-att-data-action-model="menu.action ? menu.action.split(',')[0] : ''"
+ t-att-data-action-id="menu.action ? menu.action.split(',')[1] : ''">
+ <t t-esc="menu.name"/>
</a>
- <div t-attf-class="oe_secondary_submenu" t-if="menu.children.length" t-att-style="menu_first and level == 1 ? undefined : 'display: none'">
- <t t-foreach="menu.children" t-as="menu">
- <t t-set="classname" t-translation="off">oe_secondary_submenu_item</t>
- <t t-call="Menu.secondary.children"/>
- </t>
- </div>
</t>
+
+<t t-name="UserMenu">
+ <ul class="oe_user_menu oe_topbar_item">
+ <li class="oe_dropdown">
+ <a href="#" class="oe_dropdown_toggle">
+ <img class="oe_topbar_avatar" t-att-data-default-src="_s + '/web/static/src/img/topbar-avatar.png'"/>
+ <span class="oe_topbar_name"/>
+ </a>
+ <ul class="oe_dropdown_options">
+ <!--<li><a href="#" data-menu="profile">Profile</a></li>-->
+ <li><a href="#" data-menu="settings">Settings</a></li>
+ <li><a href="#" data-menu="logout">Log out</a></li>
+ <li><hr/></li>
+ <li><a href="#" data-menu="about">About OpenERP</a></li>
+ <li><hr/></li>
+ </ul>
+ </li>
+ </ul>
+</t>
+<t t-name="UserMenu.shortcut">
+ <li t-foreach="shortcuts" t-as="shortcut">
+ <a href="#" data-menu="shortcut" t-att-data-id="shortcut.res_id" t-att-data-shortcut-id="shortcut.id">
+ <t t-esc="shortcut.name"/>
+ </a>
+ </li>
+</t>
+
<t t-name="ViewManager">
<table class="view-manager-main-table" cellpadding="0" cellspacing="0">
<tbody>
<option t-if="view_manager.searchview" value="edit" data-model="ir.ui.view" t-att-data-id="view_manager.searchview.view_id">Edit SearchView</option>
<option t-if="view_manager.action" value="edit" t-att-data-model="view_manager.action.type" t-att-data-id="view_manager.action.id">Edit Action</option>
<option value="edit_workflow">Edit Workflow</option>
- <option value="customize_object">Customize Object</option>
</t>
</t>
<t t-name="ViewManagerDebugViewLog">
t-att-data-id="record.id" t-att-data-level="level + 1">
<t t-set="children" t-value="record[children_field]"/>
<t t-set="class" t-value="children and children.length ? 'treeview-tr' : 'treeview-td'"/>
+ <t t-set="rank" t-value="'oe-treeview-first'"/>
<t t-set="style" t-value="'background-position: ' + 19*level + 'px; padding-left: ' + 19*level + 'px;'"/>
<td t-foreach="fields_view" t-as="field"
t-if="!field.attrs.modifiers.tree_invisible"
t-att-data-id="record.id"
t-att-style="color_for(record) + style "
- t-att-class="(fields[field.attrs.name].type === 'float') or (fields[field.attrs.name].type === 'integer')
- ? (class +' ' +'oe-number') : class">
+ t-attf-class="#{class} #{rank} #{(fields[field.attrs.name].type === 'float') or (fields[field.attrs.name].type === 'integer') ? 'oe-number' : ''}">
<span t-if="!field.attrs.modifiers.invisible" >
<t t-esc="render(record[field.attrs.name], fields[field.attrs.name])" />
</span>
<t t-set="class" t-value="'treeview-td'"/>
+ <t t-set="rank" t-value="''"/>
<t t-set="style" t-value="''"/>
</td>
</tr>
</td>
</tr>
<t t-name="ListView.row.form">
- <t t-raw="frame.render()"/>
+ <th t-if="widget.editable_list.options.selectable"></th>
+ <th t-if="widget.editable_list.options.isClarkGable"></th>
</t>
<t t-name="FormView">
- <div class="oe_form_header">
- <div class="oe_form_buttons" t-if="widget.options.action_buttons !== false">
- <button type="button" class="oe_button oe_form_button_save">Save</button>
- <button type="button" class="oe_button oe_form_button_cancel">Cancel</button>
- </div>
- <div class="oe_form_pager" t-if="widget.options.pager !== false">
- <t t-call="ViewPager">
- <span class="oe_pager_index">0</span><span class="oe_pager_separator"> / </span><span class="oe_pager_count">0</span>
- </t>
+ <div class="oe_formview">
+ <div class="oe_form_header">
+ <div class="oe_form_buttons" t-if="widget.options.action_buttons !== false">
+ <button type="button" class="oe_button oe_form_button_save">Save</button>
+ <button type="button" class="oe_button oe_form_button_cancel">Cancel</button>
+ </div>
+ <div class="oe_form_pager" t-if="widget.options.pager !== false">
+ <t t-call="ViewPager">
+ <span class="oe_pager_index">0</span><span class="oe_pager_separator"> / </span><span class="oe_pager_count">0</span>
+ </t>
+ </div>
</div>
+ <div class="oe_form_content"/>
</div>
</t>
<t t-name="One2Many.formview" t-extend="FormView">
</tr>
</table>
</form>
-<t t-name="Widget">
- Unhandled widget
- <t t-js="dict">console.warn('Unhandled widget', dict.widget);</t>
-</t>
-<t t-name="WidgetFrame">
- <table border="0" width="100%" cellpadding="0" cellspacing="0" class="oe_frame oe_forms">
- <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"
- t-att-valign="td.table ? 'top' : undefined"
- t-attf-class="oe_form_frame_cell #{td.classname} #{td.element_class}"
- >
- <t t-raw="td.render()"/>
- </td>
- </t>
- </tr>
- </table>
-</t>
-<t t-name="WidgetFrame.readonly" t-extend="WidgetFrame">
- <t t-jquery=">table">
- this.attr('class', this.attr('class')+' oe_form_readonly');
- </t>
-</t>
-<t t-name="WidgetGroup">
- <t t-if="widget.string">
- <fieldset class="oe_group_box">
- <legend><t t-esc="widget.string"/></legend>
- <t t-call="WidgetFrame"/>
- </fieldset>
+
+<t t-name="FormRenderingGroup">
+ <t t-set="table">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"/>
</t>
- <t t-if="!widget.string">
- <t t-call="WidgetFrame"/>
+ <t t-if="string">
+ <fieldset class="oe_group_box">
+ <legend><t t-esc="string"/></legend>
+ <t t-raw="table"/>
+ </fieldset>
</t>
-</t>
-<t t-name="WidgetNotebook">
- <ul>
- <li t-foreach="widget.pages" t-as="page">
- <a href="#">
- <t t-esc="page.string"/>
- </a>
- </li>
- </ul>
- <t t-foreach="widget.pages" t-as="page">
- <div t-att-class="page.element_class">
- </div>
+ <t t-if="!string">
+ <t t-raw="table"/>
</t>
</t>
-<t t-name="WidgetNotebook.tooltip">
- <t t-foreach="widget.pages" t-as="page">
- <div class="oe_tooltip_string">
- Notebook Page "<t t-esc="page.string"/>"
- </div>
- <ul class="oe_tooltip_technical">
- <li data-item="modifiers">
- <span class="oe_tooltip_technical_title">Modifiers:</span>
- <t t-esc="page.node.attrs.modifiers"/>
+<t t-name="FormRenderingNotebook">
+ <div class="oe_form_notebook">
+ <ul>
+ <li t-foreach="pages" t-as="page">
+ <a t-attf-href="##{page.id}">
+ <t t-esc="page.string"/>
+ </a>
</li>
</ul>
- </t>
+ </div>
</t>
-<t t-name="WidgetNotebookPage">
- <t t-call="WidgetFrame"/>
+<t t-name="FormRenderingNotebookPage">
+ <div class="oe_form_notebook_page" t-att-id="id"/>
</t>
-<t t-name="WidgetSeparator">
- <div t-if="widget.orientation !== 'vertical'" t-att-class="'separator ' + widget.orientation">
- <t t-esc="widget.string"/>
+<t t-name="FormRenderingSeparator">
+ <div class="oe_horizontal_separator">
+ <t t-esc="string"/>
</div>
</t>
-<t t-name="WidgetLabel">
- <label t-att-for="widget.element_id"
- t-attf-class="oe_label#{widget.help ? '_help' : ''} oe_align_#{widget.align}">
- <t t-esc="widget.string"/>
- <span t-if="widget.help">?</span>
- <t t-if="widget.string and widget.node.tag != 'label'">:</t>
+<t t-name="FormRenderingLabel">
+ <label t-att-for="for"
+ t-att-title="help"
+ t-attf-class="oe_label#{help ? '_help' : ''} oe_align_#{align}">
+ <t t-esc="string"/>
+ <span t-if="help">?</span>
+ :
</label>
</t>
+
+<t t-name="Widget">
+ Unhandled widget
+ <t t-js="dict">console.warn('Unhandled widget', dict.widget);</t>
+</t>
<t t-name="WidgetLabel.tooltip">
<div class="oe_tooltip_string" t-if="widget.string">
- <t t-esc="widget.string"/> <t t-if="debug and widget.nolabel">(nolabel)</t>
+ <t t-esc="widget.node.attrs.string"/> <t t-if="debug and widget.nolabel">(nolabel)</t>
</div>
<p t-if="widget.help" class="oe_tooltip_help"><t t-esc="widget.help"/></p>
<ul t-if="debug" class="oe_tooltip_technical">
<span class="oe_tooltip_technical_title">Modifiers:</span>
<t t-esc="widget.node.attrs.modifiers"/>
</li>
+ <li t-if="widget.field and widget.field.change_default" data-item="change_default">
+ <span class="oe_tooltip_technical_title">Change default:</span>
+ Yes
+ </li>
<li t-if="widget.node.attrs.on_change" data-item="on_change">
<span class="oe_tooltip_technical_title">On change:</span>
<t t-esc="widget.node.attrs.on_change"/>
</li>
</ul>
</t>
-<t t-name="WidgetParagraph">
- <p t-attf-class="oe_form_paragraph oe_align_#{widget.align}"><t t-esc="widget.string"/></p>
-</t>
<t t-name="FieldChar">
- <input t-att-type="widget.password ? 'password' : 'text'" size="1"
- t-att-name="widget.name"
- t-att-id="widget.element_id"
- t-attf-class="field_#{widget.type} #{_(['integer', 'float', 'float_time']).contains(widget.type) ? 'oe-number' : ''}"
- style="width: 100%"
- /><img class="oe_field_translate oe_input_icon" t-if="widget.field.translate" t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
+ <div t-attf-class="oe_form_field_#{type}">
+ <input t-att-type="widget.password ? 'password' : 'text'" size="1"
+ t-att-name="widget.name"
+ t-att-id="widget.node.attrs.id"
+ t-attf-class="field_#{widget.type} #{_(['integer', 'float', 'float_time']).contains(widget.type) ? 'oe-number' : ''}"
+ style="width: 100%"
+ /><img class="oe_field_translate oe_input_icon" t-if="widget.field.translate" t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
+ </div>
</t>
<t t-name="FieldChar.readonly">
<div
</t>
<t t-name="FieldURI.readonly">
<div>
- <a href="#" class="oe_form_uri">#</a>
+ <a href="#" class="oe_form_uri"/>
</div>
</t>
<t t-name="FieldEmail">
- <table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <table t-attf-class="oe_form_field_#{type}" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td width="100%">
<t t-call="FieldChar"/>
</table>
</t>
<t t-name="FieldUrl">
- <table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <table t-attf-class="oe_form_field_#{type}" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td width="100%">
<t t-call="FieldChar"/>
</table>
</t>
<t t-name="FieldText">
- <textarea rows="6"
- t-att-name="widget.name"
- t-att-id="widget.element_id"
- t-attf-class="field_#{widget.type}"
- style="width: 100%"
- ></textarea><img class="oe_field_translate oe_input_icon" t-if="widget.field.translate" t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
+ <div t-attf-class="oe_form_field_#{type}">
+ <textarea rows="6"
+ t-att-name="widget.name"
+ t-attf-class="field_#{widget.type}"
+ style="width: 100%"
+ ></textarea><img class="oe_field_translate oe_input_icon" t-if="widget.field.translate" t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
+ </div>
</t>
<t t-name="web.datetimepicker">
- <div class="oe_datepicker_root">
+ <div class="oe_datepicker_root" t-attf-class="oe_form_field_#{type}">
<input type="text" size="1" class="oe_datepicker_container" disabled="disabled" style="display: none;"/>
<input type="text" size="1" style="width: 100%"
t-att-name="widget.name"
</div>
</t>
<t t-name="FieldSelection">
- <select
- t-att-name="widget.name"
- t-att-id="widget.element_id"
- t-attf-class="field_#{widget.type}"
- style="width: 100%">
- <t t-foreach="widget.values" t-as="option">
- <option><t t-esc="option[1]"/></option>
- </t>
- </select>
+ <div t-attf-class="oe_form_field_#{type}">
+ <select
+ t-att-name="widget.name"
+ t-att-id="widget.node.attrs.id"
+ style="width: 100%">
+ <t t-foreach="widget.values" t-as="option">
+ <option><t t-esc="option[1]"/></option>
+ </t>
+ </select>
+ </div>
</t>
<t t-name="FieldMany2One">
- <table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <table t-attf-class="oe_form_field_#{type}" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td width="100%" valign="top">
<t t-call="FieldChar"/>
</tr>
</table>
</t>
+<t t-name="FieldMany2One_readonly">
+ <a href="#" class="oe_form_uri"/>
+</t>
<t t-name="FieldMany2One.context_menu">
<ul>
<li t-att-id="widget.cm_id + '_open'" style="color:grey" class="oe_m2o_menu_item_mandatory">Open...</li>
<t t-name="FieldOne2Many">
</t>
<t t-name="FieldMany2Many">
- <div t-att-id="widget.list_id"></div>
+ <div t-attf-class="oe_form_field_#{type}" t-att-id="widget.list_id"></div>
</t>
<t t-name="FieldReference">
- <table border="0" width="100%" cellpadding="0" cellspacing="0" class="oe_frame oe_forms">
+ <table t-attf-class="oe_form_field_#{type}" border="0" width="100%" cellpadding="0" cellspacing="0" class="oe_frame oe_forms">
<tr>
- <td t-attf-class="oe_form_frame_cell oe_form_selection #{widget.selection.element_class}">
- <t t-raw="widget.selection.render()"/>
+ <td t-attf-class="oe_form_frame_cell oe_form_selection oe_form_view_reference_selection">
</td>
- <td t-attf-class="oe_form_frame_cell oe_form_many2one #{widget.m2o.element_class}" nowrap="true" style="display: none">
- <t t-raw="widget.m2o.render()"/>
+ <td t-attf-class="oe_form_frame_cell oe_form_many2one oe_form_view_reference_m2o" nowrap="true" style="display: none">
</td>
</tr>
</table>
</t>
<t t-name="FieldBoolean">
- <input type="checkbox"
- t-att-name="widget.name"
- t-att-id="widget.element_id"
- t-attf-class="field_#{widget.type}"/>
+ <div t-attf-class="oe_form_field_#{type}">
+ <input type="checkbox"
+ t-att-name="widget.name"
+ t-attf-class="field_#{widget.type}"/>
+ </div>
</t>
<t t-name="FieldProgressBar">
- <div t-opentag="true" class="oe-progressbar">
+ <div t-attf-class="oe_form_field_#{type}" t-opentag="true">
<span></span>
</div>
</t>
<t t-name="FieldBinaryImage">
- <table cellpadding="0" cellspacing="0" border="0">
+ <table t-attf-class="oe_form_field_#{type}" cellpadding="0" cellspacing="0" border="0">
<tr>
<td align="center">
<img t-att-src='_s + "/web/static/src/img/placeholder.png"' class="oe-binary-image"
</table>
</t>
<t t-name="FieldBinaryFile">
- <table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <table t-attf-class="oe_form_field_#{type}" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td width="100%">
<input type="text" size="1" readonly="readonly"
</table>
</t>
<t t-name="WidgetButton">
- <button type="button" class="oe_button">
- <img t-if="widget.node.attrs.icon" t-att-src="_s + '/web/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>
+ <div t-attf-class="oe_form_field_#{type}">
+ <button type="button" class="oe_button">
+ <img t-if="widget.node.attrs.icon" t-att-src="_s + '/web/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>
+ </div>
</t>
<t t-name="WidgetButton.tooltip" t-extend="WidgetLabel.tooltip">
<t t-jquery="div.oe_tooltip_string" t-operation="replace">
<option class="oe-filters-title" value="">Filters</option>
<optgroup label="-- Filters --">
<t t-foreach="filters" t-as="filter">
- <option t-attf-value="get:#{filter_index}"><t t-esc="filter.name"/></option>
+ <option t-attf-value="get:#{filter_index}"
+ t-att-disabled="filter.disabled and 'disabled'"
+ t-att-title="filter.disabled and disabled_filter_message">
+ <t t-esc="filter.name"/>
+ </option>
</t>
</optgroup>
<optgroup label="-- Actions --">
<span t-if="attrs.help">?</span>
</label>
<div t-att-style="style">
- <span t-att-id="element_id"></span>
+ <span t-att-id="element_id"/>
<t t-if="filters.length" t-raw="filters.render(defaults)"/>
</div>
</t>
<td t-if="edited and !options.deletable" class="oe-listview-padding"/>
</t>
</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'})
- .html(' ')))
- .unwrap();
+<t t-name="ListView.row.frame">
+ <t 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-valign="td.table ? 'top' : undefined"
+ t-attf-class="oe_form_frame_cell #{td.classname} #{td.element_class} oe-field-cell"
+ >
+ <t t-raw="td.render()"/>
+ </td>
+ </t>
</t>
+ <td>
+ <button class="oe-edit-row-save" type="button"> </button>
+ </td>
</t>
<t t-name="view_editor">
<table class="oe_view_editor">
</table>
</t>
<t t-name="view_editor.row">
- <tr class="oe_view_editor_row" t-att-id="'viewedit-' + rec.id" t-att-level="rec.level" t-foreach="data" t-as="rec">
- <td class="oe_view_editor_colum" width="85%">
- <table class="oe_view_editor_tree_grid">
+ <tr t-att-id="'viewedit-' + rec.id" t-att-level="rec.level" t-foreach="data" t-as="rec">
+ <td width="90%">
+ <table class="oe_view_editor_field">
<tr>
<td width="16px" t-att-style="'background-position: ' + 20*rec.level + 'px; padding-left: ' + 20*rec.level + 'px'">
<img t-if="rec.child_id.length" t-att-id="'parentimg-' + rec.id"
</tr>
</table>
</td>
- <td align="left" class="oe_view_editor_colum" width="15%">
- <table width="100%">
- <tr>
- <td width="20%">
- <img t-if="rec.att_list.length"
- id="side-add" src="/web/static/src/img/icons/gtk-add.png" style="cursor: pointer;"/>
- </td>
- <td width="20%">
- <img id="side-remove" src="/web/static/src/img/icons/gtk-remove.png" style="cursor: pointer;"/>
- </td>
- <td width="20%">
- <img t-if="rec.att_list.length and !_.include(no_properties, rec.att_list[0])"
- id="side-edit" src="/web/static/src/img/icons/gtk-edit.png" style="cursor: pointer;"/>
- </td>
- <td width="20%">
- <img t-if="rec.att_list.length"
- id="side-up" src="/web/static/src/img/icons/gtk-go-up.png" style="cursor: pointer;"/>
- </td>
- <td width="20%">
- <img t-if="rec.att_list.length"
- id="side-down" src="/web/static/src/img/icons/gtk-go-down.png" style="cursor: pointer;"/>
- </td>
- </tr>
- </table>
+ <td width="2%">
+ <img t-if="rec.att_list.length"
+ id="side-add" src="/web/static/src/img/icons/gtk-add.png" style="cursor: pointer;"/>
+ </td>
+ <td width="2%">
+ <img id="side-remove" src="/web/static/src/img/icons/gtk-remove.png" style="cursor: pointer;"/>
+ </td>
+ <td width="2%">
+ <img t-if="rec.att_list.length and !_.include(no_properties, rec.att_list[0])"
+ id="side-edit" src="/web/static/src/img/icons/gtk-edit.png" style="cursor: pointer;"/>
+ </td>
+ <td width="2%">
+ <img t-if="rec.att_list.length"
+ id="side-up" src="/web/static/src/img/icons/gtk-go-up.png" style="cursor: pointer;"/>
+ </td>
+ <td width="2%">
+ <img t-if="rec.att_list.length"
+ id="side-down" src="/web/static/src/img/icons/gtk-go-down.png" style="cursor: pointer;"/>
</td>
<t t-if="rec.child_id.length">
<t t-set="data" t-value="rec.child_id"/>