[MERGE] Merged with main web.
bzr revid: tde@openerp.com-20120611083449-fjcy5injx0wydrlm bzr revid: tde@openerp.com-20120612074745-zmfq9i0h3gcqz2z1 bzr revid: tde@openerp.com-20120613153033-8yhiis0mk7a91rfu bzr revid: tde@openerp.com-20120614083859-eo4gpuvxuqhw9ob1 bzr revid: tde@openerp.com-20120615081833-tyv0wl56wcppwstp bzr revid: tde@openerp.com-20120618075747-tvealk8do8h1sigb bzr revid: tde@openerp.com-20120619073535-rgleb9j9g5xy2xeg bzr revid: tde@openerp.com-20120620073852-xatt6u4855i5g681 bzr revid: tde@openerp.com-20120621081613-hfu05ia738euiarr
This commit is contained in:
commit
cefce78cb6
|
@ -332,12 +332,9 @@ def httprequest(f):
|
|||
# OpenERP Web werkzeug Session Managment wraped using with
|
||||
#----------------------------------------------------------
|
||||
STORES = {}
|
||||
SESSION_TIMEOUT = 7 * 24 * 60 * 60 # FIXME make it configurable ?
|
||||
SESSION_COUNTER = 0
|
||||
|
||||
@contextlib.contextmanager
|
||||
def session_context(request, storage_path, session_cookie='sessionid'):
|
||||
global SESSION_COUNTER
|
||||
session_store, session_lock = STORES.get(storage_path, (None, None))
|
||||
if not session_store:
|
||||
session_store = werkzeug.contrib.sessions.FilesystemSessionStore(
|
||||
|
@ -347,22 +344,10 @@ def session_context(request, storage_path, session_cookie='sessionid'):
|
|||
|
||||
sid = request.cookies.get(session_cookie)
|
||||
with session_lock:
|
||||
|
||||
SESSION_COUNTER += 1
|
||||
if SESSION_COUNTER % 100 == 0:
|
||||
SESSION_COUNTER = 0
|
||||
for s in session_store.list():
|
||||
ss = session_store.get(s)
|
||||
t = ss.get('timestamp')
|
||||
if not t or t + SESSION_TIMEOUT < time.time():
|
||||
_logger.debug('deleting http session %s', s)
|
||||
session_store.delete(ss)
|
||||
|
||||
if sid:
|
||||
request.session = session_store.get(sid)
|
||||
else:
|
||||
request.session = session_store.new()
|
||||
request.session['timestamp'] = time.time()
|
||||
|
||||
try:
|
||||
yield request.session
|
||||
|
@ -379,7 +364,7 @@ def session_context(request, storage_path, session_cookie='sessionid'):
|
|||
and not value.jsonp_requests
|
||||
# FIXME do not use a fixed value
|
||||
and value._creation_time + (60*5) < time.time()):
|
||||
_logger.debug('remove OpenERP session %s', key)
|
||||
_logger.debug('remove session %s', key)
|
||||
removed_sessions.add(key)
|
||||
del request.session[key]
|
||||
|
||||
|
|
|
@ -1331,19 +1331,39 @@ class Binary(openerpweb.Controller):
|
|||
|
||||
@openerpweb.httprequest
|
||||
def image(self, req, model, id, field, **kw):
|
||||
last_update = '__last_update'
|
||||
Model = req.session.model(model)
|
||||
context = req.session.eval_context(req.context)
|
||||
headers = [('Content-Type', 'image/png')]
|
||||
etag = req.httprequest.headers.get('If-None-Match')
|
||||
hashed_session = hashlib.md5(req.session_id).hexdigest()
|
||||
if etag:
|
||||
if not id and hashed_session == etag:
|
||||
return werkzeug.wrappers.Response(status=304)
|
||||
else:
|
||||
date = Model.read([int(id)], [last_update], context)[0].get(last_update)
|
||||
if hashlib.md5(date).hexdigest() == etag:
|
||||
return werkzeug.wrappers.Response(status=304)
|
||||
|
||||
retag = hashed_session
|
||||
try:
|
||||
if not id:
|
||||
res = Model.default_get([field], context).get(field)
|
||||
image_data = base64.b64decode(res)
|
||||
else:
|
||||
res = Model.read([int(id)], [field], context)[0].get(field)
|
||||
image_data = base64.b64decode(res)
|
||||
res = Model.read([int(id)], [last_update, field], context)[0]
|
||||
retag = hashlib.md5(res.get(last_update)).hexdigest()
|
||||
image_data = base64.b64decode(res.get(field))
|
||||
except (TypeError, xmlrpclib.Fault):
|
||||
image_data = self.placeholder(req)
|
||||
return req.make_response(image_data, [
|
||||
('Content-Type', 'image/png'), ('Content-Length', len(image_data))])
|
||||
headers.append(('ETag', retag))
|
||||
headers.append(('Content-Length', len(image_data)))
|
||||
try:
|
||||
ncache = int(kw.get('cache'))
|
||||
headers.append(('Cache-Control', 'no-cache' if ncache == 0 else 'max-age=%s' % (ncache)))
|
||||
except:
|
||||
pass
|
||||
return req.make_response(image_data, headers)
|
||||
def placeholder(self, req):
|
||||
addons_path = openerpweb.addons_manifest['web']['addons_path']
|
||||
return open(os.path.join(addons_path, 'web', 'static', 'src', 'img', 'placeholder.png'), 'rb').read()
|
||||
|
@ -1420,16 +1440,8 @@ class Binary(openerpweb.Controller):
|
|||
# TODO: might be useful to have a configuration flag for max-length file uploads
|
||||
try:
|
||||
out = """<script language="javascript" type="text/javascript">
|
||||
var win = window.top.window,
|
||||
callback = win[%s];
|
||||
if (typeof(callback) === 'function') {
|
||||
callback.apply(this, %s);
|
||||
} else {
|
||||
win.jQuery('#oe_notification', win.document).notify('create', {
|
||||
title: "Ajax File Upload",
|
||||
text: "Could not find callback"
|
||||
});
|
||||
}
|
||||
var win = window.top.window;
|
||||
win.jQuery(win).trigger(%s, %s);
|
||||
</script>"""
|
||||
data = ufile.read()
|
||||
args = [len(data), ufile.filename,
|
||||
|
@ -1444,11 +1456,8 @@ class Binary(openerpweb.Controller):
|
|||
Model = req.session.model('ir.attachment')
|
||||
try:
|
||||
out = """<script language="javascript" type="text/javascript">
|
||||
var win = window.top.window,
|
||||
callback = win[%s];
|
||||
if (typeof(callback) === 'function') {
|
||||
callback.call(this, %s);
|
||||
}
|
||||
var win = window.top.window;
|
||||
win.jQuery(win).trigger(%s, %s);
|
||||
</script>"""
|
||||
attachment_id = Model.create({
|
||||
'name': ufile.filename,
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
"X-Poedit-Language: Czech\n"
|
||||
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
"Language: es\n"
|
||||
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-05 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 15353)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-05 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 15353)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
@ -920,7 +920,7 @@ msgstr "Prijava"
|
|||
#. openerp-web
|
||||
#: addons/web/static/src/xml/base.xml:314
|
||||
msgid "Manage Databases"
|
||||
msgstr ""
|
||||
msgstr "Upravljanje podatkovnih zbir"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/xml/base.xml:332
|
||||
|
@ -1133,7 +1133,7 @@ msgstr "Domena:"
|
|||
#. openerp-web
|
||||
#: addons/web/static/src/xml/base.xml:968
|
||||
msgid "Change default:"
|
||||
msgstr ""
|
||||
msgstr "Spremeni privzete vrednosti:"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/xml/base.xml:972
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
@ -517,21 +517,21 @@ msgstr "您确定要删除附件“%s”吗?"
|
|||
#: addons/web/static/src/js/view_form.js:828
|
||||
#, python-format
|
||||
msgid "Unknown operator %s in domain %s"
|
||||
msgstr "未知操作符“%s”位于域“%s”中"
|
||||
msgstr "发现未知操作符 %s ,过滤条件 %s 有误"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/view_form.js:830
|
||||
#: addons/web/static/src/js/view_form.js:836
|
||||
#, python-format
|
||||
msgid "Unknown field %s in domain %s"
|
||||
msgstr "未知字段“%s”位于域“%s”中"
|
||||
msgstr "发现未知字段 %s ,过滤条件 %s 有误"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/view_form.js:868
|
||||
#: addons/web/static/src/js/view_form.js:874
|
||||
#, python-format
|
||||
msgid "Unsupported operator %s in domain %s"
|
||||
msgstr "不支持的操作符“%s”位于域“%s”中"
|
||||
msgstr "有不支持的操作符 %s ,过滤条件 %s 有误"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/view_form.js:1225
|
||||
|
@ -1126,7 +1126,7 @@ msgstr "上下文:"
|
|||
#. openerp-web
|
||||
#: addons/web/static/src/xml/base.xml:960
|
||||
msgid "Domain:"
|
||||
msgstr "域:"
|
||||
msgstr "过滤条件"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/xml/base.xml:968
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web/static/src/js/chrome.js:172
|
||||
|
|
|
@ -4774,7 +4774,8 @@
|
|||
return node;
|
||||
};
|
||||
})(jQuery);
|
||||
;(function(a){var b=document,c="getElementsByTagName",d=b[c]("head")[0]||b[c]("body")[0],e=b.createElement("style");e.innerHTML=a,d.appendChild(e)})('\n.text-core {\
|
||||
;
|
||||
(function(a){var b=document,c="getElementsByTagName",d=b[c]("head")[0]||b[c]("body")[0],e=b.createElement("style");e.innerHTML=a,d.appendChild(e)})('\n.text-core {\
|
||||
position: relative;\
|
||||
}\
|
||||
.text-core .text-wrap {\
|
||||
|
@ -4785,10 +4786,9 @@
|
|||
-webkit-box-sizing: border-box;\
|
||||
-moz-box-sizing: border-box;\
|
||||
box-sizing: border-box;\
|
||||
-webkit-border-radius: 0px;\
|
||||
-moz-border-radius: 0px;\
|
||||
border-radius: 0px;\
|
||||
border: 1px solid #9daccc;\
|
||||
-webkit-border-radius: 3px;\
|
||||
-moz-border-radius: 3px;\
|
||||
border-radius: 3px;\
|
||||
outline: none;\
|
||||
resize: none;\
|
||||
position: absolute;\
|
||||
|
@ -4927,4 +4927,4 @@
|
|||
.text-core .text-wrap .text-tags .text-tag .text-button a.text-remove:active {\
|
||||
background-position: 0 -22px;\
|
||||
}\
|
||||
');
|
||||
');
|
||||
|
|
|
@ -824,7 +824,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
|
|||
background:whiteSmoke;
|
||||
border-bottom:1px solid #ddd;
|
||||
padding-bottom:0px;
|
||||
color:#00438A;
|
||||
color:#4c4c4c;
|
||||
}
|
||||
|
||||
|
||||
|
@ -861,7 +861,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
|
|||
border: 1px solid #ddd;
|
||||
border-bottom-color: #ffffff;
|
||||
cursor: default;
|
||||
color:gray;
|
||||
color:#4c4c4c;
|
||||
outline:none;
|
||||
}
|
||||
|
||||
|
|
|
@ -913,7 +913,7 @@ $.fn.extend({
|
|||
tmp_args = arguments;
|
||||
|
||||
if (typeof(o) == 'string'){
|
||||
if(o == 'getDate')
|
||||
if(o == 'getDate' || o == 'widget')
|
||||
return $.fn.datepicker.apply($(this[0]), tmp_args);
|
||||
else
|
||||
return this.each(function() {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -54,11 +54,6 @@ openerp.web = function(session) {
|
|||
openerp.web[files[i]](session);
|
||||
}
|
||||
}
|
||||
session.log = function() {
|
||||
if (session.connection.debug && window.console) {
|
||||
console.log.apply(console, arguments);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
|
||||
|
|
|
@ -9,8 +9,7 @@ instance.web.Notification = instance.web.Widget.extend({
|
|||
template: 'Notification',
|
||||
init: function() {
|
||||
this._super.apply(this, arguments);
|
||||
// move to instance.web.notification
|
||||
instance.notification = this;
|
||||
instance.web.notification = this;
|
||||
},
|
||||
start: function() {
|
||||
this._super.apply(this, arguments);
|
||||
|
@ -141,7 +140,6 @@ instance.web.Dialog = instance.web.Widget.extend({
|
|||
}
|
||||
},
|
||||
on_resized: function() {
|
||||
//openerp.log("Dialog resized to %d x %d", this.$element.width(), this.$element.height());
|
||||
},
|
||||
destroy: function () {
|
||||
this.close();
|
||||
|
@ -208,7 +206,14 @@ instance.web.CrashManager = instance.web.CallbackEnabled.extend({
|
|||
buttons: buttons
|
||||
}).open();
|
||||
dialog.$element.html(QWeb.render('CrashManager.error', {session: instance.connection, error: error}));
|
||||
}
|
||||
},
|
||||
on_javascript_exception: function(exception) {
|
||||
this.on_traceback({
|
||||
type: _t("Client Error"),
|
||||
message: exception,
|
||||
data: {debug: ""}
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
instance.web.Loading = instance.web.Widget.extend({
|
||||
|
@ -577,10 +582,6 @@ instance.web.Menu = instance.web.Widget.extend({
|
|||
this.renderElement();
|
||||
this.limit_entries();
|
||||
this.$secondary_menus.html(QWeb.render("Menu.secondary", { widget : this }));
|
||||
this.$element.on('click', 'a.oe_menu_more_link', function() {
|
||||
self.$element.find('.oe_menu_more').toggle();
|
||||
return false;
|
||||
});
|
||||
this.$element.on('click', 'a[data-menu]', this.on_menu_click);
|
||||
this.$secondary_menus.on('click', 'a[data-menu]', this.on_menu_click);
|
||||
// Hide second level submenus
|
||||
|
@ -601,16 +602,12 @@ instance.web.Menu = instance.web.Widget.extend({
|
|||
$index.after($more);
|
||||
$more.find('.oe_menu_more').append($index.next().nextAll());
|
||||
}
|
||||
this.do_hide_more();
|
||||
},
|
||||
auto_limit_entries: function() {
|
||||
// TODO: auto detect overflow and bind window on resize
|
||||
var width = $(window).width();
|
||||
return Math.floor(width / 125);
|
||||
},
|
||||
do_hide_more: function() {
|
||||
this.$element.find('.oe_menu_more').hide();
|
||||
},
|
||||
/**
|
||||
* Opens a given menu by id, as if a user had browsed to that menu by hand
|
||||
* except does not trigger any event on the way
|
||||
|
@ -708,9 +705,8 @@ instance.web.Menu = instance.web.Widget.extend({
|
|||
*/
|
||||
on_menu_click: function(ev) {
|
||||
var needaction = !!$(ev.target).filter('div.oe_menu_counter').length;
|
||||
ev.preventDefault();
|
||||
this.menu_click($(ev.currentTarget).data('menu'), needaction);
|
||||
ev.stopPropagation();
|
||||
return false;
|
||||
},
|
||||
});
|
||||
|
||||
|
@ -723,20 +719,12 @@ instance.web.UserMenu = instance.web.Widget.extend({
|
|||
start: function() {
|
||||
var self = this;
|
||||
this._super.apply(this, arguments);
|
||||
$('html').bind('click', function() {
|
||||
self.$element.find('.oe_dropdown_options').hide();
|
||||
});
|
||||
this.$element.find('.oe_dropdown_toggle').click(function() {
|
||||
self.$element.find('.oe_dropdown_options').toggle();
|
||||
return false;
|
||||
});
|
||||
this.$element.on('click', '.oe_dropdown_options li a[data-menu]', function() {
|
||||
this.$element.on('click', '.oe_dropdown_menu li a[data-menu]', function(ev) {
|
||||
ev.preventDefault();
|
||||
var f = self['on_menu_' + $(this).data('menu')];
|
||||
if (f) {
|
||||
f($(this));
|
||||
}
|
||||
self.$element.find('.oe_dropdown_options').hide();
|
||||
return false;
|
||||
});
|
||||
},
|
||||
change_password :function() {
|
||||
|
@ -880,6 +868,27 @@ instance.web.WebClient = instance.web.Widget.extend({
|
|||
this.$element.on('mouseenter', '.oe_systray > div:not([data-tipsy=true])', function() {
|
||||
$(this).attr('data-tipsy', 'true').tipsy().trigger('mouseenter');
|
||||
});
|
||||
this.$element.on('click', '.oe_dropdown_toggle', function(ev) {
|
||||
var $menu = $(this).find('.oe_dropdown_menu');
|
||||
var state = $menu.is('.oe_opened');
|
||||
setTimeout(function() {
|
||||
// Do not alter propagation
|
||||
$menu.toggleClass('oe_opened', !state);
|
||||
if (!state) {
|
||||
// Move $menu if outside window's edge
|
||||
var doc_width = $(document).width();
|
||||
var offset = $menu.offset();
|
||||
var menu_width = $menu.width();
|
||||
var x = doc_width - offset.left - menu_width - 15;
|
||||
if (x < 0) {
|
||||
$menu.offset({ left: offset.left + x }).width(menu_width);
|
||||
}
|
||||
}
|
||||
}, 0);
|
||||
});
|
||||
instance.web.bus.on('click', this, function() {
|
||||
self.$element.find('.oe_dropdown_menu.oe_opened').removeClass('oe_opened');
|
||||
});
|
||||
},
|
||||
show_common: function() {
|
||||
var self = this;
|
||||
|
|
|
@ -400,6 +400,29 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess
|
|||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Event Bus used to bind events scoped in the current instance
|
||||
*/
|
||||
instance.web.bus = new (instance.web.Class.extend(instance.web.EventDispatcherMixin, {
|
||||
init: function() {
|
||||
instance.web.EventDispatcherMixin.init.call(this, parent);
|
||||
var self = this;
|
||||
// TODO fme: allow user to bind keys for some global actions.
|
||||
// check gtk bindings
|
||||
// http://unixpapa.com/js/key.html
|
||||
_.each('click,dblclick,keydown,keypress,keyup'.split(','), function(evtype) {
|
||||
$('html').on(evtype, self, function(ev) {
|
||||
self.trigger(evtype, ev);
|
||||
});
|
||||
});
|
||||
_.each('resize,scroll'.split(','), function(evtype) {
|
||||
$(window).on(evtype, self, function(ev) {
|
||||
self.trigger(evtype, ev);
|
||||
});
|
||||
});
|
||||
}
|
||||
}))();
|
||||
|
||||
/** OpenERP Translations */
|
||||
instance.web.TranslationDataBase = instance.web.Class.extend(/** @lends instance.web.TranslationDataBase# */{
|
||||
/**
|
||||
|
@ -597,13 +620,18 @@ instance.web.Reload = instance.web.Widget.extend({
|
|||
this.menu_id = (params && params.menu_id) || false;
|
||||
},
|
||||
start: function() {
|
||||
var l = window.location;
|
||||
var timestamp = new Date().getTime();
|
||||
var search = "?ts=" + timestamp;
|
||||
if (l.search) {
|
||||
search = l.search + "&ts=" + timestamp;
|
||||
}
|
||||
var hash = l.hash;
|
||||
if (this.menu_id) {
|
||||
// open the given menu id
|
||||
var url_without_fragment = window.location.toString().split("#", 1)[0];
|
||||
window.location = url_without_fragment + "#menu_id=" + this.menu_id;
|
||||
} else {
|
||||
window.location.reload();
|
||||
hash = "#menu_id=" + this.menu_id;
|
||||
}
|
||||
var url = l.protocol + "//" + l.host + l.pathname + search + hash;
|
||||
window.location = url;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1571,7 +1571,7 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
|
|||
$filter.remove();
|
||||
});
|
||||
})
|
||||
.prependTo($filter);
|
||||
.appendTo($filter);
|
||||
}
|
||||
|
||||
$filter.unbind('click').click(function () {
|
||||
|
|
|
@ -472,7 +472,7 @@ instance.web.FormView = instance.web.View.extend(_.extend({}, instance.web.form.
|
|||
|
||||
return self.on_processed_onchange(response, processed);
|
||||
} catch(e) {
|
||||
console.error(e);
|
||||
instance.webclient.crashmanager.on_javascript_exception(e);
|
||||
return $.Deferred().reject();
|
||||
}
|
||||
});
|
||||
|
@ -728,7 +728,6 @@ instance.web.FormView = instance.web.View.extend(_.extend({}, instance.web.form.
|
|||
if (this.sidebar) {
|
||||
this.sidebar.do_attachement_update(this.dataset, this.datarecord.id);
|
||||
}
|
||||
//instance.log("The record has been created with id #" + this.datarecord.id);
|
||||
this.reload();
|
||||
return $.when(_.extend(r, {created: true})).then(success);
|
||||
}
|
||||
|
@ -914,6 +913,10 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
|
|||
},
|
||||
set_fields_view: function(fvg) {
|
||||
this.fvg = fvg;
|
||||
this.version = parseFloat(this.fvg.arch.attrs.version);
|
||||
if (isNaN(this.version)) {
|
||||
this.version = 6.1;
|
||||
}
|
||||
},
|
||||
set_tags_registry: function(tags_registry) {
|
||||
this.tags_registry = tags_registry;
|
||||
|
@ -921,6 +924,18 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
|
|||
set_fields_registry: function(fields_registry) {
|
||||
this.fields_registry = fields_registry;
|
||||
},
|
||||
// Backward compatibility tools, current default version: v6.1
|
||||
process_version: function() {
|
||||
if (this.version < 7.0) {
|
||||
this.$form.find('form:first').wrapInner('<group col="4"/>');
|
||||
this.$form.find('page').each(function() {
|
||||
if (!$(this).parents('field').length) {
|
||||
$(this).wrapInner('<group col="4"/>');
|
||||
}
|
||||
});
|
||||
}
|
||||
selector = 'form[version!="7.0"] page,form[version!="7.0"]';
|
||||
},
|
||||
render_to: function($target) {
|
||||
var self = this;
|
||||
this.$target = $target;
|
||||
|
@ -930,6 +945,8 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
|
|||
var xml = instance.web.json_node_to_xml(this.fvg.arch);
|
||||
this.$form = $('<div class="oe_form">' + xml + '</div>');
|
||||
|
||||
this.process_version();
|
||||
|
||||
this.fields_to_init = [];
|
||||
this.tags_to_init = [];
|
||||
this.labels = {};
|
||||
|
@ -2526,6 +2543,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(_.exten
|
|||
var tip_delay = 200;
|
||||
var tip_duration = 3000;
|
||||
var anyoneLoosesFocus = function() {
|
||||
var used = false;
|
||||
if (self.floating) {
|
||||
if (self.last_search.length > 0) {
|
||||
if (self.last_search[0][0] != self.get("value")) {
|
||||
|
@ -2533,13 +2551,17 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(_.exten
|
|||
self.display_value["" + self.last_search[0][0]] = self.last_search[0][1];
|
||||
self.set({value: self.last_search[0][0]});
|
||||
} else {
|
||||
used = true;
|
||||
self.render_value();
|
||||
}
|
||||
} else {
|
||||
used = true;
|
||||
self.set({value: false});
|
||||
self.render_value();
|
||||
}
|
||||
self.floating = false;
|
||||
}
|
||||
if (! self.get("value")) {
|
||||
if (used) {
|
||||
tip_def.reject();
|
||||
untip_def.reject();
|
||||
tip_def = $.Deferred();
|
||||
|
@ -2586,7 +2608,8 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(_.exten
|
|||
e.preventDefault();
|
||||
},
|
||||
html: true,
|
||||
close: anyoneLoosesFocus,
|
||||
// disabled to solve a bug, but may cause others
|
||||
//close: anyoneLoosesFocus,
|
||||
minLength: 0,
|
||||
delay: 0
|
||||
});
|
||||
|
@ -2724,6 +2747,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
|
|||
},
|
||||
start: function() {
|
||||
this._super.apply(this, arguments);
|
||||
this.$element.addClass('oe_form_field_one2many');
|
||||
|
||||
var self = this;
|
||||
|
||||
|
@ -2731,7 +2755,6 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
|
|||
this.dataset.o2m = this;
|
||||
this.dataset.parent_view = this.view;
|
||||
this.dataset.child_name = this.name;
|
||||
//this.dataset.child_name =
|
||||
this.dataset.on_change.add_last(function() {
|
||||
self.trigger_on_change();
|
||||
});
|
||||
|
@ -2763,6 +2786,13 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
|
|||
modes = !!modes ? modes.split(",") : ["tree"];
|
||||
var views = [];
|
||||
_.each(modes, function(mode) {
|
||||
if (! _.include(["list", "tree", "graph", "kanban"], mode)) {
|
||||
try {
|
||||
throw new Error(_.str.sprintf("View type '%s' is not supported in One2Many.", mode));
|
||||
} catch(e) {
|
||||
instance.webclient.crashmanager.on_javascript_exception(e)
|
||||
}
|
||||
}
|
||||
var view = {
|
||||
view_id: false,
|
||||
view_type: mode == "tree" ? "list" : mode,
|
||||
|
@ -2773,9 +2803,11 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
|
|||
}
|
||||
if(view.view_type === "list") {
|
||||
view.options.selectable = self.multi_selection;
|
||||
view.options.sortable = false;
|
||||
if (self.get("effective_readonly")) {
|
||||
view.options.addable = null;
|
||||
view.options.deletable = null;
|
||||
view.options.reorderable = false;
|
||||
}
|
||||
} else if (view.view_type === "form") {
|
||||
if (self.get("effective_readonly")) {
|
||||
|
@ -2796,6 +2828,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
|
|||
this.views = views;
|
||||
|
||||
this.viewmanager = new instance.web.form.One2ManyViewManager(this, this.dataset, views, {});
|
||||
this.viewmanager.$element.addClass("oe_view_manager_one2many");
|
||||
this.viewmanager.o2m = self;
|
||||
var once = $.Deferred().then(function() {
|
||||
self.init_form_last_update.resolve();
|
||||
|
@ -3260,6 +3293,7 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
|
|||
},
|
||||
start: function() {
|
||||
this._super.apply(this, arguments);
|
||||
this.$element.addClass('oe_form_field_many2many');
|
||||
|
||||
var self = this;
|
||||
|
||||
|
@ -3268,7 +3302,7 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
|
|||
this.dataset.on_unlink.add_last(function(ids) {
|
||||
self.dataset_changed();
|
||||
});
|
||||
|
||||
|
||||
this.is_setted.then(function() {
|
||||
self.load_view();
|
||||
});
|
||||
|
@ -3281,7 +3315,7 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
|
|||
});
|
||||
});
|
||||
});
|
||||
})
|
||||
});
|
||||
},
|
||||
set_value: function(value_) {
|
||||
value_ = value_ || [];
|
||||
|
@ -3303,6 +3337,8 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
|
|||
'addable': self.get("effective_readonly") ? null : _t("Add"),
|
||||
'deletable': self.get("effective_readonly") ? false : true,
|
||||
'selectable': self.multi_selection,
|
||||
'sortable': false,
|
||||
'reorderable': false,
|
||||
});
|
||||
var embedded = (this.field.views || {}).tree;
|
||||
if (embedded) {
|
||||
|
@ -3948,13 +3984,22 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(_.exte
|
|||
|
||||
instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
|
||||
init: function(field_manager, node) {
|
||||
var self = this;
|
||||
this._super(field_manager, node);
|
||||
this.iframe = this.element_id + '_iframe';
|
||||
this.binary_value = false;
|
||||
this.fileupload_id = _.uniqueId('oe_fileupload');
|
||||
$(window).on(this.fileupload_id, function() {
|
||||
var args = [].slice.call(arguments).slice(1);
|
||||
self.on_file_uploaded.apply(self, args);
|
||||
});
|
||||
},
|
||||
stop: function() {
|
||||
$(window).off(this.fileupload_id);
|
||||
this._super.apply(this, arguments);
|
||||
},
|
||||
initialize_content: function() {
|
||||
this.$element.find('input.oe-binary-file').change(this.on_file_change);
|
||||
this.$element.find('button.oe-binary-file-save').click(this.on_save_as);
|
||||
this.$element.find('button.oe_binary_file_save').click(this.on_save_as);
|
||||
this.$element.find('.oe-binary-file-clear').click(this.on_clear);
|
||||
},
|
||||
human_filesize : function(size) {
|
||||
|
@ -3970,8 +4015,8 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(_.extend(
|
|||
// TODO: on modern browsers, we could directly read the file locally on client ready to be used on image cropper
|
||||
// http://www.html5rocks.com/tutorials/file/dndfiles/
|
||||
// http://deepliquid.com/projects/Jcrop/demos.php?demo=handler
|
||||
window[this.iframe] = this.on_file_uploaded;
|
||||
if ($(e.target).val() != '') {
|
||||
|
||||
if ($(e.target).val() !== '') {
|
||||
this.$element.find('form.oe-binary-form input[name=session_id]').val(this.session.session_id);
|
||||
this.$element.find('form.oe-binary-form').submit();
|
||||
this.$element.find('.oe-binary-progress').show();
|
||||
|
@ -3979,12 +4024,12 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(_.extend(
|
|||
}
|
||||
},
|
||||
on_file_uploaded: function(size, name, content_type, file_base64) {
|
||||
delete(window[this.iframe]);
|
||||
if (size === false) {
|
||||
this.do_warn("File Upload", "There was a problem while uploading your file");
|
||||
// TODO: use openerp web crashmanager
|
||||
console.warn("Error while uploading file : ", name);
|
||||
} else {
|
||||
this.filename = name;
|
||||
this.on_file_uploaded_and_valid.apply(this, arguments);
|
||||
}
|
||||
this.$element.find('.oe-binary-progress').hide();
|
||||
|
@ -3992,20 +4037,33 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(_.extend(
|
|||
},
|
||||
on_file_uploaded_and_valid: function(size, name, content_type, file_base64) {
|
||||
},
|
||||
on_save_as: function() {
|
||||
$.blockUI();
|
||||
this.session.get_file({
|
||||
url: '/web/binary/saveas_ajax',
|
||||
data: {data: JSON.stringify({
|
||||
model: this.view.dataset.model,
|
||||
id: (this.view.datarecord.id || ''),
|
||||
field: this.name,
|
||||
filename_field: (this.node.attrs.filename || ''),
|
||||
context: this.view.dataset.get_context()
|
||||
})},
|
||||
complete: $.unblockUI,
|
||||
error: instance.webclient.crashmanager.on_rpc_error
|
||||
});
|
||||
on_save_as: function(ev) {
|
||||
var value = this.get('value');
|
||||
if (!value) {
|
||||
this.do_warn(_t("Save As..."), _t("The field is empty, there's nothing to save !"));
|
||||
ev.stopPropagation();
|
||||
} else if (this._dirty_flag) {
|
||||
var link = this.$('.oe_binary_file_save_data')[0];
|
||||
link.download = this.filename || "download.bin"; // Works on only on Google Chrome
|
||||
//link.target = '_blank';
|
||||
link.href = "data:application/octet-stream;base64," + value;
|
||||
} else {
|
||||
$.blockUI();
|
||||
this.session.get_file({
|
||||
url: '/web/binary/saveas_ajax',
|
||||
data: {data: JSON.stringify({
|
||||
model: this.view.dataset.model,
|
||||
id: (this.view.datarecord.id || ''),
|
||||
field: this.name,
|
||||
filename_field: (this.node.attrs.filename || ''),
|
||||
context: this.view.dataset.get_context()
|
||||
})},
|
||||
complete: $.unblockUI,
|
||||
error: instance.webclient.crashmanager.on_rpc_error
|
||||
});
|
||||
ev.stopPropagation();
|
||||
return false;
|
||||
}
|
||||
},
|
||||
on_clear: function() {
|
||||
if (this.get('value') !== false) {
|
||||
|
@ -4073,14 +4131,6 @@ instance.web.form.FieldBinaryFile = instance.web.form.FieldBinary.extend({
|
|||
|
||||
instance.web.form.FieldBinaryImage = instance.web.form.FieldBinary.extend({
|
||||
template: 'FieldBinaryImage',
|
||||
initialize_content: function() {
|
||||
this._super();
|
||||
if (!this.get("effective_readonly")) {
|
||||
this.$element.find('.oe_form_field_image_controls').show();
|
||||
} else {
|
||||
this.$element.find('.oe_form_field_image_controls').hide();
|
||||
}
|
||||
},
|
||||
set_value: function(value_) {
|
||||
this._super.apply(this, arguments);
|
||||
this.render_value();
|
||||
|
|
|
@ -364,6 +364,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
|
|||
}
|
||||
|
||||
var total = dataset.size();
|
||||
this.$pager.toggleClass('oe_list_pager_single_page', (total <= this.limit()));
|
||||
var spager = '-';
|
||||
if (total) {
|
||||
var range_start = this.page * this.limit() + 1;
|
||||
|
|
|
@ -77,7 +77,14 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
});
|
||||
} else if (state.client_action) {
|
||||
this.null_action();
|
||||
this.ir_actions_client(state.client_action);
|
||||
var action = state.client_action;
|
||||
if(_.isString(action)) {
|
||||
action = {
|
||||
tag: action,
|
||||
params: state,
|
||||
};
|
||||
}
|
||||
this.ir_actions_client(action);
|
||||
}
|
||||
|
||||
$.when(action_loaded || null).then(function() {
|
||||
|
@ -150,6 +157,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
this.inner_action = action;
|
||||
this.inner_viewmanager = new instance.web.ViewManagerAction(this, action);
|
||||
this.inner_viewmanager.appendTo(this.$element);
|
||||
this.inner_viewmanager.$element.addClass("oe_view_manager_global");
|
||||
}
|
||||
},
|
||||
ir_actions_act_window_close: function (action, on_closed) {
|
||||
|
@ -320,7 +328,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
|
|||
}
|
||||
|
||||
this.$element
|
||||
.find('.oe_view_manager_switch a').parent().removeClass('active')
|
||||
.find('.oe_view_manager_switch a').parent().removeClass('active');
|
||||
this.$element
|
||||
.find('.oe_view_manager_switch a').filter('[data-view-type="' + view_type + '"]')
|
||||
.parent().addClass('active');
|
||||
|
@ -329,9 +337,12 @@ instance.web.ViewManager = instance.web.Widget.extend({
|
|||
_.each(_.keys(self.views), function(view_name) {
|
||||
var controller = self.views[view_name].controller;
|
||||
if (controller) {
|
||||
var container = self.$element.find(".oe_view_manager_view_" + view_name + ":first");
|
||||
if (view_name === view_type) {
|
||||
container.show();
|
||||
controller.do_show(view_options || {});
|
||||
} else {
|
||||
container.hide();
|
||||
controller.do_hide();
|
||||
}
|
||||
}
|
||||
|
@ -696,6 +707,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
|
|||
|
||||
instance.web.Sidebar = instance.web.Widget.extend({
|
||||
init: function(parent) {
|
||||
var self = this;
|
||||
this._super(parent);
|
||||
var view = this.getParent();
|
||||
this.sections = [
|
||||
|
@ -712,19 +724,24 @@ instance.web.Sidebar = instance.web.Widget.extend({
|
|||
var item = { label: _t("Translate"), callback: view.on_sidebar_translate, title: _t("Technical translation") };
|
||||
this.items.other.push(item);
|
||||
}
|
||||
this.fileupload_id = _.uniqueId('oe_fileupload');
|
||||
$(window).on(this.fileupload_id, function() {
|
||||
var args = [].slice.call(arguments).slice(1);
|
||||
if (args[0] && args[0].error) {
|
||||
alert(args[0].error);
|
||||
} else {
|
||||
self.do_attachement_update(self.dataset, self.model_id);
|
||||
}
|
||||
$.unblockUI();
|
||||
});
|
||||
},
|
||||
start: function() {
|
||||
var self = this;
|
||||
this._super(this);
|
||||
this.redraw();
|
||||
this.$element.on('click','.oe_dropdown_toggle',function(event) {
|
||||
$(this).parent().find('ul').toggle();
|
||||
return false;
|
||||
});
|
||||
this.$element.on('click','.oe_dropdown_menu li a', function(event) {
|
||||
var section = $(this).data('section');
|
||||
var index = $(this).data('index');
|
||||
$(this).closest('ul').hide();
|
||||
var item = self.items[section][index];
|
||||
if (item.callback) {
|
||||
item.callback.apply(self, [item]);
|
||||
|
@ -733,16 +750,12 @@ instance.web.Sidebar = instance.web.Widget.extend({
|
|||
} else if (item.url) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
event.preventDefault();
|
||||
});
|
||||
//this.$div.html(QWeb.render('FormView.sidebar.attachments', this));
|
||||
//this.$element.find('.oe-binary-file').change(this.on_attachment_changed);
|
||||
//this.$element.find('.oe-sidebar-attachment-delete').click(this.on_attachment_delete);
|
||||
},
|
||||
redraw: function() {
|
||||
var self = this;
|
||||
self.$element.html(QWeb.render('Sidebar', {widget: self}));
|
||||
this.$element.find('ul').hide();
|
||||
|
||||
// Hides Sidebar sections when item list is empty
|
||||
this.$('.oe_form_dropdown_section').each(function() {
|
||||
|
@ -826,6 +839,8 @@ instance.web.Sidebar = instance.web.Widget.extend({
|
|||
});
|
||||
},
|
||||
do_attachement_update: function(dataset, model_id) {
|
||||
this.dataset = dataset;
|
||||
this.model_id = model_id;
|
||||
if (!model_id) {
|
||||
this.on_attachments_loaded([]);
|
||||
} else {
|
||||
|
@ -837,42 +852,37 @@ instance.web.Sidebar = instance.web.Widget.extend({
|
|||
on_attachments_loaded: function(attachments) {
|
||||
var self = this;
|
||||
var items = [];
|
||||
// TODO: preprend: _s +
|
||||
var prefix = '/web/binary/saveas?session_id=' + self.session.session_id + '&model=ir.attachment&field=datas&filename_field=name&id=';
|
||||
var prefix = this.session.origin + '/web/binary/saveas?session_id=' + self.session.session_id + '&model=ir.attachment&field=datas&filename_field=name&id=';
|
||||
_.each(attachments,function(a) {
|
||||
a.label = a.name;
|
||||
if(a.type === "binary") {
|
||||
a.url = prefix + a.id + '&t=' + (new Date().getTime());
|
||||
}
|
||||
});
|
||||
attachments.push( { label: _t("Add..."), callback: self.on_attachment_add } );
|
||||
self.items['files'] = attachments;
|
||||
self.redraw();
|
||||
},
|
||||
on_attachment_add: function(e) {
|
||||
this.$element.find('.oe_sidebar_add').show();
|
||||
this.$('.oe_sidebar_add_attachment .oe-binary-file').change(this.on_attachment_changed);
|
||||
this.$element.find('.oe_sidebar_delete_item').click(this.on_attachment_delete);
|
||||
},
|
||||
on_attachment_changed: function(e) {
|
||||
return;
|
||||
window[this.element_id + '_iframe'] = this.do_update;
|
||||
var $e = $(e.target);
|
||||
if ($e.val() != '') {
|
||||
if ($e.val() !== '') {
|
||||
this.$element.find('form.oe-binary-form').submit();
|
||||
$e.parent().find('input[type=file]').prop('disabled', true);
|
||||
$e.parent().find('button').prop('disabled', true).find('img, span').toggle();
|
||||
this.$('.oe_sidebar_add_attachment span').text(_t('Uploading...'));
|
||||
$.blockUI();
|
||||
}
|
||||
},
|
||||
on_attachment_delete: function(e) {
|
||||
return;
|
||||
var self = this, $e = $(e.currentTarget);
|
||||
var name = _.str.trim($e.parent().find('a.oe-sidebar-attachments-link').text());
|
||||
if (confirm(_.str.sprintf(_t("Do you really want to delete the attachment %s?"), name))) {
|
||||
this.rpc('/web/dataset/unlink', {
|
||||
model: 'ir.attachment',
|
||||
ids: [parseInt($e.attr('data-id'))]
|
||||
}, function(r) {
|
||||
$e.parent().remove();
|
||||
self.do_notify("Delete an attachment", "The attachment '" + name + "' has been deleted");
|
||||
var self = this;
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
var self = this;
|
||||
var $e = $(e.currentTarget);
|
||||
if (confirm(_t("Do you really want to delete this attachment ?"))) {
|
||||
(new instance.web.DataSet(this, 'ir.attachment')).unlink([parseInt($e.attr('data-id'), 10)]).then(function() {
|
||||
self.do_attachement_update(self.dataset, self.model_id);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@
|
|||
<t t-name="DatabaseManager">
|
||||
<div class="oe_database_manager">
|
||||
<div class="oe_database_manager_menu">
|
||||
<ul class="oe_form_notebook">
|
||||
<ul class="oe_notebook">
|
||||
<li><a href="#db_create">Create</a></li>
|
||||
<li><a href="#db_drop">Drop</a></li>
|
||||
<li><a href="#db_backup">Backup</a></li>
|
||||
|
@ -273,8 +273,10 @@
|
|||
</t>
|
||||
<t t-name="Menu.more">
|
||||
<li class="oe_menu_more_container">
|
||||
<a href="#" class="oe_menu_more_link oe_dropdown_toggle">More</a>
|
||||
<ul class="oe_menu_more" style="display: none;"/>
|
||||
<span class="oe_topbar_item oe_menu_more_link oe_dropdown_toggle oe_dropdown_arrow">
|
||||
More
|
||||
<ul class="oe_menu_more oe_dropdown_menu"/>
|
||||
</span>
|
||||
</li>
|
||||
</t>
|
||||
<t t-name="Menu.secondary">
|
||||
|
@ -316,19 +318,15 @@
|
|||
</t>
|
||||
|
||||
<t t-name="UserMenu">
|
||||
<ul class="oe_user_menu oe_topbar_item">
|
||||
<li class="oe_dropdown">
|
||||
<a href="#" class="oe_dropdown_toggle">
|
||||
<img class="oe_topbar_avatar" t-att-data-default-src="_s + '/web/static/src/img/user_menu_avatar.png'"/>
|
||||
<span class="oe_topbar_name"/>
|
||||
</a>
|
||||
<ul class="oe_dropdown_options">
|
||||
<li><a href="#" data-menu="about">About OpenERP</a></li>
|
||||
<li><a href="#" data-menu="settings">Preferences</a></li>
|
||||
<li><a href="#" data-menu="logout">Log out</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<span class="oe_user_menu oe_topbar_item oe_dropdown_toggle oe_dropdown_arrow">
|
||||
<img class="oe_topbar_avatar" t-att-data-default-src="_s + '/web/static/src/img/user_menu_avatar.png'"/>
|
||||
<span class="oe_topbar_name"/>
|
||||
<ul class="oe_dropdown_menu">
|
||||
<li><a href="#" data-menu="about">About OpenERP</a></li>
|
||||
<li><a href="#" data-menu="settings">Preferences</a></li>
|
||||
<li><a href="#" data-menu="logout">Log out</a></li>
|
||||
</ul>
|
||||
</span>
|
||||
</t>
|
||||
<t t-name="UserMenu.about">
|
||||
<div>
|
||||
|
@ -404,7 +402,7 @@
|
|||
<col width="33%"/>
|
||||
<col width="33%"/>
|
||||
<col width="34%"/>
|
||||
<tr class="oe_header_row">
|
||||
<tr class="oe_header_row oe_header_row_top">
|
||||
<td colspan="2">
|
||||
<h2 class="oe_view_title" t-if="widget.flags.display_title !== false">
|
||||
<span class="oe_view_title_text"><t t-esc="widget.display_title()"/></span>
|
||||
|
@ -423,8 +421,8 @@
|
|||
</td>
|
||||
<td>
|
||||
<ul class="oe_view_manager_switch oe_button_group oe_right">
|
||||
<t t-if="widget.views_src.length > 2" t-foreach="widget.views_src" t-as="view">
|
||||
<li t-if="view.view_type != 'form'" class="oe_e"><a t-attf-class="oe_vm_switch_#{view.view_type}" t-att-data-view-type="view.view_type" t-att-title="_t('Switch to ') + (view.label || view.view_type)">
|
||||
<t t-if="widget.views_src.length > 1" t-foreach="widget.views_src" t-as="view">
|
||||
<li class="oe_e"><a t-attf-class="oe_vm_switch_#{view.view_type}" t-att-data-view-type="view.view_type" t-att-title="_t('Switch to ') + (view.label || view.view_type)">
|
||||
</a></li>
|
||||
</t>
|
||||
</ul>
|
||||
|
@ -433,7 +431,6 @@
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="oe_view_manager_body">
|
||||
<t t-foreach="widget.views_src" t-as="view">
|
||||
<div t-attf-class="oe_view_manager_view_#{view.view_type}"/>
|
||||
|
@ -511,55 +508,31 @@
|
|||
<div class="oe_sidebar">
|
||||
<t t-foreach="widget.sections" t-as="section">
|
||||
<div class="oe_form_dropdown_section">
|
||||
<button class="oe_dropdown_toggle"><t t-esc="section.label"/></button>
|
||||
<ul class="oe_dropdown_menu">
|
||||
<li t-foreach="widget.items[section.name]" t-as="item" t-att-class="item.classname">
|
||||
<a class="oe_sidebar_action_a" t-att-title="item.title" t-att-data-section="section.name" t-att-data-index="item_index" t-att-href="item.url" target="_blank">
|
||||
<t t-raw="item.label"/>
|
||||
</a>
|
||||
</li>
|
||||
<li t-if="section.name == 'files'" class="oe_sidebar_add" style="display:none;">
|
||||
Input type file stuff
|
||||
</li>
|
||||
</ul>
|
||||
<button class="oe_dropdown_toggle oe_dropdown_arrow">
|
||||
<t t-esc="section.label"/>
|
||||
<ul class="oe_dropdown_menu">
|
||||
<li t-foreach="widget.items[section.name]" t-as="item" t-att-class="item.classname">
|
||||
<a class="oe_sidebar_action_a" t-att-title="item.title" t-att-data-section="section.name" t-att-data-index="item_index" t-att-href="item.url" target="_blank">
|
||||
<t t-raw="item.label"/>
|
||||
</a>
|
||||
<a t-if="section.name == 'files'" class="oe_sidebar_delete_item" t-att-data-id="item.id" title="Delete this attachment">x</a>
|
||||
</li>
|
||||
<li t-if="section.name == 'files'" class="oe_sidebar_add_attachment">
|
||||
<t t-call="HiddenInputFile">
|
||||
<t t-set="fileupload_id" t-value="widget.fileupload_id"/>
|
||||
<t t-set="fileupload_action">/web/binary/upload_attachment</t>
|
||||
<input type="hidden" name="model" t-att-value="widget.dataset and widget.dataset.model"/>
|
||||
<input type="hidden" name="id" t-att-value="widget.model_id"/>
|
||||
<input type="hidden" name="session_id" t-att-value="widget.session.session_id"/>
|
||||
<span>Add...</span>
|
||||
</t>
|
||||
</li>
|
||||
</ul>
|
||||
</button>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="Sidebar.attachments">
|
||||
<div class="oe-sidebar-attachments-toolbar">
|
||||
<div class="oe-binary-file-set" style="float: right">
|
||||
<form class="oe-binary-form" t-attf-target="#{element_id}_iframe"
|
||||
method="post" enctype="multipart/form-data" action="/web/binary/upload_attachment">
|
||||
<input type="hidden" name="session_id" t-att-value="session.session_id"/>
|
||||
<input type="hidden" name="callback" t-attf-value="#{element_id}_iframe"/>
|
||||
<input type="hidden" name="model" t-att-value="view.dataset.model"/>
|
||||
<input type="hidden" name="id" t-att-value="view.datarecord.id"/>
|
||||
<button class="oe_button" type="button">
|
||||
<img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16" style="display: none"/>
|
||||
<span>Add</span>
|
||||
</button>
|
||||
<input type="file" class="oe-binary-file" name="ufile" title="Add attachment"
|
||||
t-att-onclick="view.datarecord.id ? null : 'alert(\'No record selected ! You can only attach to existing record.\'); return false;'"/>
|
||||
</form>
|
||||
<iframe t-attf-id="#{element_id}_iframe" t-attf-name="#{element_id}_iframe" style="display: none"/>
|
||||
</div>
|
||||
</div>
|
||||
<br style="clear: both"/>
|
||||
<ul class="oe-sidebar-attachments-items">
|
||||
<li t-foreach="attachments" t-as="attachment">
|
||||
<t t-if="attachment.type == 'binary'" t-set="attachment.url" t-value="_s + '/web/binary/saveas?session_id='
|
||||
+ session.session_id + '&model=ir.attachment&id=' + attachment.id
|
||||
+ '&field=datas&filename_field=name&t=' + (new Date().getTime())"/>
|
||||
<a class="oe-sidebar-attachments-link" t-att-href="attachment.url" target="_blank">
|
||||
<t t-esc="attachment.name"/>
|
||||
</a>
|
||||
<a href="#" class="oe-sidebar-attachment-delete" t-att-data-id="attachment.id" t-attf-title="Delete the attachment #{attachment.name}">
|
||||
<img t-att-src='_s + "/web/static/src/img/attachments-close.png"' width="15" height="15" border="0"/>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</t>
|
||||
|
||||
<t t-name="TreeView">
|
||||
<select t-if="toolbar" style="width: 30%">
|
||||
|
@ -642,8 +615,8 @@
|
|||
</tfoot>
|
||||
</table>
|
||||
<div t-name="ListView.buttons" class="oe_list_buttons">
|
||||
<t t-if="!widget.no_leaf and widget.options.action_buttons !== false">
|
||||
<button type="button" class="oe_button oe_list_add oe_form_button_hi" t-if="widget.options.addable">
|
||||
<t t-if="!widget.no_leaf and widget.options.action_buttons !== false and widget.options.addable">
|
||||
<button type="button" class="oe_button oe_list_add oe_highlight">
|
||||
<t t-esc="widget.options.addable"/>
|
||||
</button>
|
||||
<span class="oe_fade">or</span> <a href="#" class="oe_bold oe_list_button_import">Import</a>
|
||||
|
@ -791,11 +764,11 @@
|
|||
</t>
|
||||
<t t-name="FormRenderingGroup">
|
||||
<t t-if="string" t-call="FormRenderingSeparator"/>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" t-attf-class="oe_form_group #{classnames}"/>
|
||||
<table border="0" cellpadding="0" cellspacing="0" t-attf-class="oe_form_group #{classnames}"/>
|
||||
</t>
|
||||
<t t-name="FormRenderingNotebook">
|
||||
<div>
|
||||
<ul t-attf-class="oe_form_notebook #{classnames}">
|
||||
<ul t-attf-class="oe_notebook #{classnames}">
|
||||
<li t-foreach="pages" t-as="page" t-att-modifiers="page.modifiers">
|
||||
<a t-attf-href="##{page.id}">
|
||||
<t t-esc="page.string"/>
|
||||
|
@ -805,7 +778,7 @@
|
|||
</div>
|
||||
</t>
|
||||
<t t-name="FormRenderingNotebookPage">
|
||||
<div t-attf-class="oe_form_notebook_page #{classnames}" t-att-id="id">
|
||||
<div t-attf-class="oe_notebook_page #{classnames}" t-att-id="id">
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="FormRenderingSeparator">
|
||||
|
@ -903,9 +876,6 @@
|
|||
<span class="oe_form_field oe_form_field_email oe_form_field_with_button">
|
||||
<a t-if="widget.get('effective_readonly')" href="#" class="oe_form_uri"/>
|
||||
<t t-if="!widget.get('effective_readonly')">
|
||||
<button class="oe_button" tabindex="-1" type="button" title="Send an e-mail with your default e-mail client">
|
||||
<img t-att-src='_s + "/web/static/src/img/icons/terp-mail-message-new.png"'/>
|
||||
</button>
|
||||
<div>
|
||||
<input type="text"
|
||||
t-att-id="widget.id_for_label"
|
||||
|
@ -1009,7 +979,7 @@
|
|||
</t>
|
||||
</t>
|
||||
<t t-name="FieldReference">
|
||||
<table class="oe_form_field oe_form_field_reference oe_form" border="0" cellpadding="0" cellspacing="0">
|
||||
<table class="oe_form_field oe_form_field_reference" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td t-attf-class="oe_form_frame_cell oe_form_selection">
|
||||
<span t-attf-class="oe_form_view_reference_selection"/>
|
||||
|
@ -1049,21 +1019,13 @@
|
|||
</t>
|
||||
<t t-name="FieldBinaryImage">
|
||||
<span class="oe_form_field oe_form_field_image">
|
||||
<div class="oe_form_field_image_controls">
|
||||
<div class="oe-binary-file-set">
|
||||
<form class="oe-binary-form" t-att-target="widget.iframe"
|
||||
method="post" enctype="multipart/form-data" action="/web/binary/upload">
|
||||
<input type="hidden" name="session_id" value=""/>
|
||||
<input type="hidden" name="callback" t-att-value="widget.iframe"/>
|
||||
<button class="oe_button" type="button" title="Set Image">
|
||||
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_DIRECTORY.png"'/>
|
||||
</button>
|
||||
<input type="file" class="oe-binary-file" name="ufile"
|
||||
t-att-tabindex="widget.node.attrs.tabindex"
|
||||
t-att-autofocus="widget.node.attrs.autofocus"
|
||||
/>
|
||||
</form>
|
||||
</div>
|
||||
<div class="oe_form_field_image_controls oe_edit_only">
|
||||
<t t-call="HiddenInputFile">
|
||||
<t t-set="fileupload_id" t-value="widget.fileupload_id"/>
|
||||
<button class="oe_button" type="button" title="Set Image">
|
||||
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_DIRECTORY.png"'/>
|
||||
</button>
|
||||
</t>
|
||||
<button class="oe_button oe-binary-file-clear" type="button" title="Clear">
|
||||
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_MISSING_IMAGE.png"'/>
|
||||
</button>
|
||||
|
@ -1071,7 +1033,6 @@
|
|||
<img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/>
|
||||
<b>Uploading ...</b>
|
||||
</div>
|
||||
<iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"/>
|
||||
</div>
|
||||
</span>
|
||||
</t>
|
||||
|
@ -1099,24 +1060,22 @@
|
|||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="oe-binary-file-set" style="width: 80px; height:22px;">
|
||||
<form class="oe-binary-form" t-att-target="widget.iframe"
|
||||
method="post" enctype="multipart/form-data" action="/web/binary/upload">
|
||||
<input type="hidden" name="session_id" value=""/>
|
||||
<input type="hidden" name="callback" t-att-value="widget.iframe"/>
|
||||
<button class="oe_button oe_field_button" type="button" title="Set Image">
|
||||
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_DIRECTORY.png"'/>
|
||||
<span>Select</span>
|
||||
</button>
|
||||
<input type="file" class="oe-binary-file" name="ufile"/>
|
||||
</form>
|
||||
</div>
|
||||
<t t-call="HiddenInputFile">
|
||||
<t t-set="fileupload_id" t-value="widget.fileupload_id"/>
|
||||
<t t-set="fileupload_style">width: 83px;</t>
|
||||
<button class="oe_button oe_field_button" type="button" title="Set Image">
|
||||
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_DIRECTORY.png"'/>
|
||||
<span>Select</span>
|
||||
</button>
|
||||
</t>
|
||||
</td>
|
||||
<td>
|
||||
<button class="oe_button oe-binary-file-save" type="button" title="Save As">
|
||||
<img t-att-src='_s + "/web/static/src/img/icons/gtk-save.png"'/>
|
||||
<span>Save As</span>
|
||||
</button>
|
||||
<a class="oe_binary_file_save_data">
|
||||
<button class="oe_button oe_binary_file_save" type="button" title="Save As">
|
||||
<img t-att-src='_s + "/web/static/src/img/icons/gtk-save.png"'/>
|
||||
<span>Save As</span>
|
||||
</button>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<button class="oe_button oe-binary-file-clear" type="button" title="Clear">
|
||||
|
@ -1130,7 +1089,6 @@
|
|||
<td class="oe-binary-progress" style="display: none" nowrap="true">
|
||||
<img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/>
|
||||
<b>Uploading ...</b>
|
||||
<iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -1141,6 +1099,18 @@
|
|||
</span>
|
||||
</t>
|
||||
</t>
|
||||
<t t-name="HiddenInputFile">
|
||||
<div t-attf-class="oe_hidden_input_file #{fileupload_class or ''}" t-att-style="fileupload_style">
|
||||
<form class="oe-binary-form" t-att-target="fileupload_id"
|
||||
method="post" enctype="multipart/form-data" t-att-action="fileupload_action || '/web/binary/upload'">
|
||||
<input type="hidden" name="session_id" value=""/>
|
||||
<input type="hidden" name="callback" t-att-value="fileupload_id"/>
|
||||
<t t-raw="__content__"/>
|
||||
<input type="file" class="oe-binary-file" name="ufile"/>
|
||||
</form>
|
||||
<iframe t-att-id="fileupload_id" t-att-name="fileupload_id" style="display: none"/>
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="WidgetButton">
|
||||
<button type="button" class="oe_button oe_form_button"
|
||||
t-att-tabindex="widget.node.attrs.tabindex"
|
||||
|
@ -1204,8 +1174,6 @@
|
|||
</t>
|
||||
|
||||
<t t-name="One2Many.viewmanager" t-extend="ViewManager">
|
||||
<t t-jquery="span.oe_view_title_text" t-operation="replace"/>
|
||||
|
||||
<t t-jquery=".oe-view-manager-header">
|
||||
this.attr('t-if', 'views.length != 1');
|
||||
</t>
|
||||
|
@ -1282,7 +1250,7 @@
|
|||
</div>
|
||||
</t>
|
||||
<t t-name="SearchView.add_to_dashboard">
|
||||
<div class="oe_form">
|
||||
<div>
|
||||
<p><b>Select Dashboard to add this filter to:</b></p>
|
||||
<select style="width: 100%; margin-right: 1em;">
|
||||
<option t-foreach="dashboards" t-as="menu" t-att-value="menu.id" t-att-selected="(menu.id == selected_menu_id) || undefined"><t t-esc="menu.name"/></option>
|
||||
|
@ -1409,10 +1377,10 @@
|
|||
</t>
|
||||
</t>
|
||||
</t>
|
||||
<div t-name="SearchView.Filters" class="oe_searchview_section">
|
||||
<div t-name="SearchView.Filters" class="oe_searchview_filters oe_searchview_section">
|
||||
|
||||
</div>
|
||||
<div t-name="SearchView.CustomFilters" class="oe_searchview_section">
|
||||
<div t-name="SearchView.CustomFilters" class="oe_searchview_custom oe_searchview_section">
|
||||
<div>
|
||||
<h3><span class="oe_i">M</span> Custom Filters</h3>
|
||||
<ul class="oe_searchview_custom_list"/>
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
# Catalan translation for openerp-web
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openerp-web package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openerp-web\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-06 17:33+0100\n"
|
||||
"PO-Revision-Date: 2012-06-16 17:47+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Catalan <ca@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-17 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 15419)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:466
|
||||
#: addons/web_calendar/static/src/js/calendar.js:467
|
||||
msgid "Responsible"
|
||||
msgstr ""
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:504
|
||||
#: addons/web_calendar/static/src/js/calendar.js:505
|
||||
msgid "Navigator"
|
||||
msgstr ""
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
|
||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
|
||||
msgid " "
|
||||
msgstr ""
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
"X-Poedit-Language: Czech\n"
|
||||
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -15,8 +15,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
"Language: es\n"
|
||||
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
# Mongolian translation for openerp-web
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openerp-web package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openerp-web\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-06 17:33+0100\n"
|
||||
"PO-Revision-Date: 2012-06-13 17:27+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Mongolian <mn@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
msgid "Calendar"
|
||||
msgstr "Цаглабар"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:466
|
||||
#: addons/web_calendar/static/src/js/calendar.js:467
|
||||
msgid "Responsible"
|
||||
msgstr "Хариуцагч"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:504
|
||||
#: addons/web_calendar/static/src/js/calendar.js:505
|
||||
msgid "Navigator"
|
||||
msgstr "Жолоо"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
|
||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
|
||||
msgid " "
|
||||
msgstr " "
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,25 +14,25 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
msgstr "Calendário"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:466
|
||||
#: addons/web_calendar/static/src/js/calendar.js:467
|
||||
msgid "Responsible"
|
||||
msgstr ""
|
||||
msgstr "Responsável"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:504
|
||||
#: addons/web_calendar/static/src/js/calendar.js:505
|
||||
msgid "Navigator"
|
||||
msgstr ""
|
||||
msgstr "Navegador"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_calendar/static/src/js/calendar.js:11
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-01 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15342)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-14 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15405)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: 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
Loading…
Reference in New Issue