1 <?xml version="1.0" encoding="utf-8"?>
6 <template id="web.assets_common">
7 <script type="text/javascript" src="/web/static/lib/es5-shim/es5-shim.min.js"></script>
8 <script type="text/javascript" src="/web/static/lib/underscore/underscore.js"></script>
9 <script type="text/javascript" src="/web/static/lib/underscore.string/lib/underscore.string.js"></script>
10 <script type="text/javascript" src="/web/static/lib/spinjs/spin.js"></script>
13 <script type="text/javascript" src="/web/static/lib/jquery/jquery.js"></script>
14 <script type="text/javascript" src="/web/static/lib/jquery.blockUI/jquery.blockUI.js"></script>
15 <script type="text/javascript" src="/web/static/lib/jquery.hotkeys/jquery.hotkeys.js"></script>
16 <script type="text/javascript" src="/web/static/lib/jquery.placeholder/jquery.placeholder.js"></script>
17 <script type="text/javascript" src="/web/static/lib/jquery.timeago/jquery.timeago.js"></script>
18 <script type="text/javascript" src="/web/static/lib/jquery.form/jquery.form.js"></script>
20 <script type="text/javascript" src="/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js"></script>
22 <script type="text/javascript" src="/web/static/lib/qweb/qweb2.js"></script>
23 <script type="text/javascript" src="/web/static/src/js/openerpframework.js"></script>
24 <script type="text/javascript" src="/web/static/src/js/tour.js"></script>
25 <script type="text/javascript" src="/web/static/test/menu.js"></script>
27 <link rel="stylesheet" href="/web/static/lib/fontawesome/css/font-awesome.css"/>
30 <template id="jqueryui_conflict" name="jquery.ui.conflict">
31 <!-- TODO: get rid of this hack once jQuery.ui is removed -->
32 <script type="text/javascript" charset="utf-8">
33 $.fn.bstooltip = $.fn.tooltip;
34 $.fn.bsbutton = $.fn.button;
37 <script type="text/javascript" charset="utf-8">
38 $.fn.tooltip = $.fn.bstooltip;
39 $.fn.button = $.fn.bsbutton;
43 <template id="web.assets_backend">
44 <!-- jQuery addons -->
45 <script type="text/javascript" src="/web/static/lib/jquery.validate/jquery.validate.js"></script>
46 <script type="text/javascript" src="/web/static/lib/jquery.autosize/jquery.autosize.js"></script>
47 <script type="text/javascript" src="/web/static/lib/jquery.scrollTo/jquery.scrollTo-min.js"></script>
49 <link rel="stylesheet" href="/web/static/lib/cleditor/jquery.cleditor.css"/>
50 <script type="text/javascript" src="/web/static/lib/cleditor/jquery.cleditor.js"></script>
52 <link rel="stylesheet" href="/web/static/lib/jquery.textext/jquery.textext.css"/>
53 <script type="text/javascript" src="/web/static/lib/jquery.textext/jquery.textext.js"></script>
55 <link rel="stylesheet" href="/web/static/lib/select2/select2.css"/>
56 <script type="text/javascript" src="/web/static/lib/select2/select2.js"></script>
58 <link rel="stylesheet" href="/web/static/lib/bootstrap/css/bootstrap.css"/>
59 <script type="text/javascript" src="/web/static/lib/bootstrap/js/bootstrap.js"></script>
61 <!-- Datetime Picker -->
62 <link rel="stylesheet" href="/web/static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css"/>
63 <script type="text/javascript" src="/web/static/lib/moment/moment.js"></script>
64 <script type="text/javascript" src="/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js"></script>
67 <link rel="stylesheet" href="/web/static/lib/jquery.ui.bootstrap/css/custom-theme/jquery-ui-1.9.0.custom.css"/>
69 <t t-call="web.jqueryui_conflict">
70 <script type="text/javascript" src="/web/static/lib/jquery.ui/js/jquery-ui-1.9.1.custom.js"></script>
73 <link rel="stylesheet" href="/web/static/lib/jquery.ui.notify/css/ui.notify.css"/>
74 <script type="text/javascript" src="/web/static/lib/jquery.ui.notify/js/jquery.notify.js"></script>
78 <script type="text/javascript" src="/web/static/lib/backbone/backbone.js"></script>
81 <script type="text/javascript" charset="utf-8">
82 openerp._modules = <t t-raw="get_modules_order()"/>;
84 <link rel="stylesheet" href="/web/static/src/css/base.css"/>
85 <link rel="stylesheet" href="/web/static/src/css/data_export.css"/>
86 <link rel="stylesheet" href="/base/static/src/css/modules.css"/>
88 <script type="text/javascript" src="/web/static/lib/py.js/lib/py.js"></script>
89 <script type="text/javascript" src="/web/static/src/js/boot.js"></script>
90 <script type="text/javascript" src="/web/static/src/js/testing.js"></script>
91 <script type="text/javascript" src="/web/static/src/js/pyeval.js"></script>
92 <script type="text/javascript" src="/web/static/src/js/core.js"></script>
93 <script type="text/javascript" src="/web/static/src/js/formats.js"></script>
94 <script type="text/javascript" src="/web/static/src/js/chrome.js"></script>
95 <script type="text/javascript" src="/web/static/src/js/views.js"></script>
96 <script type="text/javascript" src="/web/static/src/js/data.js"></script>
97 <script type="text/javascript" src="/web/static/src/js/data_export.js"></script>
98 <script type="text/javascript" src="/web/static/src/js/search.js"></script>
99 <script type="text/javascript" src="/web/static/src/js/view_list.js"></script>
100 <script type="text/javascript" src="/web/static/src/js/view_form.js"></script>
101 <script type="text/javascript" src="/web/static/src/js/view_list_editable.js"></script>
102 <script type="text/javascript" src="/web/static/src/js/view_pivot.js"></script>
103 <script type="text/javascript" src="/web/static/src/js/view_tree.js"></script>
104 <script type="text/javascript" src="/base/static/src/js/apps.js"></script>
108 <template id="web.assets_webclient_manifest">
109 <!-- This bundle can be used for module manifest asset declaration backward compatibility -->
110 <t t-foreach="manifest_list('css')" t-as="css_file">
111 <link rel="stylesheet" t-att-href="css_file"/>
113 <t t-foreach="manifest_list('js')" t-as="js_file">
114 <script type="text/javascript" t-att-src="js_file"></script>
118 <template id="web.layout" name="Web layout"><!DOCTYPE html>
119 <html style="height: 100%">
121 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
122 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
124 <link rel="shortcut icon" href="/web/static/src/img/favicon.ico" type="image/x-icon"/>
125 <link rel="stylesheet" href="/web/static/src/css/full.css" />
126 <t t-raw="head or ''"/>
128 <body t-att-class="body_classname">
134 <template id="web.menu">
135 <ul class="nav navbar-nav navbar-left oe_application_menu_placeholder">
136 <li t-foreach="menu_data['children']" t-as="menu">
137 <t t-call="web.menu_link"/>
139 <li id="menu_more_container" class="dropdown" style="display: none;">
140 <a href="#" class="dropdown-toggle" data-toggle="dropdown">More <b class="caret"></b></a>
141 <ul id="menu_more" class="dropdown-menu"></ul>
145 <ul class="nav navbar-nav navbar-right oe_user_menu_placeholder" style="display: none;"/>
146 <ul class="nav navbar-nav navbar-right oe_systray" style="display: none;"/>
148 <template id="web.menu_secondary">
149 <a class="oe_logo" t-att-href="'/web/?debug' if debug else '/web'">
150 <span class="oe_logo_edit">Edit Company data</span>
151 <img src='/web/binary/company_logo'/>
153 <div class="oe_secondary_menus_container">
154 <t t-foreach="menu_data['children']" t-as="menu">
155 <div style="display: none" class="oe_secondary_menu" t-att-data-menu-parent="menu['id']">
156 <t t-foreach="menu['children']" t-as="menu">
157 <div class="oe_secondary_menu_section">
158 <t t-esc="menu['name']"/>
160 <t t-call="web.menu_secondary_submenu"/>
165 <div class="oe_footer">
166 Powered by <a href="http://www.openerp.com" target="_blank"><span>Odoo</span></a>
169 <template id="web.menu_secondary_submenu">
170 <ul t-if="menu['children']" class="oe_secondary_submenu nav nav-pills nav-stacked">
171 <li t-foreach="menu['children']" t-as="menu">
172 <t t-call="web.menu_link"/>
173 <t t-call="web.menu_secondary_submenu"/>
177 <template id="web.menu_link">
178 <t t-set="debug_param" t-value="'?&debug=' if debug else ''"/>
179 <a t-att-href="'/web%s#menu_id=%s&action=%s' % (debug_param, menu['id'], menu['action'] and menu['action'].split(',')[1] or '')"
180 t-att-class="'oe_menu_toggler' if menu.get('children') else 'oe_menu_leaf'"
181 t-att-data-menu="menu['id']"
182 t-att-data-action-model="menu['action'] and menu['action'].split(',')[0] or ''"
183 t-att-data-action-id="menu['action'] and menu['action'].split(',')[1] or ''">
184 <span class="oe_menu_text">
185 <t t-esc="menu['name']"/>
190 <template id="web.webclient_bootstrap" name="Webclient Bootstrap">
191 <t t-call="web.layout">
193 <t t-call-assets="web.assets_common"/>
194 <t t-call-assets="web.assets_backend"/>
195 <script type="text/javascript">
197 var s = new openerp.init();
202 var wc = new s.web.WebClient();
203 wc.setElement($(document.body));
210 <nav id="oe_main_menu_navbar" class="navbar navbar-inverse" role="navigation" groups="base.group_user,base.group_portal">
211 <div class="navbar-header">
212 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
213 <span class="icon-bar"></span>
214 <span class="icon-bar"></span>
215 <span class="icon-bar"></span>
218 <div class="navbar-collapse collapse" id="oe_main_menu_placeholder">
219 <t t-call="web.menu"/>
222 <div class="openerp openerp_webclient_container oe_webclient">
223 <div class="oe_leftbar" groups="base.group_user,base.group_portal">
224 <t t-call="web.menu_secondary"/>
225 </div><div class="oe_application"/>
230 <template id="web.login_layout" name="Login Layout">
231 <t t-call="web.layout">
233 <link href="/web/static/src/css/base.css" rel="stylesheet"/>
234 <link href="/web/static/lib/bootstrap/css/bootstrap.css" rel="stylesheet"/>
236 <t t-set="body_classname" t-value="'oe_single_form'"/>
237 <div class="oe_single_form_container modal-content">
238 <div class="oe_single_form_logo">
239 <img t-attf-src="/web/binary/company_logo{{ '?dbname='+db if db else '' }}"/>
244 <div class="oe_single_form_footer" t-if="not disable_footer">
245 <t t-if="not disable_database_manager">
246 <a class="oe_login_manage_db" t-attf-href="/web/database/manager{{ '?debug' if debug else '' }}">Manage Databases</a>
247 <span class="oe_footer_seperator"> | </span>
249 <a href="https://www.odoo.com" target="_blank">Powered by <span>Odoo</span></a>
255 <template id="web.database_select" name="Database select widget">
256 <script type="text/javascript">
257 function dbchanged(db) {
258 document.location = "/web/login?<t t-if="debug">debug&</t>db=" + db;
261 <div class="form-group field-db" t-if="databases and len(databases) > 1">
262 <label for="db" class="control-label">Database</label>
263 <select name="db" id="db" class="form-control" required="required" t-att-autofocus="'autofocus' if request.db not in databases else None" onchange="dbchanged(this.value)">
265 <t t-foreach="databases" t-as="db">
266 <option t-att-selected="'selected' if db == request.db else None">
274 <template id="web.login" name="Login">
275 <t t-call="web.login_layout">
276 <form class="oe_login_form" role="form" t-attf-action="/web/login{{ '?debug' if debug else '' }}" method="post" onsubmit="this.action = this.action + location.hash">
278 <t t-call="web.database_select"/>
280 <div class="form-group field-login">
281 <label for="login" class="control-label">Email</label>
282 <input type="text" name="login" t-att-value="login" id="login" class="form-control" required="required" autofocus="autofocus"/>
285 <div class="form-group field-password">
286 <label for="password" class="control-label">Password</label>
287 <input type="password" name="password" id="password" class="form-control" required="required" t-att-autofocus="'autofocus' if login else None"/>
290 <p class="alert alert-danger" t-if="error">
293 <p class="alert alert-success" t-if="message">
297 <input type="hidden" name="redirect" t-att-value="redirect"/>
298 <div class="clearfix oe_login_buttons">
299 <button type="submit" class="btn btn-primary">Log in</button>
306 <template id="web.qunit_suite">
307 <!DOCTYPE html>
308 <html style="height: 100%">
310 <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
311 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
312 <title>Odoo Web Tests</title>
314 <link rel="shortcut icon" href="/web/static/src/img/favicon.ico" type="image/x-icon"/>
315 <link rel="stylesheet" href="/web/static/lib/qunit/qunit.css"/>
316 <script src="/web/static/lib/qunit/qunit.js"></script>
318 <t t-call="web.assets_common"/>
319 <t t-call="web.assets_backend"/>
321 <script type="text/javascript" id="qunit_config">
322 localStorage.clear();
323 QUnit.config.testTimeout = 5 * 60 * 1000;
324 QUnit.moduleDone(function(result) {
325 console.log(result.name + " (" + result.passed + "/" + result.total + " passed tests)");
327 QUnit.done(function(result) {
328 if (result.failed === 0) {
331 console.log('error');
334 openerp.web.qweb.add_template("/web/webclient/qweb");
337 <script type="text/javascript" src="/web/static/test/testing.js"></script>
338 <script type="text/javascript" src="/web/static/test/framework.js"></script>
339 <script type="text/javascript" src="/web/static/test/registry.js"></script>
340 <script type="text/javascript" src="/web/static/test/form.js"></script>
341 <script type="text/javascript" src="/web/static/test/data.js"></script>
342 <script type="text/javascript" src="/web/static/test/list-utils.js"></script>
343 <script type="text/javascript" src="/web/static/test/formats.js"></script>
344 <script type="text/javascript" src="/web/static/test/rpc-misordered.js"></script>
345 <script type="text/javascript" src="/web/static/test/evals.js"></script>
346 <script type="text/javascript" src="/web/static/test/search.js"></script>
347 <script type="text/javascript" src="/web/static/test/list.js"></script>
348 <script type="text/javascript" src="/web/static/test/list-editable.js"></script>
349 <script type="text/javascript" src="/web/static/test/mutex.js"></script>
352 <body id="oe" class="openerp">
353 <div id="qunit"></div>
354 <div id="qunit-fixture"></div>