odoo/addons/base/static/src/xml/base.xml

565 lines
22 KiB
XML
Raw Normal View History

<?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>
<div id="oe_login" class="login"></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" width="100%" height="100%">
<div id="oe_app" class="oe-application"></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>
Database: <input type="text" name="db" value="trunk"/><br/>
Login: <input type="text" name="login" value="admin"/><br/>
Password: <input type="password" name="password" value="a"/><br/>
<input type="submit" name="submit" value="Login"/>
</form>
</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">
<ul>
<li t-foreach="data.children" t-as="menu">
<a href="#" t-att-data-menu="menu.id">
<span><t t-esc="menu.name"/></span>
</a>
</li>
</ul>
</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">
&lt;<t t-esc="header"/>&gt;
<a href="#" t-attf-id="menu_#{menu.id}">
<span><t t-esc="menu.name"/></span>
</a>
&lt;/<t t-esc="header"/>&gt;
<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-foreach="views" t-as="view">
<button type="button" t-att-data-view-type="view[1]">
<t t-esc="view[1]"/>
</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]}"/>
</t>
</td>
<td class="view-manager-main-sidebar">
</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 t-if="options.selectable">
<th t-if="actions_span" t-att-colspan="actions_span"
class="oe-actions">
<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.deletable">
Delete
</button>
</th>
<th t-att-colspan="columns_count - actions_span"
class="oe-list-pager">
<button type="button" data-pager-action="first">First</button>
<button type="button" data-pager-action="previous"
>&lt;&lt;</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">&gt;&gt;</button>
<button type="button" data-pager-action="last">Last</button>
</th>
</tr>
<tr t-if="options.header">
<th t-if="options.selectable"/>
<t t-foreach="columns" t-as="column">
<th t-if="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>
</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">
<th t-if="options.selectable" class="oe-record-selector">
<input type="checkbox"/>
</th>
<t t-foreach="columns" t-as="column">
<t t-set="attrs" t-value="column.attrs_for(row.data)"/>
<td t-if="column.invisible !== '1'" t-att-title="column.help"
class="oe-field-cell" t-att-data-field="column.id">
<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">
<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="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">
<!--<button type="button" class="oe_form_button_save">Save</button>-->
<button type="button" class="oe_form_button_save_edit">Save &amp; 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">
<button type="button" data-pager-action="first">First</button>
<button type="button" data-pager-action="previous">&lt;&lt;</button>
<span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span>
<button type="button" data-pager-action="next">&gt;&gt;</button>
<button type="button" data-pager-action="last">Last</button>
</div>
</div>
<t t-raw="frame.render()"/>
</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="2" cellspacing="2" 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 ? '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 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="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">
<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="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="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 style="text-align:right;">
<input type="submit" value="Search"/>
<input type="reset" value="Clear"/>
</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" 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="'Custom Filters'"/>
<t t-set="content">
<div class="searchview_extended_groups_list"/>
<button class="searchview_extended_add_group"
type="button"><span>Add group of conditions</span></button>
</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>
<button class="searchview_extended_delete_group"
type="button"><span>Delete this group of conditions</span></button>
<div class="searchview_extended_propositions_list">
</div>
<button class="searchview_extended_add_proposition" type="button"><span>Add condition</span></button>
</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"/>
<button class="searchview_extended_delete_prop"
type="button"><span>Delete this condition</span></button>
</div>
</t>
<t t-name="SearchView.extended_search.proposition.char">
<input t-att-id="element_id"/>
</t>
<t t-name="ViewManager.sidebar">
<div t-att-id="element_id" class="sidebar-main-div open-sidebar">
</div>
</t>
<t t-name="ViewManager.sidebar.internal">
<t t-js="d">
d.the_condition = d.sections.length &gt; 0 &amp;&amp; d._.detect(d.sections, function(x) {
return x.elements.length &gt; 0;
}) != undefined
</t>
<t t-if="the_condition">
<a class="toggle-sidebar"></a>
<div t-att-id="element_id" class="sidebar-sub-div">
<div class="sidebar-displaying-div">
<t t-set="i" t-value="1-1"/> <!-- al do stupid things -->
<t t-foreach="sections" t-as="section">
<t t-if="section.elements.length &gt; 0">
<h2><t t-esc="section.label"/></h2>
<ul>
<t t-set="j" t-value="1-1"/>
<t t-foreach="section.elements" t-as="element">
<li><a t-att-data-i="i" t-att-data-j="j" href="#"><t t-esc="element.name"/></a></li>
<t t-set="j" t-value="j+1"/>
</t>
</ul>
</t>
<t t-set="i" t-value="i+1"/>
</t>
</div>
</div>
</t>
</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>
</templates>