import openerp
import openerp.modules.registry
+from openerp.addons.base.ir.ir_qweb import AssetsBundle
from openerp.tools.translate import _
from openerp import http
r.append((None, pattern))
else:
for path in glob.glob(os.path.normpath(os.path.join(addons_path, addon, pattern))):
- # Hack for IE, who limit 288Ko, 4095 rules, 31 sheets
- # http://support.microsoft.com/kb/262161/en
- if pattern == "static/lib/bootstrap/css/bootstrap.css":
- if include_remotes:
- r.insert(0, (None, fs2web(path[len(addons_path):])))
- else:
- r.append((path, fs2web(path[len(addons_path):])))
+ r.append((path, fs2web(path[len(addons_path):])))
return r
-def manifest_list(extension, mods=None, db=None, debug=False):
+def manifest_list(extension, mods=None, db=None, debug=None):
""" list ressources to load specifying either:
mods: a comma separated string listing modules
db: a database name (return all installed modules in that database)
"""
+ if debug is not None:
+ _logger.warning("openerp.addons.web.main.manifest_list(): debug parameter is deprecated")
files = manifest_glob(extension, addons=mods, db=db, include_remotes=True)
- if not debug:
- path = '/web/webclient/' + extension
- if mods is not None:
- path += '?' + werkzeug.url_encode({'mods': mods})
- elif db:
- path += '?' + werkzeug.url_encode({'db': db})
-
- remotes = [wp for fp, wp in files if fp is None]
- return [path] + remotes
return [wp for _fp, wp in files]
def get_last_modified(files):
</html>
"""
-def render_bootstrap_template(template, values=None, debug=False, db=None, **kw):
- if not db:
- db = request.db
- if request.debug:
- debug = True
+def render_bootstrap_template(template, values=None, **kw):
if values is None:
- values = {}
- values['debug'] = debug
- values['current_db'] = db
+ values = dict()
try:
values['databases'] = http.db_list()
except openerp.exceptions.AccessDenied:
values['databases'] = None
- for res in ['js', 'css']:
- if res not in values:
- values[res] = manifest_list(res, db=db, debug=debug)
-
if 'modules' not in values:
- values['modules'] = module_boot(db=db)
+ values['modules'] = module_boot()
values['modules'] = simplejson.dumps(values['modules'])
return request.render(template, values, **kw)
def login(self, db, login, key, redirect="/web", **kw):
return login_and_redirect(db, login, key, redirect_url=redirect)
+ @http.route('/web/js/<xmlid>', type='http', auth="none")
+ def js_bundle(self, xmlid, **kw):
+ values = dict(manifest_list=manifest_list)
+ html = request.render(xmlid, lazy=False, qcontext=values)
+ bundle = AssetsBundle(xmlid, html)
+ return bundle.js()
+
+ @http.route('/web/css/<xmlid>', type='http', auth='none')
+ def css_bundle(self, xmlid, **kw):
+ values = dict(manifest_list=manifest_list)
+ html = request.render(xmlid, lazy=False, qcontext=values)
+ bundle = AssetsBundle(xmlid, html)
+ return bundle.css()
+
class WebClient(http.Controller):
@http.route('/web/webclient/csslist', type='json', auth="none")
-->
<openerp>
<data>
+ <template id="web.assets_common">
+ <script type="text/javascript" src="/web/static/lib/es5-shim/es5-shim.min.js"></script>
+ <script type="text/javascript" src="/web/static/src/js/openerpframework.js"></script>
+ </template>
+
+ <template id="web.assets_webclient_manifest">
+ <t t-foreach="manifest_list('css')" t-as="css_file">
+ <link rel="stylesheet" t-att-href="css_file"/>
+ </t>
+ <t t-foreach="manifest_list('js')" t-as="js_file">
+ <script type="text/javascript" t-att-src="js_file"></script>
+ </t>
+ </template>
<template id="web.layout" name="Web layout"><!DOCTYPE html>
<html style="height: 100%">
<template id="web.webclient_bootstrap" name="Webclient Bootstrap">
<t t-call="web.layout">
<t t-set="head">
- <t t-foreach="css" t-as="css_file">
- <link rel="stylesheet" t-att-href="css_file"/>
- </t>
- <t t-foreach="js" t-as="js_file">
- <script type="text/javascript" t-att-src="js_file"></script>
- </t>
+ <t t-call-assets="web.assets_webclient_manifest"/>
<script type="text/javascript">
$(function() {
var s = new openerp.init(<t t-raw="modules"/>);
</script>
<div class="form-group field-db" t-if="databases and len(databases) > 1">
<label for="db" class="control-label">Database</label>
- <select name="db" id="db" class="form-control" required="required" t-att-autofocus="'autofocus' if current_db not in databases else None" onchange="dbchanged(this.value)">
+ <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)">
<option></option>
<t t-foreach="databases" t-as="db">
- <option t-att-selected="'selected' if db == current_db else None">
+ <option t-att-selected="'selected' if db == request.db else None">
<t t-esc="db"/>
</option>
</t>