[MERGE] Merged with trunk web.

bzr revid: tde@openerp.com-20120626080149-vjtwqb1yucqeic1m
This commit is contained in:
Thibault Delavallée 2012-06-26 10:01:49 +02:00
commit b1cbf64331
355 changed files with 1306 additions and 1973 deletions

View File

@ -588,26 +588,22 @@ class LocalConnector(openerplib.Connector):
import openerp import openerp
import traceback import traceback
import xmlrpclib import xmlrpclib
code_string = "warning -- %s\n\n%s"
try: try:
result = openerp.netsvc.dispatch_rpc(service_name, method, args) return openerp.netsvc.dispatch_rpc(service_name, method, args)
except Exception,e: except openerp.osv.osv.except_osv, e:
# TODO change the except to raise LibException instead of their emulated xmlrpc fault # TODO change the except to raise LibException instead of their emulated xmlrpc fault
if isinstance(e, openerp.osv.osv.except_osv): raise xmlrpclib.Fault(code_string % (e.name, e.value), '')
fault = xmlrpclib.Fault('warning -- ' + e.name + '\n\n' + str(e.value), '') except openerp.exceptions.Warning, e:
elif isinstance(e, openerp.exceptions.Warning): raise xmlrpclib.Fault(code_string % ("Warning", e), '')
fault = xmlrpclib.Fault('warning -- Warning\n\n' + str(e), '') except openerp.exceptions.AccessError, e:
elif isinstance(e, openerp.exceptions.AccessError): raise xmlrpclib.Fault(code_string % ("AccessError", e), '')
fault = xmlrpclib.Fault('warning -- AccessError\n\n' + str(e), '') except openerp.exceptions.AccessDenied, e:
elif isinstance(e, openerp.exceptions.AccessDenied): raise xmlrpclib.Fault('AccessDenied', str(e))
fault = xmlrpclib.Fault('AccessDenied', str(e)) except openerp.exceptions.DeferredException, e:
elif isinstance(e, openerp.exceptions.DeferredException): formatted_info = "".join(traceback.format_exception(*e.traceback))
info = e.traceback raise xmlrpclib.Fault(openerp.tools.ustr(e.message), formatted_info)
formatted_info = "".join(traceback.format_exception(*info)) except Exception, e:
fault = xmlrpclib.Fault(openerp.tools.ustr(e.message), formatted_info) formatted_info = "".join(traceback.format_exception(*(sys.exc_info())))
else: raise xmlrpclib.Fault(openerp.tools.exception_to_unicode(e), formatted_info)
info = sys.exc_info()
formatted_info = "".join(traceback.format_exception(*info))
fault = xmlrpclib.Fault(openerp.tools.exception_to_unicode(e), formatted_info)
raise fault
return result

View File

@ -735,10 +735,10 @@ def clean_action(req, action, do_not_eval=False):
if not do_not_eval: if not do_not_eval:
# values come from the server, we can just eval them # values come from the server, we can just eval them
if isinstance(action.get('context'), basestring): if action.get('context') and isinstance(action.get('context'), basestring):
action['context'] = eval( action['context'], eval_ctx ) or {} action['context'] = eval( action['context'], eval_ctx ) or {}
if isinstance(action.get('domain'), basestring): if action.get('domain') and isinstance(action.get('domain'), basestring):
action['domain'] = eval( action['domain'], eval_ctx ) or [] action['domain'] = eval( action['domain'], eval_ctx ) or []
else: else:
if 'context' in action: if 'context' in action:
@ -771,7 +771,7 @@ def generate_views(action):
:param dict action: action descriptor dictionary to generate a views key for :param dict action: action descriptor dictionary to generate a views key for
""" """
view_id = action.get('view_id', False) view_id = action.get('view_id') or False
if isinstance(view_id, (list, tuple)): if isinstance(view_id, (list, tuple)):
view_id = view_id[0] view_id = view_id[0]
@ -1289,9 +1289,10 @@ class SearchView(View):
@openerpweb.jsonrequest @openerpweb.jsonrequest
def add_to_dashboard(self, req, menu_id, action_id, context_to_save, domain, view_mode, name=''): def add_to_dashboard(self, req, menu_id, action_id, context_to_save, domain, view_mode, name=''):
ctx = common.nonliterals.CompoundContext(context_to_save) to_eval = common.nonliterals.CompoundContext(context_to_save)
ctx.session = req.session to_eval.session = req.session
ctx = ctx.evaluate() ctx = dict((k, v) for k, v in to_eval.evaluate().iteritems()
if not k.startswith('search_default_'))
ctx['dashboard_merge_domains_contexts'] = False # TODO: replace this 6.1 workaround by attribute on <action/> ctx['dashboard_merge_domains_contexts'] = False # TODO: replace this 6.1 workaround by attribute on <action/>
domain = common.nonliterals.CompoundDomain(domain) domain = common.nonliterals.CompoundDomain(domain)
domain.session = req.session domain.session = req.session
@ -1367,6 +1368,17 @@ class Binary(openerpweb.Controller):
def placeholder(self, req): def placeholder(self, req):
addons_path = openerpweb.addons_manifest['web']['addons_path'] addons_path = openerpweb.addons_manifest['web']['addons_path']
return open(os.path.join(addons_path, 'web', 'static', 'src', 'img', 'placeholder.png'), 'rb').read() return open(os.path.join(addons_path, 'web', 'static', 'src', 'img', 'placeholder.png'), 'rb').read()
def content_disposition(self, filename, req):
filename = filename.encode('utf8')
escaped = urllib2.quote(filename)
browser = req.httprequest.user_agent.browser
version = int((req.httprequest.user_agent.version or '0').split('.')[0])
if browser == 'msie' and version < 9:
return "attachment; filename=%s" % escaped
elif browser == 'safari':
return "attachment; filename=%s" % filename
else:
return "attachment; filename*=UTF-8''%s" % escaped
@openerpweb.httprequest @openerpweb.httprequest
def saveas(self, req, model, field, id=None, filename_field=None, **kw): def saveas(self, req, model, field, id=None, filename_field=None, **kw):
@ -1402,7 +1414,7 @@ class Binary(openerpweb.Controller):
filename = res.get(filename_field, '') or filename filename = res.get(filename_field, '') or filename
return req.make_response(filecontent, return req.make_response(filecontent,
[('Content-Type', 'application/octet-stream'), [('Content-Type', 'application/octet-stream'),
('Content-Disposition', 'attachment; filename="%s"' % filename)]) ('Content-Disposition', self.content_disposition(filename, req))])
@openerpweb.httprequest @openerpweb.httprequest
def saveas_ajax(self, req, data, token): def saveas_ajax(self, req, data, token):
@ -1432,7 +1444,7 @@ class Binary(openerpweb.Controller):
filename = res.get(filename_field, '') or filename filename = res.get(filename_field, '') or filename
return req.make_response(filecontent, return req.make_response(filecontent,
headers=[('Content-Type', 'application/octet-stream'), headers=[('Content-Type', 'application/octet-stream'),
('Content-Disposition', 'attachment; filename="%s"' % filename)], ('Content-Disposition', self.content_disposition(filename, req))],
cookies={'fileToken': int(token)}) cookies={'fileToken': int(token)})
@openerpweb.httprequest @openerpweb.httprequest
@ -1481,19 +1493,26 @@ class Action(openerpweb.Controller):
"ir.actions.act_url": "ir.actions.url", "ir.actions.act_url": "ir.actions.url",
} }
# For most actions, the type attribute and the model name are the same, but
# there are exceptions. This dict is used to remap action type attributes
# to the "real" model name when they differ.
action_mapping = {
"ir.actions.act_url": "ir.actions.url",
}
@openerpweb.jsonrequest @openerpweb.jsonrequest
def load(self, req, action_id, do_not_eval=False): def load(self, req, action_id, do_not_eval=False):
Actions = req.session.model('ir.actions.actions') Actions = req.session.model('ir.actions.actions')
value = False value = False
context = req.session.eval_context(req.context) context = req.session.eval_context(req.context)
action_type = Actions.read([action_id], ['type'], context) base_action = Actions.read([action_id], ['type'], context)
if action_type: if base_action:
ctx = {} ctx = {}
if action_type[0]['type'] == 'ir.actions.report.xml': action_type = base_action[0]['type']
if action_type == 'ir.actions.report.xml':
ctx.update({'bin_size': True}) ctx.update({'bin_size': True})
ctx.update(context) ctx.update(context)
action_model = action_type[0]['type'] action_model = self.action_mapping.get(action_type, action_type)
action_model = Action.action_mapping.get(action_model, action_model)
action = req.session.model(action_model).read([action_id], False, ctx) action = req.session.model(action_model).read([action_id], False, ctx)
if action: if action:
value = clean_action(req, action[0], do_not_eval) value = clean_action(req, action[0], do_not_eval)
@ -1886,10 +1905,14 @@ class Import(View):
return '<script>window.top.%s(%s);</script>' % ( return '<script>window.top.%s(%s);</script>' % (
jsonp, simplejson.dumps({'error': {'message': error}})) jsonp, simplejson.dumps({'error': {'message': error}}))
# skip ignored records # skip ignored records (@skip parameter)
data_record = itertools.islice( # then skip empty lines (not valid csv)
csv.reader(csvfile, quotechar=str(csvdel), delimiter=str(csvsep)), # nb: should these operations be reverted?
skip, None) rows_to_import = itertools.ifilter(
None,
itertools.islice(
csv.reader(csvfile, quotechar=str(csvdel), delimiter=str(csvsep)),
skip, None))
# if only one index, itemgetter will return an atom rather than a tuple # if only one index, itemgetter will return an atom rather than a tuple
if len(indices) == 1: mapper = lambda row: [row[indices[0]]] if len(indices) == 1: mapper = lambda row: [row[indices[0]]]
@ -1901,7 +1924,7 @@ class Import(View):
# decode each data row # decode each data row
data = [ data = [
[record.decode(csvcode) for record in row] [record.decode(csvcode) for record in row]
for row in itertools.imap(mapper, data_record) for row in itertools.imap(mapper, rows_to_import)
# don't insert completely empty rows (can happen due to fields # don't insert completely empty rows (can happen due to fields
# filtering in case of e.g. o2m content rows) # filtering in case of e.g. o2m content rows)
if any(row) if any(row)

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:34+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:34+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:34+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-16 05:05+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:34+0000\n"
"X-Generator: Launchpad (build 15419)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:34+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
"X-Poedit-Language: Czech\n" "X-Poedit-Language: Czech\n"
#. openerp-web #. openerp-web

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:34+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
"Language: es\n" "Language: es\n"
#. openerp-web #. openerp-web

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:34+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172
@ -53,17 +53,17 @@ msgstr "डेटाबेस का नाम अमान्य है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:483 #: addons/web/static/src/js/chrome.js:483
msgid "Backed" msgid "Backed"
msgstr "" msgstr "समर्थित"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:484 #: addons/web/static/src/js/chrome.js:484
msgid "Database backed up successfully" msgid "Database backed up successfully"
msgstr "" msgstr "आपका डेटाबेस सफलतापूर्वक समर्थित हो गया"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:527 #: addons/web/static/src/js/chrome.js:527
msgid "Restored" msgid "Restored"
msgstr "" msgstr "लौटी"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:527 #: addons/web/static/src/js/chrome.js:527
@ -80,7 +80,7 @@ msgstr "के बारे में"
#: addons/web/static/src/js/chrome.js:787 #: addons/web/static/src/js/chrome.js:787
#: addons/web/static/src/xml/base.xml:356 #: addons/web/static/src/xml/base.xml:356
msgid "Preferences" msgid "Preferences"
msgstr "" msgstr "पसंद"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:790 #: addons/web/static/src/js/chrome.js:790
@ -97,12 +97,12 @@ msgstr ""
#: addons/web/static/src/js/search.js:293 #: addons/web/static/src/js/search.js:293
#: addons/web/static/src/js/view_form.js:1234 #: addons/web/static/src/js/view_form.js:1234
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "रद्द"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:791 #: addons/web/static/src/js/chrome.js:791
msgid "Change password" msgid "Change password"
msgstr "" msgstr "पासवर्ड बदलें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:792 #: addons/web/static/src/js/chrome.js:792
@ -112,31 +112,31 @@ msgstr ""
#: addons/web/static/src/xml/base.xml:1500 #: addons/web/static/src/xml/base.xml:1500
#: addons/web/static/src/xml/base.xml:1514 #: addons/web/static/src/xml/base.xml:1514
msgid "Save" msgid "Save"
msgstr "" msgstr "सहेज"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:811 #: addons/web/static/src/js/chrome.js:811
#: addons/web/static/src/xml/base.xml:226 #: addons/web/static/src/xml/base.xml:226
#: addons/web/static/src/xml/base.xml:1729 #: addons/web/static/src/xml/base.xml:1729
msgid "Change Password" msgid "Change Password"
msgstr "" msgstr "पासवर्ड बदलें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:1096 #: addons/web/static/src/js/chrome.js:1096
#: addons/web/static/src/js/chrome.js:1100 #: addons/web/static/src/js/chrome.js:1100
msgid "OpenERP - Unsupported/Community Version" msgid "OpenERP - Unsupported/Community Version"
msgstr "" msgstr "असमर्थित / समुदाय संस्करण - OpenERP"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:1131 #: addons/web/static/src/js/chrome.js:1131
#: addons/web/static/src/js/chrome.js:1135 #: addons/web/static/src/js/chrome.js:1135
msgid "Client Error" msgid "Client Error"
msgstr "" msgstr "ग्राहक त्रुटि"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_export.js:6 #: addons/web/static/src/js/data_export.js:6
msgid "Export Data" msgid "Export Data"
msgstr "" msgstr "निर्यात आंकड़ा"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_export.js:19 #: addons/web/static/src/js/data_export.js:19
@ -149,12 +149,12 @@ msgstr ""
#: addons/web/static/src/js/view_form.js:698 #: addons/web/static/src/js/view_form.js:698
#: addons/web/static/src/js/view_form.js:3067 #: addons/web/static/src/js/view_form.js:3067
msgid "Close" msgid "Close"
msgstr "" msgstr "बंद"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_export.js:20 #: addons/web/static/src/js/data_export.js:20
msgid "Export To File" msgid "Export To File"
msgstr "" msgstr "फ़ाइल निर्यात"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_export.js:125 #: addons/web/static/src/js/data_export.js:125
@ -174,17 +174,17 @@ msgstr ""
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:34 #: addons/web/static/src/js/data_import.js:34
msgid "Import Data" msgid "Import Data"
msgstr "" msgstr "डाटा आयात करें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:70 #: addons/web/static/src/js/data_import.js:70
msgid "Import File" msgid "Import File"
msgstr "" msgstr "फ़ाइल आयात करें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:105 #: addons/web/static/src/js/data_import.js:105
msgid "External ID" msgid "External ID"
msgstr "" msgstr "बाहरी आईडी"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/formats.js:300 #: addons/web/static/src/js/formats.js:300
@ -192,50 +192,50 @@ msgstr ""
#: addons/web/static/src/js/formats.js:322 #: addons/web/static/src/js/formats.js:322
#: addons/web/static/src/js/view_page.js:251 #: addons/web/static/src/js/view_page.js:251
msgid "Download" msgid "Download"
msgstr "" msgstr "डाउनलोड"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/formats.js:305 #: addons/web/static/src/js/formats.js:305
#: addons/web/static/src/js/formats.js:327 #: addons/web/static/src/js/formats.js:327
#, python-format #, python-format
msgid "Download \"%s\"" msgid "Download \"%s\""
msgstr "" msgstr "डाउनलोड \"%s\""
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:191 #: addons/web/static/src/js/search.js:191
msgid "Filter disabled due to invalid syntax" msgid "Filter disabled due to invalid syntax"
msgstr "" msgstr "फ़िल्टर अमान्य वाक्यविन्यास के कारण अक्षम"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:237 #: addons/web/static/src/js/search.js:237
msgid "Filter Entry" msgid "Filter Entry"
msgstr "" msgstr "फ़िल्टर एंट्री"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:242 #: addons/web/static/src/js/search.js:242
#: addons/web/static/src/js/search.js:291 #: addons/web/static/src/js/search.js:291
#: addons/web/static/src/js/search.js:296 #: addons/web/static/src/js/search.js:296
msgid "OK" msgid "OK"
msgstr "" msgstr "ठीक है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:286 #: addons/web/static/src/js/search.js:286
#: addons/web/static/src/xml/base.xml:1292 #: addons/web/static/src/xml/base.xml:1292
#: addons/web/static/src/js/search.js:291 #: addons/web/static/src/js/search.js:291
msgid "Add to Dashboard" msgid "Add to Dashboard"
msgstr "" msgstr "डैशबोर्ड पर जोड़ें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:415 #: addons/web/static/src/js/search.js:415
#: addons/web/static/src/js/search.js:420 #: addons/web/static/src/js/search.js:420
msgid "Invalid Search" msgid "Invalid Search"
msgstr "" msgstr "अवैध खोज"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:415 #: addons/web/static/src/js/search.js:415
#: addons/web/static/src/js/search.js:420 #: addons/web/static/src/js/search.js:420
msgid "triggered from search view" msgid "triggered from search view"
msgstr "" msgstr "खोज दृष्टि से शुरू"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:503 #: addons/web/static/src/js/search.js:503
@ -248,38 +248,38 @@ msgstr ""
#: addons/web/static/src/js/search.js:839 #: addons/web/static/src/js/search.js:839
#: addons/web/static/src/js/search.js:844 #: addons/web/static/src/js/search.js:844
msgid "not a valid integer" msgid "not a valid integer"
msgstr "" msgstr "वैध नहीं पूर्णांक"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:853 #: addons/web/static/src/js/search.js:853
#: addons/web/static/src/js/search.js:858 #: addons/web/static/src/js/search.js:858
msgid "not a valid number" msgid "not a valid number"
msgstr "" msgstr "एक वैध संख्या नहीं"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:931 #: addons/web/static/src/js/search.js:931
#: addons/web/static/src/xml/base.xml:968 #: addons/web/static/src/xml/base.xml:968
#: addons/web/static/src/js/search.js:936 #: addons/web/static/src/js/search.js:936
msgid "Yes" msgid "Yes"
msgstr "" msgstr "हाँ"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:932 #: addons/web/static/src/js/search.js:932
#: addons/web/static/src/js/search.js:937 #: addons/web/static/src/js/search.js:937
msgid "No" msgid "No"
msgstr "" msgstr "नही"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1290 #: addons/web/static/src/js/search.js:1290
#: addons/web/static/src/js/search.js:1295 #: addons/web/static/src/js/search.js:1295
msgid "contains" msgid "contains"
msgstr "" msgstr "में हैं"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1291 #: addons/web/static/src/js/search.js:1291
#: addons/web/static/src/js/search.js:1296 #: addons/web/static/src/js/search.js:1296
msgid "doesn't contain" msgid "doesn't contain"
msgstr "" msgstr "शामिल नहीं है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1292 #: addons/web/static/src/js/search.js:1292
@ -293,7 +293,7 @@ msgstr ""
#: addons/web/static/src/js/search.js:1349 #: addons/web/static/src/js/search.js:1349
#: addons/web/static/src/js/search.js:1370 #: addons/web/static/src/js/search.js:1370
msgid "is equal to" msgid "is equal to"
msgstr "" msgstr "के बराबर है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1293 #: addons/web/static/src/js/search.js:1293
@ -307,7 +307,7 @@ msgstr ""
#: addons/web/static/src/js/search.js:1350 #: addons/web/static/src/js/search.js:1350
#: addons/web/static/src/js/search.js:1371 #: addons/web/static/src/js/search.js:1371
msgid "is not equal to" msgid "is not equal to"
msgstr "" msgstr "के बराबर नहीं है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1294 #: addons/web/static/src/js/search.js:1294
@ -321,7 +321,7 @@ msgstr ""
#: addons/web/static/src/js/search.js:1351 #: addons/web/static/src/js/search.js:1351
#: addons/web/static/src/js/search.js:1372 #: addons/web/static/src/js/search.js:1372
msgid "greater than" msgid "greater than"
msgstr "" msgstr "से अधिक"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1295 #: addons/web/static/src/js/search.js:1295
@ -335,7 +335,7 @@ msgstr ""
#: addons/web/static/src/js/search.js:1352 #: addons/web/static/src/js/search.js:1352
#: addons/web/static/src/js/search.js:1373 #: addons/web/static/src/js/search.js:1373
msgid "less than" msgid "less than"
msgstr "" msgstr "से कम"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1296 #: addons/web/static/src/js/search.js:1296
@ -349,7 +349,7 @@ msgstr ""
#: addons/web/static/src/js/search.js:1353 #: addons/web/static/src/js/search.js:1353
#: addons/web/static/src/js/search.js:1374 #: addons/web/static/src/js/search.js:1374
msgid "greater or equal than" msgid "greater or equal than"
msgstr "" msgstr "अधिक से अधिक या बराबर की तुलना में"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1297 #: addons/web/static/src/js/search.js:1297
@ -363,7 +363,7 @@ msgstr ""
#: addons/web/static/src/js/search.js:1354 #: addons/web/static/src/js/search.js:1354
#: addons/web/static/src/js/search.js:1375 #: addons/web/static/src/js/search.js:1375
msgid "less or equal than" msgid "less or equal than"
msgstr "" msgstr "या कम से बराबर"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1360 #: addons/web/static/src/js/search.js:1360
@ -371,31 +371,31 @@ msgstr ""
#: addons/web/static/src/js/search.js:1365 #: addons/web/static/src/js/search.js:1365
#: addons/web/static/src/js/search.js:1388 #: addons/web/static/src/js/search.js:1388
msgid "is" msgid "is"
msgstr "" msgstr "है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1384 #: addons/web/static/src/js/search.js:1384
#: addons/web/static/src/js/search.js:1389 #: addons/web/static/src/js/search.js:1389
msgid "is not" msgid "is not"
msgstr "" msgstr "नहीं है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1396 #: addons/web/static/src/js/search.js:1396
#: addons/web/static/src/js/search.js:1401 #: addons/web/static/src/js/search.js:1401
msgid "is true" msgid "is true"
msgstr "" msgstr "सच है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1397 #: addons/web/static/src/js/search.js:1397
#: addons/web/static/src/js/search.js:1402 #: addons/web/static/src/js/search.js:1402
msgid "is false" msgid "is false"
msgstr "" msgstr "ग़लत है"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:20 #: addons/web/static/src/js/view_editor.js:20
#, python-format #, python-format
msgid "Manage Views (%s)" msgid "Manage Views (%s)"
msgstr "" msgstr "दर्शनों की संख्या (% s) प्रबंधित"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:46 #: addons/web/static/src/js/view_editor.js:46
@ -404,31 +404,31 @@ msgstr ""
#: addons/web/static/src/xml/base.xml:327 #: addons/web/static/src/xml/base.xml:327
#: addons/web/static/src/xml/base.xml:756 #: addons/web/static/src/xml/base.xml:756
msgid "Create" msgid "Create"
msgstr "" msgstr "बनाएँ"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:47 #: addons/web/static/src/js/view_editor.js:47
#: addons/web/static/src/xml/base.xml:483 #: addons/web/static/src/xml/base.xml:483
#: addons/web/static/src/xml/base.xml:755 #: addons/web/static/src/xml/base.xml:755
msgid "Edit" msgid "Edit"
msgstr "" msgstr "संपादित"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:48 #: addons/web/static/src/js/view_editor.js:48
#: addons/web/static/src/xml/base.xml:1647 #: addons/web/static/src/xml/base.xml:1647
msgid "Remove" msgid "Remove"
msgstr "" msgstr "हटाओ"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:71 #: addons/web/static/src/js/view_editor.js:71
#, python-format #, python-format
msgid "Create a view (%s)" msgid "Create a view (%s)"
msgstr "" msgstr "एक दृश्य (% s) बनाएँ"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:168 #: addons/web/static/src/js/view_editor.js:168
msgid "Do you really want to remove this view?" msgid "Do you really want to remove this view?"
msgstr "" msgstr "क्या आप वास्तव में इस दृश्य को दूर करना चाहते हैं?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:364 #: addons/web/static/src/js/view_editor.js:364
@ -449,42 +449,42 @@ msgstr ""
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:381 #: addons/web/static/src/js/view_editor.js:381
msgid "Preview" msgid "Preview"
msgstr "" msgstr "पूर्वावलोकन"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:501 #: addons/web/static/src/js/view_editor.js:501
msgid "Do you really want to remove this node?" msgid "Do you really want to remove this node?"
msgstr "" msgstr "क्या आप वास्तव में इस नोड को दूर करना चाहते हैं?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:815 #: addons/web/static/src/js/view_editor.js:815
#: addons/web/static/src/js/view_editor.js:939 #: addons/web/static/src/js/view_editor.js:939
msgid "Properties" msgid "Properties"
msgstr "" msgstr "गुण"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:818 #: addons/web/static/src/js/view_editor.js:818
#: addons/web/static/src/js/view_editor.js:942 #: addons/web/static/src/js/view_editor.js:942
msgid "Update" msgid "Update"
msgstr "" msgstr "अद्यतन"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:16 #: addons/web/static/src/js/view_form.js:16
msgid "Form" msgid "Form"
msgstr "" msgstr "फार्म"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:121 #: addons/web/static/src/js/view_form.js:121
#: addons/web/static/src/js/views.js:803 #: addons/web/static/src/js/views.js:803
msgid "Customize" msgid "Customize"
msgstr "" msgstr "अनुकूलित करें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:123 #: addons/web/static/src/js/view_form.js:123
#: addons/web/static/src/js/view_form.js:686 #: addons/web/static/src/js/view_form.js:686
#: addons/web/static/src/js/view_form.js:692 #: addons/web/static/src/js/view_form.js:692
msgid "Set Default" msgid "Set Default"
msgstr "" msgstr "डिफ़ॉल्ट सेट करें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:469 #: addons/web/static/src/js/view_form.js:469
@ -492,18 +492,19 @@ msgstr ""
msgid "" msgid ""
"Warning, the record has been modified, your changes will be discarded." "Warning, the record has been modified, your changes will be discarded."
msgstr "" msgstr ""
"चेतावनी, रिकॉर्ड संशोधित किया गया है, अपने परिवर्तनों को खारिज कर दिया जाएगा."
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:693 #: addons/web/static/src/js/view_form.js:693
#: addons/web/static/src/js/view_form.js:699 #: addons/web/static/src/js/view_form.js:699
msgid "Save default" msgid "Save default"
msgstr "" msgstr "डिफ़ॉल्ट रूप में सहेजें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:754 #: addons/web/static/src/js/view_form.js:754
#: addons/web/static/src/js/view_form.js:760 #: addons/web/static/src/js/view_form.js:760
msgid "Attachments" msgid "Attachments"
msgstr "" msgstr "अनुलग्नक"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:792 #: addons/web/static/src/js/view_form.js:792
@ -537,7 +538,7 @@ msgstr ""
#: addons/web/static/src/js/view_form.js:1225 #: addons/web/static/src/js/view_form.js:1225
#: addons/web/static/src/js/view_form.js:1231 #: addons/web/static/src/js/view_form.js:1231
msgid "Confirm" msgid "Confirm"
msgstr "" msgstr "पुष्टि करें"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:1921 #: addons/web/static/src/js/view_form.js:1921
@ -547,7 +548,7 @@ msgstr ""
#: addons/web/static/src/js/view_form.js:2590 #: addons/web/static/src/js/view_form.js:2590
#: addons/web/static/src/js/view_form.js:2760 #: addons/web/static/src/js/view_form.js:2760
msgid "Open: " msgid "Open: "
msgstr "" msgstr "खोलने के लिए "
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:2049 #: addons/web/static/src/js/view_form.js:2049
@ -573,7 +574,7 @@ msgstr ""
#: addons/web/static/src/js/views.js:675 #: addons/web/static/src/js/views.js:675
#: addons/web/static/src/js/view_form.js:2113 #: addons/web/static/src/js/view_form.js:2113
msgid "Search: " msgid "Search: "
msgstr "" msgstr "खोजें: "
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:2101 #: addons/web/static/src/js/view_form.js:2101
@ -581,7 +582,7 @@ msgstr ""
#: addons/web/static/src/js/view_form.js:2113 #: addons/web/static/src/js/view_form.js:2113
#: addons/web/static/src/js/view_form.js:2562 #: addons/web/static/src/js/view_form.js:2562
msgid "Create: " msgid "Create: "
msgstr "" msgstr "बनाएँ: "
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:2661 #: addons/web/static/src/js/view_form.js:2661
@ -590,18 +591,18 @@ msgstr ""
#: addons/web/static/src/xml/base.xml:1646 #: addons/web/static/src/xml/base.xml:1646
#: addons/web/static/src/js/view_form.js:2680 #: addons/web/static/src/js/view_form.js:2680
msgid "Add" msgid "Add"
msgstr "" msgstr "जोड़ना"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:2721 #: addons/web/static/src/js/view_form.js:2721
#: addons/web/static/src/js/view_form.js:2740 #: addons/web/static/src/js/view_form.js:2740
msgid "Add: " msgid "Add: "
msgstr "" msgstr "जोड़ना: "
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_list.js:8 #: addons/web/static/src/js/view_list.js:8
msgid "List" msgid "List"
msgstr "" msgstr "सूची"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_list.js:269 #: addons/web/static/src/js/view_list.js:269

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172
@ -553,7 +553,7 @@ msgstr "Нээх "
#: addons/web/static/src/js/view_form.js:2049 #: addons/web/static/src/js/view_form.js:2049
#: addons/web/static/src/js/view_form.js:2061 #: addons/web/static/src/js/view_form.js:2061
msgid "<em>   Search More...</em>" msgid "<em>   Search More...</em>"
msgstr "<em>   Өшөө Хайх...</em>" msgstr "<em>   Нарийвчилж Хайх...</em>"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:2062 #: addons/web/static/src/js/view_form.js:2062
@ -653,7 +653,7 @@ msgstr "Мод"
#: addons/web/static/src/js/views.js:565 #: addons/web/static/src/js/views.js:565
#: addons/web/static/src/xml/base.xml:480 #: addons/web/static/src/xml/base.xml:480
msgid "Fields View Get" msgid "Fields View Get"
msgstr "" msgstr "Талбар Харагдац Авах"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:573 #: addons/web/static/src/js/views.js:573
@ -1111,7 +1111,7 @@ msgstr "Төрөл:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:948 #: addons/web/static/src/xml/base.xml:948
msgid "Widget:" msgid "Widget:"
msgstr "" msgstr "Виджет:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:952 #: addons/web/static/src/xml/base.xml:952

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:34+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172
@ -867,7 +867,7 @@ msgstr "您的 OpenERP 版本没有包含支持。支持与维护服务在此处
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:251 #: addons/web/static/src/xml/base.xml:251
msgid "OpenERP Entreprise" msgid "OpenERP Entreprise"
msgstr "模型”%s“的字段" msgstr "模型“%s”的字段"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:256 #: addons/web/static/src/xml/base.xml:256

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:172 #: addons/web/static/src/js/chrome.js:172

View File

@ -261,6 +261,26 @@
-webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
} }
.openerp .oe_form_dirty .oe_highlight_on_dirty {
color: white;
background: #dc5f59;
font-weight: bold;
}
.openerp .oe_form_dirty button.oe_highlight_on_dirty {
background-color: #dc5f59;
background-image: -webkit-gradient(linear, left top, left bottom, from(#dc5f59), to(#b33630));
background-image: -webkit-linear-gradient(top, #dc5f59, #b33630);
background-image: -moz-linear-gradient(top, #dc5f59, #b33630);
background-image: -ms-linear-gradient(top, #dc5f59, #b33630);
background-image: -o-linear-gradient(top, #dc5f59, #b33630);
background-image: linear-gradient(to bottom, #dc5f59, #b33630);
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.openerp .oe_form_dirty button.oe_highlight_on_dirty:hover {
background: #ed6f6a;
}
.openerp .oe_title { .openerp .oe_title {
width: 55%; width: 55%;
} }
@ -1508,24 +1528,6 @@
background-color: #ff6666 !important; background-color: #ff6666 !important;
border: 1px solid #dd0000 !important; border: 1px solid #dd0000 !important;
} }
.openerp .oe_form_button_save_dirty {
color: white;
background: #dc5f59;
background-color: #dc5f59;
background-image: -webkit-gradient(linear, left top, left bottom, from(#dc5f59), to(#b33630));
background-image: -webkit-linear-gradient(top, #dc5f59, #b33630);
background-image: -moz-linear-gradient(top, #dc5f59, #b33630);
background-image: -ms-linear-gradient(top, #dc5f59, #b33630);
background-image: -o-linear-gradient(top, #dc5f59, #b33630);
background-image: linear-gradient(to bottom, #dc5f59, #b33630);
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
font-weight: bold;
}
.openerp .oe_form_button_save_dirty:hover {
background: #ed6f6a;
}
.openerp .oe_form_editable .oe_highlight { .openerp .oe_form_editable .oe_highlight {
color: #404040; color: #404040;
background: none; background: none;
@ -1973,6 +1975,9 @@
.openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page { .openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page {
display: none; display: none;
} }
.openerp .oe_form_field_one2many .oe-listview .oe-edit-row-save {
background-image: url(/web/static/src/img/iconset-b-remove.png);
}
.openerp .oe_form_field_one2many > .oe_view_manager .oe_header_row_top { .openerp .oe_form_field_one2many > .oe_view_manager .oe_header_row_top {
display: none; display: none;
} }

View File

@ -232,6 +232,16 @@ $colour4: #8a89ba
@include vertical-gradient(#DF6B66, #BF3A33) @include vertical-gradient(#DF6B66, #BF3A33)
//@include vertical-gradient(lighten(#dc5f59, 3%), lighten(#b33630, 3%)) //@include vertical-gradient(lighten(#dc5f59, 3%), lighten(#b33630, 3%))
@include box-shadow(0 0 1px rgba(0, 0, 0, 0.2)) @include box-shadow(0 0 1px rgba(0, 0, 0, 0.2))
.oe_form_dirty
.oe_highlight_on_dirty
color: white
background: #dc5f59
font-weight: bold
button.oe_highlight_on_dirty
@include vertical-gradient(#dc5f59, #b33630)
@include box-shadow(none)
&:hover
background: #ED6F6A
.oe_title .oe_title
width: 55% width: 55%
.oe_title:after .oe_title:after
@ -1205,14 +1215,6 @@ $colour4: #8a89ba
input, select, textarea input, select, textarea
background-color: #F66 !important background-color: #F66 !important
border: 1px solid #D00 !important border: 1px solid #D00 !important
.oe_form_button_save_dirty
color: white
background: #dc5f59
@include vertical-gradient(#dc5f59, #b33630)
@include box-shadow(none)
font-weight: bold
&:hover
background: #ED6F6A
.oe_form_editable .oe_form_editable
.oe_highlight .oe_highlight
color: #404040 color: #404040
@ -1559,21 +1561,26 @@ $colour4: #8a89ba
.oe_form .oe_form_field_one2many > .oe_view_manager .oe_form .oe_form_field_one2many > .oe_view_manager
.oe_list_pager_single_page .oe_list_pager_single_page
display: none display: none
.oe_form_field_one2many > .oe_view_manager .oe_form_field_one2many
.oe_header_row_top // TODO: oe_form_field_one2many_list?
display: none .oe-listview .oe-edit-row-save
.oe_view_manager_header2 background-image: url(/web/static/src/img/iconset-b-remove.png)
td
padding: 0px 8px &> .oe_view_manager
line-height: 16px .oe_header_row_top
.oe_i display: none
font-size: 13px .oe_view_manager_header2
.oe_pager_group td
height: auto padding: 0px 8px
line-height: 16px line-height: 16px
li .oe_i
font-size: 13px
.oe_pager_group
height: auto height: auto
line-height: 16px line-height: 16px
li
height: auto
line-height: 16px
// }}} // }}}
// FormView.many2many {{{ // FormView.many2many {{{
.oe_form .oe_form_field_many2many > .oe-listview .oe_form .oe_form_field_many2many > .oe-listview

View File

@ -1,999 +0,0 @@
.openerp {
padding: 0;
margin: 0;
font-size: 80%;
font-family: Ubuntu, Helvetica, sans-serif;
}
.openerp, .openerp textarea, .openerp input, .openerp select, .openerp option,
.openerp button, .openerp .ui-widget {
font-family: Ubuntu, Helvetica, sans-serif;
font-size:85%;
}
.openerp .view-manager-main-content {
width: 100%;
}
.openerp .oe_form_group_cell .view-manager-main-content {
padding: 0;
}
.oe_box {
border: 1px solid #aaf;
padding: 2px;
margin: 2px;
}
#oe_errors pre {
margin: 0;
}
.openerp .oe-listview .oe-number {
text-align: right !important;
}
.oe-listview-header-columns {
background: #d1d1d1; /* Old browsers */
background: -moz-linear-gradient(top, #ffffff 0%, #d1d1d1 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#d1d1d1)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ffffff 0%,#d1d1d1 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ffffff 0%,#d1d1d1 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #ffffff 0%,#d1d1d1 100%); /* IE10+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#d1d1d1',GradientType=0 ); /* IE6-9 */
background: linear-gradient(top, #ffffff 0%,#d1d1d1 100%); /* W3C */
}
.openerp .oe_hide {
display: none !important;
}
/* STATES */
.openerp .on_logged,
.openerp .db_options_row {
display: none;
}
/* Database */
.login .oe-database-manager {
display: none;
height: 100%;
width: 100%;
background-color: white;
}
.login.database_block .bottom,
.login.database_block .login_error_message,
.login.database_block .pane {
display: none;
}
.login.database_block .oe-database-manager {
display: block;
}
.login .database {
float: left;
width: 202px;
height: 100%;
background: #666666;
}
.login .oe_db_options {
margin-left: 202px;
color: black;
padding-top: 20px;
}
.login .database ul {
margin-top: 65px;
}
ul.db_options li {
padding: 5px 0 10px 5px;
background: #949292; /* Old browsers */
background: -moz-linear-gradient(top, #949292 30%, #6d6b6b 95%, #282828 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(30%,#949292), color-stop(95%,#6d6b6b), color-stop(100%,#282828)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #949292 30%,#6d6b6b 95%,#282828 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #949292 30%,#6d6b6b 95%,#282828 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #949292 30%,#6d6b6b 95%,#282828 100%); /* IE10+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#949292', endColorstr='#282828',GradientType=0 ); /* IE6-9 */
background: linear-gradient(top, #949292 30%,#6d6b6b 95%,#282828 100%); /* W3C */
/* for ie9 */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#949292', endColorstr='#5B5A5A',GradientType=0 ); /* IE6-9 */
border: none;
/* overriding jquery ui */
-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
display: block;
font-weight: bold;
text-transform: uppercase;
margin: 1px;
color: #EEEEEE;
cursor: pointer;
width: 195px;
font-size: 12px;
}
.db_option_table {
border: 1px solid #5A5858;
padding: 5px;
-moz-border-radius: 10px;
}
table.db_option_table input.required {
background-color: #D2D2FF !important;
}
.db_option_table label {
display: block;
text-align: right;
}
.db_option_table input[type="text"],
.db_option_table input[type="password"],
.db_option_table input[type="file"],
.db_option_table select {
width: 300px;
}
.option_string {
font-weight: bold;
color: #555;
width: 100%;
text-align: center;
padding: 10px 0;
font-size: large;
}
label.error {
float: none;
color: red;
padding-left: .5em;
vertical-align: top;
}
/* Main*/
.openerp .main_table {
width: 100%;
height: 100%;
background: #f0eeee;
}
.openerp .oe-application {
height: 100%;
}
.openerp .oe-application-container {
width: 100%;
height: 100%;
}
/* IE Hack - for IE < 9
* Avoids footer to be placed statically at 100% cutting the middle of the views
* */
.openerp .oe-application-container {
height: auto\9;
min-height: 100%\9;
}
/* Main Application */
.openerp .oe-main-content {
padding: 0;
height: 100%;
}
.openerp h2.oe_view_title {
font-size: 110%;
font-weight: normal;
margin: 2px 0;
color: #252424;
text-shadow: white 0 1px 0;
}
.openerp div[id^="notebook"] .oe_view_title {
font-size:85%;
padding-bottom:4px;
}
/* List */
.openerp table.oe-listview-content {
clear: right;
width: 100%;
border-spacing: 0;
border: 1px solid silver;
}
.openerp .oe-listview thead table {
width: 100%;
border: none;
}
.openerp .oe-listview tr.odd {
background-color: #f3f3f3;
}
.openerp .oe-listview tbody tr:hover {
background-color: #ecebf2;
}
.openerp .oe-listview tbody tr:hover {
background-color: #eae9f0;
}
.openerp .oe-listview thead table tr,
.openerp .oe-listview thead table tr:hover {
background: none;
}
.openerp .oe-listview > table > tbody > tr > td,
.openerp .oe-listview th {
vertical-align: middle;
text-align: left;
padding: 1px 2px;
}
.openerp .oe-record-delete button,
.openerp button.oe-edit-row-save {
border: none;
height: 12px;
width: 12px;
background: url("/web/static/src/img/iconset-b-remove.png") no-repeat scroll center center transparent;
cursor: pointer;
}
.openerp button.oe-edit-row-save {
background-image: url('/web/static/src/img/icons/save-document.png');
}
/* Could use :not selectors if they were supported by MSIE8... */
.openerp .oe-listview > table > tbody > tr > td {
border-left: 1px solid #dadada; /*currently commenting to test with no vertical lines in list view*/
}
.openerp .oe-listview tbody td:first-child,
.openerp .oe-listview tbody td.oe-button,
.openerp .oe-listview tbody td.oe-button,
.openerp .oe-listview tbody th.oe-record-selector,
.openerp .oe-listview tbody td.oe-record-delete {
border-left: none;
}
.openerp .oe-listview td.oe-record-delete {
text-align: right;
}
.openerp .oe-listview th.oe-sortable {
cursor: pointer;
font-size: 75%;
text-transform: uppercase;
padding: 0;
margin: 0;
padding-left: 3px;
color: #333;
}
.openerp .oe-listview th.oe-sortable .ui-icon {
height: 60%;
margin: -6px 0 0;
display: inline;
display: inline-block;
vertical-align: middle;
}
.openerp .oe-listview > table > tbody > tr > td {
border-bottom: 1px solid #E3E3E3;
}
.openerp .oe-listview td.oe-actions {
border-bottom:none;
}
.openerp .oe-listview .oe-record-selector, .openerp .oe-listview .oe-record-edit-link {
border-bottom: 1px solid #E3E3E3;
}
.openerp .oe-listview .oe-record-edit-link {
cursor: pointer;
}
.openerp .oe-listview .oe-field-cell {
cursor: pointer;
margin-top: 0;
margin-bottom: 0;
padding-top: 3px;
padding-bottom: 3px;
font-size: 80%;
}
.openerp .oe-listview .oe-field-cell progress {
width: 100%;
}
.openerp .oe-listview .oe-field-cell.oe-button button,
.openerp .oe-listview .oe_form_button button {
margin: 0;
padding: 0;
border: none;
background: none;
width: 16px;
box-shadow: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
}
.openerp .oe-listview .oe-field-cell button:active {
opacity: 0.5;
}
.openerp .oe-listview .oe-field-cell button img {
cursor: pointer;
}
.openerp .oe-listview .oe-field-cell button img:hover {
opacity: 0.75;
}
.openerp .oe-listview .oe-field-cell .oe-listview-button-disabled img {
opacity: 0.5;
}
.openerp .oe-listview th.oe-actions {
text-align: left;
white-space: nowrap;
}
.openerp .oe-listview th.oe-list-pager {
text-align: right;
white-space: nowrap;
}
.openerp .oe-list-pager .oe-pager-state {
cursor: pointer;
font-size: 90%;
color: #555;
}
.openerp .oe_button.oe_button_pager,
.openerp .oe-list-pager > span,
.openerp .oe_form_pager > span {
line-height: 17px;
height: 17px;
cursor: pointer;
color: gray;
font-weight: bold;
vertical-align: middle;
}
.openerp .oe_button.oe_button_pager,
.openerp .oe_button.oe_button_pager:disabled {
padding: 0 3px 0 3px;
margin: 0;
height: 17px;
}
.openerp .oe-listview .oe-group-name {
padding-right: 1em;
}
.openerp .oe-listview .oe-group-name,
.openerp .oe-listview .oe-group-pagination {
white-space: nowrap;
}
.openerp .oe-listview tfoot td {
padding: 3px 3px 0;
}
.openerp .oe-listview .oe-list-footer {
text-align: center;
white-space: nowrap;
color: #444;
font-size: 85%;
}
.openerp .oe-listview .oe-list-footer span {
margin: 0 1em;
}
.openerp .oe-listview .oe-list-footer progress {
vertical-align:-10% !important;
width: 100%;
}
/** list rounded corners
rounded corners are a pain on tables: need to round not only table, but
also on the first and last children of the first and last row
*/
.openerp .oe-listview table.oe-listview-content {
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.openerp .oe-listview table.oe-listview-content thead tr:first-child th:first-child {
-webkit-border-top-left-radius: 4px;
-moz-border-radius-topleft: 4px;
border-top-left-radius: 4px;
}
.openerp .oe-listview table.oe-listview-content thead tr:first-child th:last-child {
-webkit-border-top-right-radius: 4px;
-moz-border-radius-topright: 4px;
border-top-right-radius: 4px;
}
.openerp .oe-listview table.oe-listview-content tfoot tr:last-child th:first-child,
.openerp .oe-listview table.oe-listview-content tfoot tr:last-child td:first-child,
.openerp .oe-listview table.oe-listview-content tbody:last-child tr:last-child th:first-child {
-webkit-border-bottom-left-radius: 4px;
-moz-border-radius-bottomleft: 4px;
border-bottom-left-radius: 4px;
}
.openerp .oe-listview table.oe-listview-content tfoot tr:last-child th:last-child,
.openerp .oe-listview table.oe-listview-content tfoot tr:last-child td:last-child,
.openerp .oe-listview table.oe-listview-content tbody:last-child tr:last-child td:last-child {
-webkit-border-bottom-right-radius: 4px;
-moz-border-radius-bottomright: 4px;
border-bottom-right-radius: 4px;
}
/* Form */
.openerp .oe_form_group_cell input[type="checkbox"] {
margin-top: 3px;
vertical-align: middle;
}
.openerp .oe_form_group_cell .input[type="text"] {
padding-bottom: 1px;
}
.openerp table.oe_form_group td {
color: #4c4c4c;
}
.openerp table.oe_form_group {
color: #4c4c4c;
}
.openerp fieldset.oe_group_box {
border: 1px solid #AAAAAA;
moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
background: #F9F9F9;
padding: 4px;
}
.openerp fieldset.oe_group_box legend {
font-weight: bold;
}
.openerp .required.error {
border: 1px solid #900;
}
.openerp .oe_form_buttons, .openerp .oe_list_buttons {
float: left;
}
.openerp .oe_form_pager, .openerp .oe_list_pager {
float: right;
font-size: 80%;
color: gray;
font-weight: bold;
}
.openerp .oe_form_pager {
margin-right: 3px;
}
.openerp .oe_align_left {
text-align: left;
}
.openerp .oe_align_right {
text-align: right;
}
.openerp .oe_align_center {
text-align: center;
}
.openerp .oe_form .oe_form_paragraph {
margin: 3px 0 0 0;
white-space: normal;
}
.openerp .oe_form .oe_form_paragraph.oe_multilines {
white-space: pre;
}
.openerp .oe_form_field_one2many .oe-actions h3.oe_view_title,
.openerp .oe_form_field_one2many_list .oe-actions h3.oe_view_title{
display: inline;
margin: 0 0.5em 0 0;
}
.openerp .oe_form .oe-listview th.oe-sortable .ui-icon,
.openerp .oe_form .oe-listview th.oe-sortable .ui-icon {
height: 100%;
margin-top: -9px;
}
.openerp table.oe_form_group .oe-listview-content td {
color: inherit;
}
/* Uneditable Form View */
.openerp .oe_form_readonly {
}
.openerp .oe_form_readonly .oe_form_group_cell .field_text,
.openerp .oe_form_readonly .field_char,
.openerp .oe_form_readonly .field_int,
.openerp .oe_form_readonly .field_float,
.openerp .oe_form_readonly .field_email,
.openerp .oe_form_readonly .field_date,
.openerp .oe_form_readonly .field_selection,
.openerp .oe_form_readonly .oe_form_field_many2one {
padding: 3px 2px 2px 2px;
background-color: white;
height: 17px;
}
.openerp .oe_form_readonly .oe_form_group_cell .field_text {
height: auto;
}
.openerp .oe_form_readonly .field_datetime {
padding: 1px 2px 2px 2px;
background-color: white;
height:19px;
}
.openerp .oe_form_readonly .oe_form_field_many2one div {
background-color:white;
height:18px;
margin-bottom:1px;
padding: 0px 2px 5px 2px;
}
.openerp .oe_form_readonly .oe_form_field_email div {
background-color: white;
padding: 1px 2px 3px 2px;
}
.openerp .oe_form_readonly .oe_form_field_text div.field_text,
.openerp .oe_form_readonly .oe_form_field_text_html div.field_text_html {
white-space: pre-wrap;
}
.openerp .oe_form_readonly .oe_form_group_cell .field_text {
min-height:100px;
}
/* Inputs */
/* vertically recentering filter management select tag */
.openerp select.oe_search-view-filters-management {
margin-top:2px;
}
@-moz-document url-prefix() {
/* Strange firefox behaviour on width: 100% + white-space: nowrap */
.openerp .oe_form .oe_form_button .oe_button {
width: auto;
}
}
/* IE Hack - for IE < 9
* Avoids buttons overflow
* */
.openerp .oe_form .oe_form_button .oe_button {
min-width: auto\9;
}
/* jQuery UI override */
.openerp .ui-widget {
font-size: 1em;
}
.openerp tbody.ui-widget-content {
margin-bottom: 10px;
border-spacing: 4px;
}
.openerp .ui-widget-header {
background: white none;
}
/* Sidebar */
.openerp .view-manager-main-table {
margin: 0;
width:100%;
border-collapse:collapse;
height:100%;
}
.openerp .view-manager-main-table tbody {
vertical-align: top;
}
.openerp .oe-view-manager-header {
overflow: auto;
background: url("/web/static/src/img/sep-a.gif") 0 100% repeat-x;
margin:6px 0 6px 2px;
}
.openerp .oe_form_group_cell .oe-view-manager-header { /* Trick: remove the background when element is in a formular */
background: none;
}
.openerp .oe-view-manager-header h2 {
float: left;
}
.openerp .oe_view_manager_menu_tips blockquote {
display: none;
font-size: 85%;
margin: 0;
background: #fff;
border-bottom: 1px solid #CECBCB;
padding: 1px 10px;
color: #4C4C4C;
}
.openerp .oe_view_manager_menu_tips blockquote p {
margin: 0;
padding: 6px 1px 4px;
}
.openerp .oe_view_manager_menu_tips blockquote div {
text-align: right;
margin-right:10px;
}
.openerp .oe_view_manager_menu_tips blockquote div button {
border: none;
background: none;
padding: 0 4px;
margin: 0;
display: inline;
text-decoration: underline;
color: inherit;
}
.openerp .view-manager-main-sidebar {
width: 180px;
padding: 0;
margin: 0;
}
.openerp .sidebar-main-div {
height: 100%;
border-left: 1px solid #D2CFCF;
}
.openerp .sidebar-content {
padding: 0;
margin: 0;
width: 180px;
height: 100%;
font-size: 0.9em;
}
.openerp .closed-sidebar .sidebar-content {
width: 22px;
}
.openerp .closed-sidebar .sidebar-content {
display: none;
}
.openerp .sidebar-main-div a {
color: #555;
text-decoration: none;
}
.openerp .sidebar-main-div a:hover {
color: black;
}
.openerp .oe-sidebar-attachments-toolbar {
margin: 4px 0 0 4px;
}
.openerp .oe-sidebar-attachments-items {
clear: both;
padding-top: 5px !important;
}
.openerp .oe-sidebar-attachments-items li {
position: relative;
padding: 0 0 3px 10px !important;
}
.openerp .oe-sidebar-attachments-items li:hover {
background: #ddd;
}
.openerp .oe-sidebar-attachments-link {
display: block;
margin-right: 15px;
overflow: hidden;
}
.openerp .oe-sidebar-attachment-delete {
position: absolute;
right: 2px;
top: 1px;
overflow: hidden;
width: 15px;
height: 15px;
padding: 1px;
border-radius: 7px;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
}
.openerp .oe-sidebar-attachment-delete:hover {
background-color: white;
}
.openerp .view-manager-main-sidebar h2 {
margin:0;
font-size: 1.15em;
color: #8E8E8E;
text-shadow: white 0 1px 0;
padding-left: 10px;
padding-right: 21px;
height: 21px;
background: #ffffff; /* Old browsers */
background: -moz-linear-gradient(top, #ffffff 0%, #ebe9e9 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#ebe9e9)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ffffff 0%,#ebe9e9 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ffffff 0%,#ebe9e9 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #ffffff 0%,#ebe9e9 100%); /* IE10+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#EBE9E9',GradientType=0 ); /* IE6-9 */
background: linear-gradient(top, #ffffff 0%,#ebe9e9 100%); /* W3C */
border: 1px solid #D2CFCF;
border-right-width: 0;
border-left-width: 0;
}
.openerp .view-manager-main-sidebar h2 {
border-top-width: 0;
}
.openerp .view-manager-main-sidebar ul {
list-style-type: none;
margin: 0;
padding: 0;
display: block;
}
.openerp .view-manager-main-sidebar li {
display: block;
padding: 3px 3px 3px 10px;
}
.openerp .toggle-sidebar {
cursor: pointer;
border: 1px solid #D2CFCF;
border-top-width: 0;
display: block;
background: url(/web/static/src/img/toggle-a-bg.png);
width: 21px;
height: 21px;
z-index: 10;
}
.openerp .open-sidebar .toggle-sidebar {
margin-left: 158px;
background-position: 21px 0;
position: absolute;
}
.openerp .closed-sidebar .toggle-sidebar {
border-left: none;
}
.openerp li.oe_sidebar_print {
padding-left: 20px;
background: 1px 3px url(/web/static/src/img/icons/gtk-print.png) no-repeat;
}
.openerp .oe_sidebar_print ul {
padding-left:8px;
}
.openerp.kitten-mode-activated .main_table {
background: url(http://placekitten.com/g/1500/800) repeat;
}
.openerp.kitten-mode-activated.clark-gable .main_table {
background: url(http://amigrave.com/ClarkGable.jpg);
background-size: 100%;
}
.openerp.kitten-mode-activated .header {
background: url(http://placekitten.com/g/211/65) repeat;
}
.openerp.kitten-mode-activated .menu {
background: #828282;
background: -moz-linear-gradient(top, #828282 0%, #4D4D4D 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#828282), color-stop(100%,#4D4D4D));
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#828282', endColorstr='#4D4D4D',GradientType=0 );
}
.openerp.kitten-mode-activated .menu a {
background: none;
}
.openerp.kitten-mode-activated .menu span {
background: none;
}
.openerp.kitten-mode-activated .sidebar-content li a,
.openerp.kitten-mode-activated .oe-application .view-manager-main-content h2.oe_view_title,
.openerp.kitten-mode-activated .oe-application .view-manager-main-content a.searchview_group_string,
.openerp.kitten-mode-activated .oe-application .view-manager-main-content label {
color: white;
}
.openerp.kitten-mode-activated .menu,
.openerp.kitten-mode-activated .header_corner,
.openerp.kitten-mode-activated .header_title,
.openerp.kitten-mode-activated .oe-application,
.openerp.kitten-mode-activated .oe_footer,
.openerp.kitten-mode-activated .loading,
.openerp.kitten-mode-activated .ui-dialog {
opacity:0.8;
filter:alpha(opacity=80);
}
.openerp.kitten-mode-activated .header .company_logo {
background: url(http://placekitten.com/g/180/46);
}
.openerp.kitten-mode-activated .loading {
background: #828282;
border-color: #828282;
}
.openerp .oe-m2o-drop-down-button {
margin-left: -24px;
}
.openerp .oe-m2o-drop-down-button img {
margin-bottom: -4px;
cursor: pointer;
}
.openerp .oe-m2o input {
border-right: none;
margin-right: 0px !important;
padding-bottom: 2px !important;
}
.openerp .oe-m2o-disabled-cm {
color: grey;
}
.openerp ul[role="listbox"] li a {
font-size:80%;
}
.parent_top {
vertical-align: text-top;
}
.openerp .oe-dialog-warning p {
padding-left: 1em;
font-size: 1.2em;
font-weight: bold;
}
.openerp .dhx_mini_calendar {
-moz-box-shadow: none;
-khtml-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.openerp .oe-treeview-table {
width: 100%;
background-color : #FFFFFF;
border-spacing: 0;
}
.openerp .oe-treeview-table tr:hover{
color: blue;
background-color : #D8D8D8;
}
.treeview-tr, .treeview-td {
cursor: pointer;
vertical-align: top;
text-align: left;
border-bottom: 1px solid #CFCCCC;
}
.openerp .oe-treeview-table .oe-number {
text-align: right !important;
}
.treeview-tr span, .treeview-td span {
font-size: 90%;
font-weight: normal;
white-space: nowrap;
display: block;
}
.treeview-tr.oe-treeview-first {
background: transparent url(/web/static/src/img/expand.gif) 0 50% no-repeat;
}
.oe-open .treeview-tr.oe-treeview-first {
background-image: url(/web/static/src/img/collapse.gif);
}
.treeview-tr.oe-treeview-first span,
.treeview-td.oe-treeview-first span {
margin-left: 16px;
}
.treeview-header {
vertical-align: top;
background-color : #D8D8D8;
white-space: nowrap;
text-align: left;
padding: 4px 5px;
}
ul.oe-arrow-list {
padding-left: 1.1em;
margin: 0;
white-space: nowrap;
}
ul.oe-arrow-list li {
display: inline-block;
margin-left: -1em;
}
ul.oe-arrow-list li span {
vertical-align: top;
display: inline-block;
border: 1em solid #DEDEDE;
line-height:0em;
}
ul.oe-arrow-list .oe-arrow-list-before {
border-left-color: rgba(0,0,0,0);
border-right-width:0;
}
ul.oe-arrow-list .oe-arrow-list-after {
border-color: rgba(0,0,0,0);
border-left-color: #DEDEDE;
border-right-width:0;
}
ul.oe-arrow-list li.oe-arrow-list-selected span {
border-color: #B5B9FF;
}
ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-before {
border-left-color: rgba(0,0,0,0);
}
ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-after {
border-color: rgba(0,0,0,0);
border-left-color: #B5B9FF;
}
.openerp ul.oe-arrow-list li:first-child span:first-child{
-webkit-border-top-left-radius: 3px;
-moz-border-radius-topleft: 3px;
border-top-left-radius: 3px;
-webkit-border-bottom-left-radius: 3px;
-moz-border-radius-bottomleft: 3px;
border-bottom-left-radius: 3px;
}
.openerp ul.oe-arrow-list li:last-child span:last-child{
-webkit-border-top-right-radius: 3px;
-moz-border-radius-topright: 3px;
border-top-right-radius: 3px;
-webkit-border-bottom-right-radius: 3px;
-moz-border-radius-bottomright: 3px;
border-bottom-right-radius: 3px;
}
.openerp .oe_view_editor {
width:100%;
border-collapse : collapse;
margin-left: -12px;
width: 100%;
background-color : white;
border-spacing: 0;
}
.openerp .oe_view_editor td{
text-align: center;
white-space: nowrap;
border: 1px solid #D8D8D8;
cursor: pointer;
font-size: 90%;
}
.openerp .oe_view_editor_field td{
border: 0px !important;
}
.openerp .oe_view_editor tr:hover {
background-color: #ecebf2;
}
/* Dialog traceback cases */
.openerp .oe_error_detail{
display: block;
}
.openerp .oe_error_send{
display:block;
}
.openerp .oe_fielddiv{
display:inline-block;
width:100%;
}
.openerp .oe_fielddiv input[type=text],textarea{
width:100%;
}
/* for Alignment center */
.openerp .oe_centeralign{
text-align:center;
}
.openerp .oe_applications_tiles {
color: #4C4C4C;
text-shadow: #EEE 0 1px 0;
margin: 0 20px;
}
.openerp select.oe_search-view-filters-management {
font-style: oblique;
color: #999999;
}
.openerp .oe_search-view-filters-management option,
.openerp .oe_search-view-filters-management optgroup {
font-style: normal;
color: black;
}
/* Internet Explorer Fix */
a img {
border: none;
}

View File

@ -846,6 +846,18 @@ instance.web.WebClient = instance.web.Widget.extend({
this.querystring = '?' + jQuery.param.querystring(); this.querystring = '?' + jQuery.param.querystring();
this._current_state = null; this._current_state = null;
}, },
_get_version_label: function() {
if (this.session.openerp_entreprise) {
return 'OpenERP';
} else {
return _t("OpenERP - Unsupported/Community Version");
}
},
set_title: function(title) {
title = _.str.clean(title);
var sep = _.isEmpty(title) ? '' : ' - ';
document.title = title + sep + 'OpenERP';
},
start: function() { start: function() {
var self = this; var self = this;
this.$element.addClass("openerp openerp-web-client-container"); this.$element.addClass("openerp openerp-web-client-container");
@ -868,6 +880,7 @@ instance.web.WebClient = instance.web.Widget.extend({
$(this).attr('data-tipsy', 'true').tipsy().trigger('mouseenter'); $(this).attr('data-tipsy', 'true').tipsy().trigger('mouseenter');
}); });
this.$element.on('click', '.oe_dropdown_toggle', function(ev) { this.$element.on('click', '.oe_dropdown_toggle', function(ev) {
ev.preventDefault();
var $menu = $(this).find('.oe_dropdown_menu'); var $menu = $(this).find('.oe_dropdown_menu');
var state = $menu.is('.oe_opened'); var state = $menu.is('.oe_opened');
setTimeout(function() { setTimeout(function() {
@ -927,11 +940,11 @@ instance.web.WebClient = instance.web.Widget.extend({
self.user_menu.on_action.add(this.proxy('on_menu_action')); self.user_menu.on_action.add(this.proxy('on_menu_action'));
self.user_menu.do_update(); self.user_menu.do_update();
self.bind_hashchange(); self.bind_hashchange();
var version_label = _t("OpenERP - Unsupported/Community Version");
if (!self.session.openerp_entreprise) { if (!self.session.openerp_entreprise) {
var version_label = self._get_version_label();
self.$element.find('.oe_footer_powered').append(_.str.sprintf('<span> - <a href="http://www.openerp.com/support-or-publisher-warranty-contract" target="_blank">%s</a></span>', version_label)); self.$element.find('.oe_footer_powered').append(_.str.sprintf('<span> - <a href="http://www.openerp.com/support-or-publisher-warranty-contract" target="_blank">%s</a></span>', version_label));
document.title = version_label;
} }
self.set_title();
}, },
destroy_content: function() { destroy_content: function() {
_.each(_.clone(this.getChildren()), function(el) { _.each(_.clone(this.getChildren()), function(el) {
@ -997,6 +1010,7 @@ instance.web.WebClient = instance.web.Widget.extend({
this._current_state = state; this._current_state = state;
}, },
do_push_state: function(state) { do_push_state: function(state) {
this.set_title(state.title);
var url = '#' + $.param(state); var url = '#' + $.param(state);
this._current_state = _.clone(state); this._current_state = _.clone(state);
$.bbq.pushState(url); $.bbq.pushState(url);

View File

@ -99,7 +99,6 @@ openerp.web.corelib = function(instance) {
for (var name in prop) { for (var name in prop) {
// Check if we're overwriting an existing function // Check if we're overwriting an existing function
prototype[name] = typeof prop[name] == "function" && prototype[name] = typeof prop[name] == "function" &&
typeof _super[name] == "function" &&
fnTest.test(prop[name]) ? fnTest.test(prop[name]) ?
(function(name, fn) { (function(name, fn) {
return function() { return function() {

View File

@ -55,7 +55,8 @@ instance.web.DataImport = instance.web.Dialog.extend({
.filter(function (field) { .filter(function (field) {
return field.required && return field.required &&
!_.include(self.fields_with_defaults, field.id); }) !_.include(self.fields_with_defaults, field.id); })
.pluck('name') .pluck('id')
.uniq()
.value(); .value();
convert_fields(self); convert_fields(self);
self.all_fields.sort(); self.all_fields.sort();
@ -133,6 +134,10 @@ instance.web.DataImport = instance.web.Dialog.extend({
switch (field.type) { switch (field.type) {
case 'many2many': case 'many2many':
case 'many2one': case 'many2one':
// push a copy for the bare many2one field, to allow importing
// using name_search too - even if we default to exporting the XML ID
var many2one_field = _.extend({}, f)
parent.fields.push(many2one_field);
f.name += '/id'; f.name += '/id';
break; break;
case 'one2many': case 'one2many':
@ -261,10 +266,14 @@ instance.web.DataImport = instance.web.Dialog.extend({
fields = fields || this.fields; fields = fields || this.fields;
var f; var f;
f = _(fields).detect(function (field) { f = _(fields).detect(function (field) {
// TODO: levenshtein between header and field.string
return field.name === name return field.name === name
|| field.string.toLowerCase() === name.toLowerCase();
}); });
if (!f) {
f = _(fields).detect(function (field) {
// TODO: levenshtein between header and field.string
return field.string.toLowerCase() === name.toLowerCase();
});
}
if (f) { return f.name; } if (f) { return f.name; }
// if ``name`` is a path (o2m), we need to recurse through its .fields // if ``name`` is a path (o2m), we need to recurse through its .fields
@ -274,9 +283,13 @@ instance.web.DataImport = instance.web.Dialog.extend({
var column_name = name.substring(0, index); var column_name = name.substring(0, index);
f = _(fields).detect(function (field) { f = _(fields).detect(function (field) {
// field.name for o2m is $foo/id, so we want to match on id // field.name for o2m is $foo/id, so we want to match on id
return field.id === column_name return field.id === column_name;
|| field.string.toLowerCase() === column_name.toLowerCase()
}); });
if (!f) {
f = _(fields).detect(function (field) {
return field.string.toLowerCase() === column_name.toLowerCase();
});
}
if (!f) { return undefined; } if (!f) { return undefined; }
// if we found a matching field for the first path section, recurse in // if we found a matching field for the first path section, recurse in
@ -330,7 +343,7 @@ instance.web.DataImport = instance.web.Dialog.extend({
if (_.isEmpty(duplicates)) { if (_.isEmpty(duplicates)) {
this.toggle_import_button(required_valid); this.toggle_import_button(required_valid);
} else { } else {
var $err = $('<div id="msg" style="color: red;">Destination fields should only be selected once, some fields are selected more than once:</div>').insertBefore(this.$element.find('#result')); var $err = $('<div id="msg" style="color: red;">'+_t("Destination fields should only be selected once, some fields are selected more than once:")+'</div>').insertBefore(this.$element.find('#result'));
var $dupes = $('<dl>').appendTo($err); var $dupes = $('<dl>').appendTo($err);
_(duplicates).each(function(elements, value) { _(duplicates).each(function(elements, value) {
$('<dt>').text(value).appendTo($dupes); $('<dt>').text(value).appendTo($dupes);
@ -344,16 +357,30 @@ instance.web.DataImport = instance.web.Dialog.extend({
}, },
check_required: function() { check_required: function() {
if (!this.required_fields.length) { return true; } var self = this;
if (!self.required_fields.length) { return true; }
// Resolve field id based on column name, as there may be
// several ways to provide the value for a given field and
// thus satisfy the requirement.
// (e.g. m2o_id or m2o_id/id columns may be provided)
var resolve_field_id = function(column_name) {
var f = _.detect(self.fields, function(field) {
return field.name === column_name;
});
if (!f) { return column_name; };
return f.id;
};
var selected_fields = _(this.$element.find('.sel_fields').get()).chain() var selected_fields = _(this.$element.find('.sel_fields').get()).chain()
.pluck('value') .pluck('value')
.compact() .compact()
.map(resolve_field_id)
.value(); .value();
var missing_fields = _.difference(this.required_fields, selected_fields); var missing_fields = _.difference(this.required_fields, selected_fields);
if (missing_fields.length) { if (missing_fields.length) {
this.$element.find("#result").before('<div id="message" style="color:red">*Required Fields are not selected : ' + missing_fields + '.</div>'); this.$element.find("#result").before('<div id="message" style="color:red">' + _t("*Required Fields are not selected :") + missing_fields + '.</div>');
return false; return false;
} }
return true; return true;

View File

@ -78,13 +78,17 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
this.mutating_mutex = new $.Mutex(); this.mutating_mutex = new $.Mutex();
this.on_change_mutex = new $.Mutex(); this.on_change_mutex = new $.Mutex();
this.reload_mutex = new $.Mutex(); this.reload_mutex = new $.Mutex();
this.__clicked_inside = false;
this.__blur_timeout = null;
this.rendering_engine = new instance.web.form.FormRenderingEngineReadonly(this); this.rendering_engine = new instance.web.form.FormRenderingEngineReadonly(this);
this.qweb = null; // A QWeb instance will be created if the view is a QWeb template this.qweb = null; // A QWeb instance will be created if the view is a QWeb template
}, },
destroy: function() { destroy: function() {
_.each(this.get_widgets(), function(w) { _.each(this.get_widgets(), function(w) {
w.off('focused blurred');
w.destroy(); w.destroy();
}); });
this.$element.off('.formBlur');
this._super(); this._super();
}, },
on_loaded: function(data) { on_loaded: function(data) {
@ -106,6 +110,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
this.rendering_engine.render_to($dest); this.rendering_engine.render_to($dest);
} }
this.$element.on('mousedown.formBlur', function () {
self.__clicked_inside = true;
});
this.$buttons = $(QWeb.render("FormView.buttons", {'widget':self})); this.$buttons = $(QWeb.render("FormView.buttons", {'widget':self}));
if (this.options.$buttons) { if (this.options.$buttons) {
@ -197,6 +204,30 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
this.translatable_fields = []; this.translatable_fields = [];
this.$element.find('.oe_form_container').empty(); this.$element.find('.oe_form_container').empty();
}, },
widgetFocused: function() {
// Clear click flag if used to focus a widget
this.__clicked_inside = false;
if (this.__blur_timeout) {
clearTimeout(this.__blur_timeout);
this.__blur_timeout = null;
}
},
widgetBlurred: function() {
if (this.__clicked_inside) {
// clicked in an other section of the form (than the currently
// focused widget) => just ignore the blurring entirely?
this.__clicked_inside = false;
return;
}
var self = this;
// clear timeout, if any
this.widgetFocused();
this.__blur_timeout = setTimeout(function () {
self.trigger('blurred');
}, 0);
},
do_load_state: function(state, warm) { do_load_state: function(state, warm) {
if (state.id && this.datarecord.id != state.id) { if (state.id && this.datarecord.id != state.id) {
if (!this.dataset.get_id_index(state.id)) { if (!this.dataset.get_id_index(state.id)) {
@ -216,13 +247,12 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
} }
if (this.$buttons) { if (this.$buttons) {
this.$buttons.show(); this.$buttons.show();
this.$buttons.find('.oe_form_button_save').removeClass('oe_form_button_save_dirty');
} }
if (this.$pager) { if (this.$pager) {
this.$pager.show(); this.$pager.show();
} }
this.$element.show().css('visibility', 'hidden'); this.$element.show().css('visibility', 'hidden');
this.$element.removeClass('oe_form_dirty'); this.$element.add(this.$buttons).removeClass('oe_form_dirty');
return this.has_been_loaded.pipe(function() { return this.has_been_loaded.pipe(function() {
var result; var result;
if (self.dataset.index === null) { if (self.dataset.index === null) {
@ -298,16 +328,14 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
if (record.id) { if (record.id) {
self.do_push_state({id:record.id}); self.do_push_state({id:record.id});
} }
self.$element.removeClass('oe_form_dirty'); self.$element.add(self.$buttons).removeClass('oe_form_dirty');
self.$buttons.find('.oe_form_button_save').removeClass('oe_form_button_save_dirty');
}); });
}, },
on_form_changed: function() { on_form_changed: function() {
this.trigger("view_content_has_changed"); this.trigger("view_content_has_changed");
}, },
do_notify_change: function() { do_notify_change: function() {
this.$element.addClass('oe_form_dirty'); this.$element.add(this.$buttons).addClass('oe_form_dirty');
this.$buttons.find('.oe_form_button_save').addClass('oe_form_button_save_dirty');
}, },
on_pager_action: function(action) { on_pager_action: function(action) {
if (this.can_be_discarded()) { if (this.can_be_discarded()) {
@ -478,9 +506,8 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
} }
}); });
}, },
on_processed_onchange: function(response, processed) { on_processed_onchange: function(result, processed) {
try { try {
var result = response;
if (result.value) { if (result.value) {
for (var f in result.value) { for (var f in result.value) {
if (!result.value.hasOwnProperty(f)) { continue; } if (!result.value.hasOwnProperty(f)) { continue; }
@ -627,7 +654,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
* record or saving an existing one depending on whether the record * record or saving an existing one depending on whether the record
* already has an id property. * already has an id property.
* *
* @param {Function} success callback on save success * @param {Function} [success] callback on save success
* @param {Boolean} [prepend_on_create=false] if ``do_save`` creates a new record, should that record be inserted at the start of the dataset (by default, records are added at the end) * @param {Boolean} [prepend_on_create=false] if ``do_save`` creates a new record, should that record be inserted at the start of the dataset (by default, records are added at the end)
*/ */
do_save: function(success, prepend_on_create) { do_save: function(success, prepend_on_create) {
@ -701,7 +728,8 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
return $.Deferred().reject(); return $.Deferred().reject();
} else { } else {
return $.when(this.reload()).pipe(function () { return $.when(this.reload()).pipe(function () {
return $.when(r).then(success); }, null); return r; })
.then(success);
} }
}, },
/** /**
@ -734,8 +762,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
if (this.sidebar) { if (this.sidebar) {
this.sidebar.do_attachement_update(this.dataset, this.datarecord.id); this.sidebar.do_attachement_update(this.dataset, this.datarecord.id);
} }
this.reload(); //openerp.log("The record has been created with id #" + this.datarecord.id);
return $.when(_.extend(r, {created: true})).then(success); return $.when(this.reload()).pipe(function () {
return _.extend(r, {created: true}); })
.then(success);
} }
}, },
on_action: function (action) { on_action: function (action) {
@ -879,6 +909,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
register_field: function(field, name) { register_field: function(field, name) {
this.fields[name] = field; this.fields[name] = field;
this.fields_order.push(name); this.fields_order.push(name);
field.on('focused', null, this.proxy('widgetFocused'))
.on('blurred', null, this.proxy('widgetBlurred'));
if (this.get_field(name).translate) { if (this.get_field(name).translate) {
this.translatable_fields.push(field); this.translatable_fields.push(field);
} }
@ -1479,6 +1512,18 @@ instance.web.form.FormWidget = instance.web.Widget.extend(instance.web.form.Invi
$.fn.tipsy.clear(); $.fn.tipsy.clear();
this._super.apply(this, arguments); this._super.apply(this, arguments);
}, },
/**
* Sets up blur/focus forwarding from DOM elements to a widget (`this`)
*
* @param {jQuery} $e jQuery object of elements to bind focus/blur on
*/
setupFocus: function ($e) {
var self = this;
$e.on({
focus: function () { self.trigger('focused'); },
blur: function () { self.trigger('blurred'); }
});
},
process_modifiers: function() { process_modifiers: function() {
var compute_domain = instance.web.form.compute_domain; var compute_domain = instance.web.form.compute_domain;
var to_set = {}; var to_set = {};
@ -1576,10 +1621,12 @@ instance.web.form.WidgetButton = instance.web.form.FormWidget.extend({
}, },
start: function() { start: function() {
this._super.apply(this, arguments); this._super.apply(this, arguments);
this.$element.click(this.on_click); var $button = this.$element.find('button');
$button.click(this.on_click);
if (this.node.attrs.help || instance.connection.debug) { if (this.node.attrs.help || instance.connection.debug) {
this.do_attach_tooltip(); this.do_attach_tooltip();
} }
this.setupFocus($button);
}, },
on_click: function() { on_click: function() {
var self = this; var self = this;
@ -1805,7 +1852,7 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w
return this.get('value'); return this.get('value');
}, },
is_valid: function() { is_valid: function() {
return this.is_syntax_valid() && (! this.get('required') || ! this.is_false()); return this.is_syntax_valid() && !(this.get('required') && this.is_false());
}, },
is_syntax_valid: function() { is_syntax_valid: function() {
return true; return true;
@ -1898,9 +1945,11 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we
}, },
initialize_content: function() { initialize_content: function() {
var self = this; var self = this;
this.$element.find('input').change(function() { var $input = this.$element.find('input');
self.set({'value': instance.web.parse_value(self.$element.find('input').val(), self)}); $input.change(function() {
self.set({'value': instance.web.parse_value($input.val(), self)});
}); });
this.setupFocus($input);
}, },
set_value: function(value_) { set_value: function(value_) {
this._super(value_); this._super(value_);
@ -1944,7 +1993,9 @@ instance.web.form.FieldEmail = instance.web.form.FieldChar.extend({
template: 'FieldEmail', template: 'FieldEmail',
initialize_content: function() { initialize_content: function() {
this._super(); this._super();
this.$element.find('button').click(this.on_button_clicked); var $button = this.$element.find('button');
$button.click(this.on_button_clicked);
this.setupFocus($button);
}, },
render_value: function() { render_value: function() {
if (!this.get("effective_readonly")) { if (!this.get("effective_readonly")) {
@ -1968,7 +2019,9 @@ instance.web.form.FieldUrl = instance.web.form.FieldChar.extend({
template: 'FieldUrl', template: 'FieldUrl',
initialize_content: function() { initialize_content: function() {
this._super(); this._super();
this.$element.find('button').click(this.on_button_clicked); var $button = this.$element.find('button');
$button.click(this.on_button_clicked);
this.setupFocus($button);
}, },
render_value: function() { render_value: function() {
if (!this.get("effective_readonly")) { if (!this.get("effective_readonly")) {
@ -2037,12 +2090,14 @@ instance.web.DateTimeWidget = instance.web.OldWidget.extend({
showButtonPanel: true showButtonPanel: true
}); });
this.$element.find('img.oe_datepicker_trigger').click(function() { this.$element.find('img.oe_datepicker_trigger').click(function() {
if (!self.get("effective_readonly") && !self.picker('widget').is(':visible')) { if (self.get("effective_readonly") || self.picker('widget').is(':visible')) {
self.picker('setDate', self.get('value') ? instance.web.auto_str_to_date(self.get('value')) : new Date()); self.$input.focus();
self.$input_picker.show(); return;
self.picker('show');
self.$input_picker.hide();
} }
self.picker('setDate', self.value ? instance.web.auto_str_to_date(self.value) : new Date());
self.$input_picker.show();
self.picker('show');
self.$input_picker.hide();
}); });
this.set_readonly(false); this.set_readonly(false);
this.set({'value': false}); this.set({'value': false});
@ -2052,7 +2107,10 @@ instance.web.DateTimeWidget = instance.web.OldWidget.extend({
}, },
on_picker_select: function(text, instance_) { on_picker_select: function(text, instance_) {
var date = this.picker('getDate'); var date = this.picker('getDate');
this.$input.val(date ? this.format_client(date) : '').change(); this.$input
.val(date ? this.format_client(date) : '')
.change()
.focus();
}, },
set_value: function(value_) { set_value: function(value_) {
this.set({'value': value_}); this.set({'value': value_});
@ -2119,6 +2177,7 @@ instance.web.form.FieldDatetime = instance.web.form.AbstractField.extend(instanc
this.set({'value': this.datewidget.get_value()}); this.set({'value': this.datewidget.get_value()});
}, this)); }, this));
this.datewidget.appendTo(this.$element); this.datewidget.appendTo(this.$element);
this.setupFocus(this.datewidget.$input);
} }
}, },
set_value: function(value_) { set_value: function(value_) {
@ -2165,6 +2224,7 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we
} else { } else {
this.$textarea.attr('disabled', 'disabled'); this.$textarea.attr('disabled', 'disabled');
} }
this.setupFocus(this.$textarea);
}, },
set_value: function(value_) { set_value: function(value_) {
this._super.apply(this, arguments); this._super.apply(this, arguments);
@ -2221,6 +2281,7 @@ instance.web.form.FieldBoolean = instance.web.form.AbstractField.extend({
start: function() { start: function() {
this._super.apply(this, arguments); this._super.apply(this, arguments);
this.$checkbox = $("input", this.$element); this.$checkbox = $("input", this.$element);
this.setupFocus(this.$checkbox);
this.$element.click(_.bind(function() { this.$element.click(_.bind(function() {
this.set({'value': this.$checkbox.is(':checked')}); this.set({'value': this.$checkbox.is(':checked')});
}, this)); }, this));
@ -2289,7 +2350,7 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(instan
// changing the selected value), takes the action as validating the // changing the selected value), takes the action as validating the
// row // row
var ischanging = false; var ischanging = false;
this.$element.find('select') var $select = this.$element.find('select')
.change(_.bind(function() { .change(_.bind(function() {
this.set({'value': this.values[this.$element.find('select')[0].selectedIndex][0]}); this.set({'value': this.values[this.$element.find('select')[0].selectedIndex][0]});
}, this)) }, this))
@ -2300,6 +2361,7 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(instan
e.stopPropagation(); e.stopPropagation();
ischanging = false; ischanging = false;
}); });
this.setupFocus($select);
}, },
set_value: function(value_) { set_value: function(value_) {
value_ = value_ === null ? false : value_; value_ = value_ === null ? false : value_;
@ -2458,6 +2520,7 @@ instance.web.form.CompletionFieldMixin = {
); );
pop.on_select_elements.add(function(element_ids) { pop.on_select_elements.add(function(element_ids) {
self.add_id(element_ids[0]); self.add_id(element_ids[0]);
self.focus();
}); });
}, },
/** /**
@ -2507,6 +2570,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
this.$follow_button.click(function() { this.$follow_button.click(function() {
if (!self.get('value')) { if (!self.get('value')) {
self.focus();
return; return;
} }
var pop = new instance.web.form.FormOpenPopup(self.view); var pop = new instance.web.form.FormOpenPopup(self.view);
@ -2521,6 +2585,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
pop.on_write_completed.add_last(function() { pop.on_write_completed.add_last(function() {
self.display_value = {}; self.display_value = {};
self.render_value(); self.render_value();
self.focus();
}); });
}); });
@ -2535,13 +2600,13 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
this.$drop_down.click(function() { this.$drop_down.click(function() {
if (self.$input.autocomplete("widget").is(":visible")) { if (self.$input.autocomplete("widget").is(":visible")) {
self.$input.autocomplete("close"); self.$input.autocomplete("close");
self.$input.focus();
} else { } else {
if (self.get("value") && ! self.floating) { if (self.get("value") && ! self.floating) {
self.$input.autocomplete("search", ""); self.$input.autocomplete("search", "");
} else { } else {
self.$input.autocomplete("search"); self.$input.autocomplete("search");
} }
self.$input.focus();
} }
}); });
var tip_def = $.Deferred(); var tip_def = $.Deferred();
@ -2628,6 +2693,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
} }
isSelecting = false; isSelecting = false;
}); });
this.setupFocus(this.$input.add(this.$follow_button));
}, },
render_value: function(no_recurse) { render_value: function(no_recurse) {
@ -3007,13 +3073,15 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
if (!this.viewmanager.views[this.viewmanager.active_view]) if (!this.viewmanager.views[this.viewmanager.active_view])
return true; return true;
var view = this.viewmanager.views[this.viewmanager.active_view].controller; var view = this.viewmanager.views[this.viewmanager.active_view].controller;
if (this.viewmanager.active_view === "form") { switch (this.viewmanager.active_view) {
for (var f in view.fields) { case 'form':
f = view.fields[f]; return _(view.fields).chain()
if (!f.is_valid()) { .invoke('is_valid')
return false; .all(_.identity)
} .value();
} break;
case 'list':
return view.is_valid();
} }
return true; return true;
}, },
@ -3073,6 +3141,46 @@ instance.web.form.One2ManyDataSet = instance.web.BufferedDataSet.extend({
instance.web.form.One2ManyListView = instance.web.ListView.extend({ instance.web.form.One2ManyListView = instance.web.ListView.extend({
_template: 'One2Many.listview', _template: 'One2Many.listview',
init: function (parent, dataset, view_id, options) {
this._super(parent, dataset, view_id, _.extend(options || {}, {
ListType: instance.web.form.One2ManyList
}));
},
is_valid: function () {
var form;
// A list not being edited is always valid
if (!(form = this.first_edition_form())) {
return true;
}
// If the form has not been modified, the view can only be valid
// NB: is_dirty will also be set on defaults/onchanges/whatever?
// oe_form_dirty seems to only be set on actual user actions
if (!form.$element.is('.oe_form_dirty')) {
return true;
}
// Otherwise validate internal form
return _(form.fields).chain()
.invoke(function () {
this._check_css_flag();
return this.is_valid();
})
.all(_.identity)
.value();
},
first_edition_form: function () {
var get_form = function (group_or_list) {
if (group_or_list.edition) {
return group_or_list.edition_form;
}
return _(group_or_list.children).chain()
.map(get_form)
.compact()
.first()
.value();
};
return get_form(this.groups);
},
do_add_record: function () { do_add_record: function () {
if (this.options.editable) { if (this.options.editable) {
this._super.apply(this, arguments); this._super.apply(this, arguments);
@ -3127,9 +3235,55 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
}); });
}, },
do_button_action: function (name, id, callback) { do_button_action: function (name, id, callback) {
var _super = _.bind(this._super, this);
this.o2m.view.do_save().then(function () {
_super(name, id, callback);
});
}
});
instance.web.form.One2ManyList = instance.web.ListView.List.extend({
KEY_RETURN: 13,
// blurring caused by hitting the [Return] key, should skip the
// autosave-on-blur and let the handler for [Return] do its thing
__return_blur: false,
render_row_as_form: function () {
var self = this; var self = this;
var def = $.Deferred().then(callback).then(function() {self.o2m.view.reload();}); return this._super.apply(this, arguments).then(function () {
return this._super(name, id, _.bind(def.resolve, def)); // Replace the "Save Row" button with "Cancel Edition"
self.edition_form.$element
.undelegate('button.oe-edit-row-save', 'click')
.delegate('button.oe-edit-row-save', 'click', function () {
self.cancel_pending_edition();
});
// Overload execute_action on the edition form to perform a simple
// reload_record after the action is done, rather than fully
// reload the parent view (or something)
var _execute_action = self.edition_form.do_execute_action;
self.edition_form.do_execute_action = function (action, dataset, record_id, _callback) {
return _execute_action.call(this, action, dataset, record_id, function () {
self.view.reload_record(
self.view.records.get(record_id));
});
};
self.edition_form.on('blurred', null, function () {
if (self.__return_blur) {
delete self.__return_blur;
return;
}
if (!self.edition_form.widget_is_stopped) {
self.view.ensure_saved();
}
});
});
},
on_row_keyup: function (e) {
if (e.which === this.KEY_RETURN) {
this.__return_blur = true;
}
this._super(e);
} }
}); });
@ -3336,6 +3490,10 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
get_value: function() { get_value: function() {
return [commands.replace_with(this.get('value'))]; return [commands.replace_with(this.get('value'))];
}, },
is_false: function () {
return _(this.dataset.ids).isEmpty();
},
load_view: function() { load_view: function() {
var self = this; var self = this;
this.list_view = new instance.web.form.Many2ManyListView(this, this.dataset, false, { this.list_view = new instance.web.form.Many2ManyListView(this, this.dataset, false, {
@ -3920,6 +4078,7 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(instan
} }
}, },
initialize_content: function() { initialize_content: function() {
var self = this;
this.selection = new instance.web.form.FieldSelection(this, { attrs: { this.selection = new instance.web.form.FieldSelection(this, { attrs: {
name: 'selection' name: 'selection'
}}); }});
@ -3929,6 +4088,9 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(instan
this.selection.$element = $(".oe_form_view_reference_selection", this.$element); this.selection.$element = $(".oe_form_view_reference_selection", this.$element);
this.selection.renderElement(); this.selection.renderElement();
this.selection.start(); this.selection.start();
this.selection
.on('focused', null, function () {self.trigger('focused')})
.on('blurred', null, function () {self.trigger('blurred')});
this.m2o = new instance.web.form.FieldMany2One(this, { attrs: { this.m2o = new instance.web.form.FieldMany2One(this, { attrs: {
name: 'm2o' name: 'm2o'
@ -3939,6 +4101,9 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(instan
this.m2o.$element = $(".oe_form_view_reference_m2o", this.$element); this.m2o.$element = $(".oe_form_view_reference_m2o", this.$element);
this.m2o.renderElement(); this.m2o.renderElement();
this.m2o.start(); this.m2o.start();
this.m2o
.on('focused', null, function () {self.trigger('focused')})
.on('blurred', null, function () {self.trigger('blurred')});
}, },
is_false: function() { is_false: function() {
return typeof(this.get_value()) !== 'string'; return typeof(this.get_value()) !== 'string';
@ -4070,6 +4235,13 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(instance.
return false; return false;
} }
}, },
set_filename: function(value) {
var filename = this.node.attrs.filename;
if (this.view.fields[filename]) {
this.view.fields[filename].set_value(value);
this.view.fields[filename].on_ui_change();
}
},
on_clear: function() { on_clear: function() {
if (this.get('value') !== false) { if (this.get('value') !== false) {
this.binary_value = false; this.binary_value = false;

View File

@ -64,7 +64,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
this.records = new Collection(); this.records = new Collection();
this.set_groups(new instance.web.ListView.Groups(this)); this.set_groups(new (this.options.GroupsType)(this));
if (this.dataset instanceof instance.web.DataSetStatic) { if (this.dataset instanceof instance.web.DataSetStatic) {
this.groups.datagroup = new instance.web.StaticDataGroup(this.dataset); this.groups.datagroup = new instance.web.StaticDataGroup(this.dataset);
@ -87,6 +87,14 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
this.no_leaf = false; this.no_leaf = false;
}, },
set_default_options: function (options) {
this._super(options);
_.defaults(this.options, {
GroupsType: instance.web.ListView.Groups,
ListType: instance.web.ListView.List
});
},
/** /**
* Retrieves the view's number of records per page (|| section) * Retrieves the view's number of records per page (|| section)
* *
@ -549,6 +557,20 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
reload: function () { reload: function () {
return this.reload_content(); return this.reload_content();
}, },
reload_record: function (record) {
return this.dataset.read_ids(
[record.get('id')],
_.pluck(_(this.columns).filter(function (r) {
return r.tag === 'field';
}), 'name')
).then(function (records) {
_(records[0]).each(function (value, key) {
record.set(key, value, {silent: true});
});
record.trigger('change', record);
});
},
do_load_state: function(state, warm) { do_load_state: function(state, warm) {
var reload = false; var reload = false;
if (state.page && this.page !== state.page) { if (state.page && this.page !== state.page) {
@ -1055,11 +1077,11 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
* @returns {Object} object with the keys ``ids`` and ``records``, holding respectively the ids of all selected records and the records themselves. * @returns {Object} object with the keys ``ids`` and ``records``, holding respectively the ids of all selected records and the records themselves.
*/ */
get_selection: function () { get_selection: function () {
var result = {ids: [], records: []};
if (!this.options.selectable) { if (!this.options.selectable) {
return []; return result;
} }
var records = this.records; var records = this.records;
var result = {ids: [], records: []};
this.$current.find('th.oe-record-selector input:checked') this.$current.find('th.oe-record-selector input:checked')
.closest('tr').each(function () { .closest('tr').each(function () {
var record = records.get($(this).data('id')); var record = records.get($(this).data('id'));
@ -1102,17 +1124,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
* @returns {$.Deferred} promise to the finalization of the reloading * @returns {$.Deferred} promise to the finalization of the reloading
*/ */
reload_record: function (record) { reload_record: function (record) {
return this.dataset.read_ids( return this.view.reload_record(record);
[record.get('id')],
_.pluck(_(this.columns).filter(function (r) {
return r.tag === 'field';
}), 'name')
).then(function (records) {
_(records[0]).each(function (value, key) {
record.set(key, value, {silent: true});
});
record.trigger('change', record);
});
}, },
/** /**
* Renders a list record to HTML * Renders a list record to HTML
@ -1275,7 +1287,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
self.records.proxy(group.value).reset(); self.records.proxy(group.value).reset();
delete self.children[group.value]; delete self.children[group.value];
} }
var child = self.children[group.value] = new instance.web.ListView.Groups(self.view, { var child = self.children[group.value] = new (self.view.options.GroupsType)(self.view, {
records: self.records.proxy(group.value), records: self.records.proxy(group.value),
options: self.options, options: self.options,
columns: self.columns columns: self.columns
@ -1378,7 +1390,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
}, },
render_dataset: function (dataset) { render_dataset: function (dataset) {
var self = this, var self = this,
list = new instance.web.ListView.List(this, { list = new (this.view.options.ListType)(this, {
options: this.options, options: this.options,
columns: this.columns, columns: this.columns,
dataset: dataset, dataset: dataset,

View File

@ -125,29 +125,27 @@ openerp.web.list_editable = function (instance) {
* Checks if a record is being edited, and if so cancels it * Checks if a record is being edited, and if so cancels it
*/ */
cancel_pending_edition: function () { cancel_pending_edition: function () {
var self = this, cancelled = $.Deferred(); var self = this, cancelled;
if (!this.edition) { if (!this.edition) {
cancelled.resolve(); return $.when();
return cancelled.promise();
} }
if (this.edition_id != null) { if (this.edition_id) {
this.reload_record(self.records.get(this.edition_id)).then(function () { cancelled = this.reload_record(this.records.get(this.edition_id));
cancelled.resolve();
});
} else { } else {
cancelled.resolve(); cancelled = $.when();
} }
cancelled.then(function () { cancelled.then(function () {
self.view.unpad_columns(); self.view.unpad_columns();
self.edition_form.destroy(); self.edition_form.destroy();
self.edition_form.$element.remove(); self.edition_form.$element.remove();
delete self.edition_form; delete self.edition_form;
self.dataset.index = null;
delete self.edition_id; delete self.edition_id;
delete self.edition; delete self.edition;
}); });
this.pad_table_to(5); this.pad_table_to(5);
return cancelled.promise(); return cancelled;
}, },
/** /**
* Adapts this list's view description to be suitable to the inner form * Adapts this list's view description to be suitable to the inner form
@ -171,24 +169,29 @@ openerp.web.list_editable = function (instance) {
var self = this; var self = this;
switch (e.which) { switch (e.which) {
case KEY_RETURN: case KEY_RETURN:
this.save_row().then(function (result) { $(e.target).blur();
if (result.created) { e.preventDefault();
self.new_record(); //e.stopImmediatePropagation();
return; setTimeout(function () {
} self.save_row().then(function (result) {
if (result.created) {
self.new_record();
return;
}
var next_record_id, var next_record_id,
next_record = self.records.at( next_record = self.records.at(
self.records.indexOf(result.edited_record) + 1); self.records.indexOf(result.edited_record) + 1);
if (next_record) { if (next_record) {
next_record_id = next_record.get('id'); next_record_id = next_record.get('id');
self.dataset.index = _(self.dataset.ids) self.dataset.index = _(self.dataset.ids)
.indexOf(next_record_id); .indexOf(next_record_id);
} else { } else {
self.dataset.index = 0; self.dataset.index = 0;
next_record_id = self.records.at(0).get('id'); next_record_id = self.records.at(0).get('id');
} }
self.edit_record(next_record_id); self.edit_record(next_record_id);
}, 0);
}); });
break; break;
case KEY_ESCAPE: case KEY_ESCAPE:
@ -198,14 +201,15 @@ openerp.web.list_editable = function (instance) {
}, },
render_row_as_form: function (row) { render_row_as_form: function (row) {
var self = this; var self = this;
this.cancel_pending_edition().then(function () { return this.ensure_saved().pipe(function () {
var record_id = $(row).data('id'); var record_id = $(row).data('id');
var $new_row = $('<tr>', { var $new_row = $('<tr>', {
id: _.uniqueId('oe-editable-row-'), id: _.uniqueId('oe-editable-row-'),
'data-id': record_id, 'data-id': record_id,
'class': (row ? $(row).attr('class') : '') + ' oe_form', 'class': (row ? $(row).attr('class') : ''),
click: function (e) {e.stopPropagation();} click: function (e) {e.stopPropagation();}
}) })
.addClass('oe_form oe_form_container')
.delegate('button.oe-edit-row-save', 'click', function () { .delegate('button.oe-edit-row-save', 'click', function () {
self.save_row(); self.save_row();
}) })
@ -214,7 +218,13 @@ openerp.web.list_editable = function (instance) {
}) })
.keyup(function () { .keyup(function () {
return self.on_row_keyup.apply(self, arguments); }) return self.on_row_keyup.apply(self, arguments); })
.keydown(function (e) { e.stopPropagation(); }); .keydown(function (e) { e.stopPropagation(); })
.keypress(function (e) {
if (e.which === KEY_RETURN) {
return false;
}
});
if (row) { if (row) {
$new_row.replaceAll(row); $new_row.replaceAll(row);
} else if (self.options.editable) { } else if (self.options.editable) {
@ -236,14 +246,16 @@ openerp.web.list_editable = function (instance) {
} }
self.edition = true; self.edition = true;
self.edition_id = record_id; self.edition_id = record_id;
$new_row.addClass("oe_form_container"); self.dataset.index = _(self.dataset.ids).indexOf(record_id);
self.edition_form = new instance.web.ListEditableFormView(self.view, self.dataset, false); if (self.dataset.index === -1) {
self.edition_form.$element = $new_row; self.dataset.index = null;
self.edition_form.editable_list = self; }
// HO HO self.edition_form = _.extend(new instance.web.ListEditableFormView(self.view, self.dataset, false), {
// empty $element: $new_row,
$.when(self.edition_form.on_loaded(self.get_form_fields_view())).then(function () { editable_list: self
// put in $.when just in case FormView.on_loaded becomes asynchronous });
// put in $.when just in case FormView.on_loaded becomes asynchronous
return $.when(self.edition_form.on_loaded(self.get_form_fields_view())).then(function () {
$new_row.find('> td') $new_row.find('> td')
.end() .end()
.find('td:last').removeClass('oe-field-cell').end(); .find('td:last').removeClass('oe-field-cell').end();
@ -299,7 +311,7 @@ openerp.web.list_editable = function (instance) {
*/ */
save_row: function () { save_row: function () {
//noinspection JSPotentiallyInvalidConstructorUsage //noinspection JSPotentiallyInvalidConstructorUsage
var self = this, done = $.Deferred(); var self = this;
return this.edition_form return this.edition_form
.do_save(null, this.options.editable === 'top') .do_save(null, this.options.editable === 'top')
.pipe(function (result) { .pipe(function (result) {
@ -319,18 +331,24 @@ openerp.web.list_editable = function (instance) {
created: result.created || false, created: result.created || false,
edited_record: edited_record edited_record: edited_record
}; };
}, null); });
}, null); });
}, },
/** /**
* If the current list is being edited, ensures it's saved * If the current list is being edited, ensures it's saved
*/ */
ensure_saved: function () { ensure_saved: function () {
if (this.edition) { if (this.edition) {
return this.save_row(); // kinda-hack-ish: if the user has entered data in a field,
// oe_form_dirty will be set on the form so save, otherwise
// discard the current (entirely empty) line
if (this.edition_form.$element.is('.oe_form_dirty')) {
return this.save_row();
}
return this.cancel_pending_edition();
} }
//noinspection JSPotentiallyInvalidConstructorUsage //noinspection JSPotentiallyInvalidConstructorUsage
return $.Deferred().resolve().promise(); return $.when();
}, },
/** /**
* Cancels the edition of the row for the current dataset index * Cancels the edition of the row for the current dataset index
@ -349,7 +367,6 @@ openerp.web.list_editable = function (instance) {
[record_id, this.dataset]); [record_id, this.dataset]);
}, },
new_record: function () { new_record: function () {
this.dataset.index = null;
this.render_row_as_form(); this.render_row_as_form();
}, },
render_record: function (record) { render_record: function (record) {
@ -420,8 +437,7 @@ openerp.web.list_editable = function (instance) {
w.appendTo($td); w.appendTo($td);
$td.appendTo($element); $td.appendTo($element);
}); });
save = QWeb.render('ListView.row.save'); $(QWeb.render('ListView.row.save')).appendTo($element);
$(save).appendTo($element);
}, },
}); });
}; };

View File

@ -36,6 +36,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
do_push_state: function(state) { do_push_state: function(state) {
if (this.getParent() && this.getParent().do_push_state) { if (this.getParent() && this.getParent().do_push_state) {
if (this.inner_action) { if (this.inner_action) {
state['title'] = this.inner_action.name;
state['model'] = this.inner_action.res_model; state['model'] = this.inner_action.res_model;
if (this.inner_action.id) { if (this.inner_action.id) {
state['action_id'] = this.inner_action.id; state['action_id'] = this.inner_action.id;
@ -894,8 +895,8 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
// TODO fme: should add the language to fields_view_get because between the fields view get // TODO fme: should add the language to fields_view_get because between the fields view get
// and the moment the user opens the translation dialog, the user language could have been changed // and the moment the user opens the translation dialog, the user language could have been changed
this.view_language = view.session.user_context.lang; this.view_language = view.session.user_context.lang;
this['on_button' + _t("Save")] = this.on_button_Save; this['on_button_' + _t("Save")] = this.on_btn_save;
this['on_button' + _t("Close")] = this.on_button_Close; this['on_button_' + _t("Close")] = this.on_btn_close;
this._super(view, { this._super(view, {
width: '80%', width: '80%',
height: '80%' height: '80%'
@ -976,7 +977,7 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
} }
}); });
}, },
on_button_Save: function() { on_btn_save: function() {
var trads = {}, var trads = {},
self = this, self = this,
trads_mutex = new $.Mutex(); trads_mutex = new $.Mutex();
@ -999,7 +1000,7 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
}); });
this.close(); this.close();
}, },
on_button_Close: function() { on_btn_close: function() {
this.close(); this.close();
} }
}); });

View File

@ -684,7 +684,7 @@
<button type="button" class="oe_button oe_form_button_create">Create</button> <button type="button" class="oe_button oe_form_button_create">Create</button>
</span> </span>
<span class="oe_form_buttons_edit"> <span class="oe_form_buttons_edit">
<button type="button" class="oe_button oe_form_button_save">Save</button> <span class="oe_fade">or</span> <a href="#" class="oe_bold oe_form_button_cancel">Discard</a> <button type="button" class="oe_button oe_form_button_save oe_highlight_on_dirty">Save</button> <span class="oe_fade">or</span> <a href="#" class="oe_bold oe_form_button_cancel">Discard</a>
</span> </span>
</t> </t>
</div> </div>
@ -1411,8 +1411,7 @@
<li> <li>
<select class="searchview_extended_prop_field"> <select class="searchview_extended_prop_field">
<t t-foreach="widget.attrs.fields" t-as="field"> <t t-foreach="widget.attrs.fields" t-as="field">
<option t-if="typeof field.store === 'undefined' || field.store || field.fnct_search" <option t-att="{'selected': field === widget.attrs.selected ? 'selected' : null}"
t-att="{'selected': field === widget.attrs.selected ? 'selected' : null}"
t-att-value="field.name"> t-att-value="field.name">
<t t-esc="field.string"/> <t t-esc="field.string"/>
</option> </option>
@ -1495,7 +1494,7 @@
<tr> <tr>
<td width="16px" t-att-style="'background-position: ' + 20*rec.level + 'px; padding-left: ' + 20*rec.level + 'px'"> <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" <img t-if="rec.child_id.length" t-att-id="'parentimg-' + rec.id"
src="/web/static/src/img/collapse.gif" width="16" height="16" border="0"/> t-att-src='_s + "/web/static/src/img/collapse.gif"' width="16" height="16" border="0"/>
</td> </td>
<td style="cursor: pointer;"> <td style="cursor: pointer;">
<a style="text-decoration:none" href="javascript:void(0);"> <a style="text-decoration:none" href="javascript:void(0);">
@ -1507,22 +1506,22 @@
</td> </td>
<td width="2%"> <td width="2%">
<img t-if="rec.att_list.length" <img t-if="rec.att_list.length"
id="side-add" src="/web/static/src/img/icons/gtk-add.png" style="cursor: pointer;"/> id="side-add" t-att-src='_s + "/web/static/src/img/icons/gtk-add.png"' style="cursor: pointer;"/>
</td> </td>
<td width="2%"> <td width="2%">
<img id="side-remove" src="/web/static/src/img/icons/gtk-remove.png" style="cursor: pointer;"/> <img id="side-remove" t-att-src='_s + "/web/static/src/img/icons/gtk-remove.png"' style="cursor: pointer;"/>
</td> </td>
<td width="2%"> <td width="2%">
<img t-if="rec.att_list.length and !_.include(no_properties, rec.att_list[0])" <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;"/> id="side-edit" t-att-src='_s + "/web/static/src/img/icons/gtk-edit.png"' style="cursor: pointer;"/>
</td> </td>
<td width="2%"> <td width="2%">
<img t-if="rec.att_list.length" <img t-if="rec.att_list.length"
id="side-up" src="/web/static/src/img/icons/gtk-go-up.png" style="cursor: pointer;"/> id="side-up" t-att-src='_s + "/web/static/src/img/icons/gtk-go-up.png"' style="cursor: pointer;"/>
</td> </td>
<td width="2%"> <td width="2%">
<img t-if="rec.att_list.length" <img t-if="rec.att_list.length"
id="side-down" src="/web/static/src/img/icons/gtk-go-down.png" style="cursor: pointer;"/> id="side-down" t-att-src='_s + "/web/static/src/img/icons/gtk-go-down.png"' style="cursor: pointer;"/>
</td> </td>
<t t-if="rec.child_id.length"> <t t-if="rec.child_id.length">
<t t-set="data" t-value="rec.child_id"/> <t t-set="data" t-value="rec.child_id"/>
@ -1546,7 +1545,6 @@
<t t-name="vieweditor_boolean"> <t t-name="vieweditor_boolean">
<input type="checkbox" t-att-id="widget.name"/> <input type="checkbox" t-att-id="widget.name"/>
</t> </t>
<t t-name="ExportView"> <t t-name="ExportView">
<a id="exportview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Export</a> <a id="exportview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Export</a>
</t> </t>

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-17 04:44+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15419)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
"X-Poedit-Language: Czech\n" "X-Poedit-Language: Czech\n"
#. openerp-web #. openerp-web

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -15,8 +15,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
"Language: es\n" "Language: es\n"
#. openerp-web #. openerp-web

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n" "X-Launchpad-Export-Date: 2012-06-26 05:35+0000\n"
"X-Generator: Launchpad (build 15405)\n" "X-Generator: Launchpad (build 15482)\n"
#. openerp-web #. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11 #: addons/web_calendar/static/src/js/calendar.js:11

Some files were not shown because too many files have changed in this diff Show More