[MERGE]merged with latest trunk

bzr revid: dhr@tinyerp.com-20120809052141-os6yizjk8clv2xmd
This commit is contained in:
Dharti Ratani (OpenERP) 2012-08-09 10:51:41 +05:30
commit 95db87558f
409 changed files with 19348 additions and 17347 deletions

View File

@ -3,8 +3,10 @@
"category": "Hidden",
"description":
"""
OpenERP Web core module.
This module provides the core of the OpenERP Web Client.
OpenERP Web core module.
========================
This module provides the core of the OpenERP Web Client.
""",
"depends" : [],
'auto_install': True,
@ -51,7 +53,6 @@
"static/src/js/view_list.js",
"static/src/js/view_list_editable.js",
"static/src/js/view_tree.js",
"static/src/js/view_editor.js"
],
'css' : [
"static/lib/jquery.ui.bootstrap/css/custom-theme/jquery-ui-1.8.16.custom.css",

View File

@ -426,10 +426,13 @@ class DisableCacheMiddleware(object):
referer = environ.get('HTTP_REFERER', '')
parsed = urlparse.urlparse(referer)
debug = parsed.query.count('debug') >= 1
filtered_headers = [(k,v) for k,v in headers if not (k=='Last-Modified' or (debug and (k=='Cache-Control' or k=='Expires')))]
nh = dict(headers)
if 'Last-Modified' in nh: del nh['Last-Modified']
if debug:
filtered_headers.append(('Cache-Control', 'no-cache'))
start_response(status, filtered_headers)
if 'Expires' in nh: del nh['Expires']
if 'Etag' in nh: del nh['Etag']
nh['Cache-Control'] = 'no-cache'
start_response(status, nh.items())
return self.app(environ, start_wrapped)
class Root(object):
@ -452,7 +455,6 @@ class Root(object):
by the server, will be filtered by this pattern
"""
def __init__(self, options, openerp_addons_namespace=True):
self.root = '/web/webclient/home'
self.config = options
if not hasattr(self.config, 'connector'):
@ -492,14 +494,6 @@ class Root(object):
request.parameter_storage_class = werkzeug.datastructures.ImmutableDict
request.app = self
if request.path == '/':
params = urllib.urlencode(request.args)
return werkzeug.utils.redirect(self.root + '?' + params, 301)(
environ, start_response)
elif request.path == '/mobile':
return werkzeug.utils.redirect(
'/web_mobile/static/src/web_mobile.html', 301)(environ, start_response)
handler = self.find_handler(*(request.path.split('/')[1:]))
if not handler:

View File

@ -163,98 +163,126 @@ def sass2scss(src):
return out
return write(sass)
def server_wide_modules(req):
addons = [i for i in req.config.server_wide_modules if i in openerpweb.addons_manifest]
return addons
def manifest_glob(req, addons, key):
if addons is None:
addons = server_wide_modules(req)
else:
addons = addons.split(',')
r = []
for addon in addons:
manifest = openerpweb.addons_manifest.get(addon, None)
if not manifest:
continue
# ensure does not ends with /
addons_path = os.path.join(manifest['addons_path'], '')[:-1]
globlist = manifest.get(key, [])
for pattern in globlist:
for path in glob.glob(os.path.normpath(os.path.join(addons_path, addon, pattern))):
r.append((path, path[len(addons_path):]))
return r
def manifest_list(req, mods, extension):
if not req.debug:
path = '/web/webclient/' + extension
if mods is not None:
path += '?mods=' + mods
return [path]
files = manifest_glob(req, mods, extension)
i_am_diabetic = req.httprequest.environ["QUERY_STRING"].count("no_sugar") >= 1 or \
req.httprequest.environ.get('HTTP_REFERER', '').count("no_sugar") >= 1
if i_am_diabetic:
return [wp for _fp, wp in files]
else:
return ['%s?debug=%s' % (wp, os.path.getmtime(fp)) for fp, wp in files]
def get_last_modified(files):
""" Returns the modification time of the most recently modified
file provided
:param list(str) files: names of files to check
:return: most recent modification time amongst the fileset
:rtype: datetime.datetime
"""
files = list(files)
if files:
return max(datetime.datetime.fromtimestamp(os.path.getmtime(f))
for f in files)
return datetime.datetime(1970, 1, 1)
def make_conditional(req, response, last_modified=None, etag=None):
""" Makes the provided response conditional based upon the request,
and mandates revalidation from clients
Uses Werkzeug's own :meth:`ETagResponseMixin.make_conditional`, after
setting ``last_modified`` and ``etag`` correctly on the response object
:param req: OpenERP request
:type req: web.common.http.WebRequest
:param response: Werkzeug response
:type response: werkzeug.wrappers.Response
:param datetime.datetime last_modified: last modification date of the response content
:param str etag: some sort of checksum of the content (deep etag)
:return: the response object provided
:rtype: werkzeug.wrappers.Response
"""
response.cache_control.must_revalidate = True
response.cache_control.max_age = 0
if last_modified:
response.last_modified = last_modified
if etag:
response.set_etag(etag)
return response.make_conditional(req.httprequest)
class Home(openerpweb.Controller):
_cp_path = '/'
@openerpweb.httprequest
def index(self, req, s_action=None, **kw):
js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list(req, None, 'js'))
css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list(req, None, 'css'))
r = html_template % {
'js': js,
'css': css,
'modules': simplejson.dumps(server_wide_modules(req)),
'init': 'var wc = new s.web.WebClient();wc.appendTo($(document.body));'
}
return r
@openerpweb.httprequest
def login(self, req, db, login, key):
return self._login(req, db, login, key)
def _login(self, req, db, login, key, redirect_url='/'):
req.session.authenticate(db, login, key, {})
redirect = werkzeug.utils.redirect(redirect_url, 303)
cookie_val = urllib2.quote(simplejson.dumps(req.session_id))
redirect.set_cookie('instance0|session_id', cookie_val)
return redirect
class WebClient(openerpweb.Controller):
_cp_path = "/web/webclient"
def server_wide_modules(self, req):
addons = [i for i in req.config.server_wide_modules if i in openerpweb.addons_manifest]
return addons
def manifest_glob(self, req, addons, key):
if addons is None:
addons = self.server_wide_modules(req)
else:
addons = addons.split(',')
r = []
for addon in addons:
manifest = openerpweb.addons_manifest.get(addon, None)
if not manifest:
continue
# ensure does not ends with /
addons_path = os.path.join(manifest['addons_path'], '')[:-1]
globlist = manifest.get(key, [])
for pattern in globlist:
for path in glob.glob(os.path.normpath(os.path.join(addons_path, addon, pattern))):
r.append( (path, path[len(addons_path):]))
return r
def manifest_list(self, req, mods, extension):
if not req.debug:
path = '/web/webclient/' + extension
if mods is not None:
path += '?mods=' + mods
return [path]
no_sugar = req.httprequest.environ["QUERY_STRING"].count("no_sugar") >= 1
no_sugar = no_sugar or req.httprequest.environ.get('HTTP_REFERER', '').count("no_sugar") >= 1
if not no_sugar:
return ['%s?debug=%s' % (wp, os.path.getmtime(fp)) for fp, wp in self.manifest_glob(req, mods, extension)]
else:
return [el[1] for el in self.manifest_glob(req, mods, extension)]
@openerpweb.jsonrequest
def csslist(self, req, mods=None):
return self.manifest_list(req, mods, 'css')
return manifest_list(req, mods, 'css')
@openerpweb.jsonrequest
def jslist(self, req, mods=None):
return self.manifest_list(req, mods, 'js')
return manifest_list(req, mods, 'js')
@openerpweb.jsonrequest
def qweblist(self, req, mods=None):
return self.manifest_list(req, mods, 'qweb')
def get_last_modified(self, files):
""" Returns the modification time of the most recently modified
file provided
:param list(str) files: names of files to check
:return: most recent modification time amongst the fileset
:rtype: datetime.datetime
"""
files = list(files)
if files:
return max(datetime.datetime.fromtimestamp(os.path.getmtime(f))
for f in files)
return datetime.datetime(1970, 1, 1)
def make_conditional(self, req, response, last_modified=None, etag=None):
""" Makes the provided response conditional based upon the request,
and mandates revalidation from clients
Uses Werkzeug's own :meth:`ETagResponseMixin.make_conditional`, after
setting ``last_modified`` and ``etag`` correctly on the response object
:param req: OpenERP request
:type req: web.common.http.WebRequest
:param response: Werkzeug response
:type response: werkzeug.wrappers.Response
:param datetime.datetime last_modified: last modification date of the response content
:param str etag: some sort of checksum of the content (deep etag)
:return: the response object provided
:rtype: werkzeug.wrappers.Response
"""
response.cache_control.must_revalidate = True
response.cache_control.max_age = 0
if last_modified:
response.last_modified = last_modified
if etag:
response.set_etag(etag)
return response.make_conditional(req.httprequest)
return manifest_list(req, mods, 'qweb')
@openerpweb.httprequest
def css(self, req, mods=None):
files = list(self.manifest_glob(req, mods, 'css'))
last_modified = self.get_last_modified(f[0] for f in files)
files = list(manifest_glob(req, mods, 'css'))
last_modified = get_last_modified(f[0] for f in files)
if req.httprequest.if_modified_since and req.httprequest.if_modified_since >= last_modified:
return werkzeug.wrappers.Response(status=304)
@ -287,57 +315,36 @@ class WebClient(openerpweb.Controller):
content, checksum = concat_files((f[0] for f in files), reader)
return self.make_conditional(
return make_conditional(
req, req.make_response(content, [('Content-Type', 'text/css')]),
last_modified, checksum)
@openerpweb.httprequest
def js(self, req, mods=None):
files = [f[0] for f in self.manifest_glob(req, mods, 'js')]
last_modified = self.get_last_modified(files)
files = [f[0] for f in manifest_glob(req, mods, 'js')]
last_modified = get_last_modified(files)
if req.httprequest.if_modified_since and req.httprequest.if_modified_since >= last_modified:
return werkzeug.wrappers.Response(status=304)
content, checksum = concat_files(files, intersperse=';')
return self.make_conditional(
return make_conditional(
req, req.make_response(content, [('Content-Type', 'application/javascript')]),
last_modified, checksum)
@openerpweb.httprequest
def qweb(self, req, mods=None):
files = [f[0] for f in self.manifest_glob(req, mods, 'qweb')]
last_modified = self.get_last_modified(files)
files = [f[0] for f in manifest_glob(req, mods, 'qweb')]
last_modified = get_last_modified(files)
if req.httprequest.if_modified_since and req.httprequest.if_modified_since >= last_modified:
return werkzeug.wrappers.Response(status=304)
content,checksum = concat_xml(files)
content, checksum = concat_xml(files)
return self.make_conditional(
return make_conditional(
req, req.make_response(content, [('Content-Type', 'text/xml')]),
last_modified, checksum)
@openerpweb.httprequest
def home(self, req, s_action=None, **kw):
js = "\n ".join('<script type="text/javascript" src="%s"></script>'%i for i in self.manifest_list(req, None, 'js'))
css = "\n ".join('<link rel="stylesheet" href="%s">'%i for i in self.manifest_list(req, None, 'css'))
r = html_template % {
'js': js,
'css': css,
'modules': simplejson.dumps(self.server_wide_modules(req)),
'init': 'var wc = new s.web.WebClient();wc.appendTo($(document.body));'
}
return r
@openerpweb.httprequest
def login(self, req, db, login, key):
req.session.authenticate(db, login, key, {})
redirect = werkzeug.utils.redirect('/web/webclient/home', 303)
cookie_val = urllib2.quote(simplejson.dumps(req.session_id))
redirect.set_cookie('instance0|session_id', cookie_val)
return redirect
@openerpweb.jsonrequest
def translations(self, req, mods, lang):
lang_model = req.session.model('res.lang')
@ -997,6 +1004,16 @@ class DataSet(openerpweb.Controller):
elif isinstance(kwargs[k], common.nonliterals.BaseDomain):
kwargs[k] = req.session.eval_domain(kwargs[k])
# Temporary implements future display_name special field for model#read()
if method == 'read' and kwargs.get('context') and kwargs['context'].get('future_display_name'):
if 'display_name' in args[1]:
names = req.session.model(model).name_get(args[0], **kwargs)
args[1].remove('display_name')
r = getattr(req.session.model(model), method)(*args, **kwargs)
for i in range(len(r)):
r[i]['display_name'] = names[i][1] or "%s#%d" % (model, names[i][0])
return r
return getattr(req.session.model(model), method)(*args, **kwargs)
@openerpweb.jsonrequest
@ -1360,7 +1377,12 @@ class Binary(openerpweb.Controller):
res = Model.default_get([field], context).get(field)
image_data = base64.b64decode(res)
else:
res = Model.read([int(id)], [last_update, field], context)[0]
try:
id = int(id)
except (ValueError):
# objects might use virtual ids as string
pass
res = Model.read([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):

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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-07-26 04:50+0000\n"
"X-Generator: Launchpad (build 15679)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web/static/src/js/chrome.js:176

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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-07-20 04:45+0000\n"
"X-Generator: Launchpad (build 15644)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web/static/src/js/chrome.js:176

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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-07-30 04:59+0000\n"
"X-Generator: Launchpad (build 15702)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web/static/src/js/chrome.js:176
@ -780,8 +780,8 @@ msgid ""
"Your version of OpenERP is unsupported. Support & maintenance services are "
"available here:"
msgstr ""
"Sua versão do OpenERP não é suportada. Suporte e manutenção estão "
"disponíveis aqui:"
"Sem suporte oficial da OpenERP S/A - Suporte e manutenção estão disponíveis "
"aqui:"
#. openerp-web
#: addons/web/static/src/xml/base.xml:251

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -27,7 +27,7 @@
var $tip = this.tip();
$tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title);
$tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity
$tip[0].className = 'tipsy openerp oe_tooltip '; // reset classname in case of dynamic gravity
$tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).prependTo(document.body);
var pos = $.extend({}, this.$element.offset(), {
@ -63,7 +63,7 @@
}
}
$tip.css(tp).addClass('openerp oe_tooltip tipsy-' + gravity);
$tip.css(tp).addClass('tipsy-' + gravity);
$tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0);
if (this.options.className) {
$tip.addClass(maybeCall(this.options.className, this.$element[0]));

View File

@ -80,6 +80,14 @@
* http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image
*/
}
.openerp :-moz-placeholder {
color: #afafb6 !important;
font-style: italic !important;
}
.openerp ::-webkit-input-placeholder {
color: #afafb6 !important;
font-style: italic !important;
}
.openerp a {
text-decoration: none;
}
@ -501,6 +509,14 @@
.openerp .oe_avatar + div {
margin-left: 5px;
}
.openerp .oe_image_small > img {
max-width: 50px;
max-height: 50px;
}
.openerp .oe_image_medium > img {
max-width: 180px;
max-height: 180px;
}
.openerp .oe_button.oe_link {
border: none;
padding: 0;
@ -546,10 +562,6 @@
.openerp .oe_webclient .oe_star_on {
color: gold;
}
.openerp .oe_bounce {
-moz-animation: bounce 0.4s linear;
-webkit-animation: bounce 0.4s linear;
}
.openerp .oe_tag {
border-radius: 2px;
-webkit-box-sizing: border-box;
@ -594,6 +606,19 @@
.openerp.oe_tooltip .oe_tooltip_technical_title {
font-weight: bold;
}
.openerp.oe_tooltip .oe_tooltip_close {
margin: -5px 0 0 2px;
cursor: default;
float: right;
color: white;
}
.openerp.oe_tooltip .oe_tooltip_close:hover {
color: #999999;
cursor: pointer;
}
.openerp.oe_tooltip .oe_tooltip_message {
max-width: 310px;
}
.openerp .oe_notebook {
margin: 8px 0;
padding: 0 16px;
@ -1808,15 +1833,29 @@
margin: 0 0 0 4px;
padding: 0;
}
.openerp .oe_view_nocontent > img {
float: left;
margin: 1.5em;
}
.openerp .oe_view_nocontent > div {
overflow: hidden;
padding: 35px 0px 0px 0px;
max-width: 700px;
.openerp .oe_view_nocontent {
padding: 15px;
margin-top: 0;
color: #777777;
font-size: 125%;
max-width: 700px;
}
.openerp .oe_view_nocontent .oe_view_nocontent_create {
background: transparent url(/web/static/src/img/view_empty_arrow.png) no-repeat 7px 0;
margin-top: 0;
padding-top: 35px;
min-height: 28px;
color: #4c4c4c;
}
.openerp .oe_view_nocontent > p {
padding-left: 95px;
}
.openerp .oe_view_nocontent .oe_empty_custom_dashboard {
background: transparent url(/web/static/src/img/graph_background.png) no-repeat 0 0;
margin-top: -15px;
padding: 100px 0 0 137px;
min-height: 327px;
margin-left: -15px;
}
.openerp .oe_formview {
background: white;
@ -1908,6 +1947,16 @@
max-width: 860px;
margin: 0 auto;
}
.openerp .oe_form div.oe_form_configuration div.oe_horizontal_separator {
margin: 25px 0 10px 0;
}
.openerp .oe_form div.oe_form_configuration p {
color: #aaaaaa;
max-width: 650px;
}
.openerp .oe_form div.oe_form_configuration label {
min-width: 150px;
}
.openerp ul.oe_form_steps {
height: 30px;
padding: 0;
@ -1945,6 +1994,105 @@
font-weight: bold;
color: #b33630;
}
.openerp ul.oe_form_steps_clickable {
height: 30px;
margin: 0;
padding: 0;
text-shadow: 0 1px 1px #cacaca;
box-shadow: 0 0 1px rgba(0, 0, 0, 0.5);
overflow: hidden;
}
.openerp ul.oe_form_steps_clickable li {
border-right: none;
padding: 0 0 0 12px;
position: relative;
float: left;
vertical-align: top;
height: 30px;
color: white;
}
.openerp ul.oe_form_steps_clickable li:after {
content: " ";
width: 0;
height: 0;
border-top: 21px solid transparent;
border-bottom: 21px solid transparent;
border-left: 5px solid #807fb4;
position: absolute;
top: 50%;
margin-top: -21px;
left: 100%;
z-index: 2;
}
.openerp ul.oe_form_steps_clickable li:hover:after {
border-left: 5px solid #807fb4;
}
.openerp ul.oe_form_steps_clickable li:before {
content: " ";
width: 0;
height: 0;
border-top: 21px solid transparent;
border-bottom: 21px solid transparent;
border-left: 5px solid white;
position: absolute;
top: 50%;
margin-top: -21px;
margin-left: 2px;
left: 100%;
z-index: 2;
}
.openerp ul.oe_form_steps_clickable li.oe_form_steps_active {
font-weight: bold;
text-shadow: 0 1px 1px #999999;
box-shadow: inset 0 -1px 1px rgba(0, 0, 0, 0.25), inset 0 1px 1px rgba(255, 255, 255, 0.25);
background-color: #dc5f59;
background: -webkit-linear-gradient(top, #dc5f59, #b33630);
color: white;
}
.openerp ul.oe_form_steps_clickable li.oe_form_steps_inactive {
cursor: pointer;
box-shadow: inset 0 -1px 1px rgba(0, 0, 0, 0.25), inset 0 1px 1px rgba(255, 255, 255, 0.25);
background-color: #adadcf;
background: -webkit-linear-gradient(top, #adadcf, #7c7ba7);
}
.openerp ul.oe_form_steps_clickable li.oe_form_steps_inactive div {
padding: 0 30px 0 0;
}
.openerp ul.oe_form_steps_clickable li.oe_form_steps_inactive:hover {
background: -webkit-linear-gradient(top, #7c7ba7, #adadcf);
}
.openerp ul.oe_form_steps_clickable li div {
padding: 0 30px 0 0;
}
.openerp ul.oe_form_steps_clickable li.oe_form_steps_active:after {
content: " ";
display: block;
width: 0;
height: 0;
border-top: 21px solid transparent;
border-bottom: 21px solid transparent;
border-left: 5px solid #b33630;
position: absolute;
top: 50%;
margin-top: -21px;
left: 100%;
z-index: 2;
}
.openerp ul.oe_form_steps_clickable li.oe_form_steps_active:before {
content: " ";
display: block;
width: 0;
height: 0;
border-top: 21px solid transparent;
border-bottom: 21px solid transparent;
border-left: 5px solid white;
position: absolute;
top: 50%;
margin-top: -21px;
margin-left: 2px;
left: 100%;
z-index: 2;
}
.openerp .oe_form .oe_subtotal_footer {
width: 1% !important;
}
@ -2001,7 +2149,7 @@
}
.openerp .oe_form td.oe_form_group_cell_label {
border-right: 1px solid #dddddd;
padding: 2px 0px 2px 0px;
padding: 4px 0px 4px 0px;
}
.openerp .oe_form td.oe_form_group_cell_label label {
line-height: 18px;
@ -2013,7 +2161,7 @@
}
.openerp .oe_form .oe_form_group {
width: 100%;
margin: 6px 0 6px 0;
margin: 9px 0 9px 0;
}
.openerp .oe_form .oe_form_group .oe_form_group_cell.oe_group_right {
padding-left: 20px;
@ -2038,7 +2186,7 @@
font-weight: bold;
font-size: 20px;
margin: 8px 0px 8px 0px;
color: #aaaabb;
color: #53637e;
}
.openerp .oe_horizontal_separator:empty {
height: 5px;
@ -2097,7 +2245,7 @@
width: 100%;
display: inline-block;
padding: 2px 2px 2px 0px;
line-height: 18px;
line-height: 1em;
}
.openerp .oe_form .oe_form_field input {
margin: 0px;
@ -2186,10 +2334,10 @@
overflow: hidden;
}
.openerp .oe_form_editable .oe_form .oe_form_field_integer {
width: 7em !important;
width: 6em !important;
}
.openerp .oe_form_editable .oe_form .oe_form_field_float {
width: 8em !important;
width: 7em !important;
}
.openerp .oe_form_editable .oe_form .oe_form_field_date {
width: 7.5em !important;
@ -2308,6 +2456,11 @@
.openerp .oe_list {
position: relative;
}
.openerp .oe_list .oe_form .oe_form_nosheet {
margin: 0;
padding: 0;
border: none;
}
.openerp .oe_list .oe_form .oe_form_field {
width: auto;
position: absolute;
@ -2419,6 +2572,25 @@
.openerp .oe_list_content .numeric input {
text-align: right;
}
.openerp .oe_list_content th.oe_list_header_handle {
font-size: 1px;
overflow: hidden;
text-indent: -9001px;
}
.openerp .oe_list_content td.oe_list_field_handle {
width: 1em;
cursor: ns-resize;
}
.openerp .oe_list_content td.oe_list_field_handle .oe_list_handle {
font-size: 1px;
letter-spacing: -1px;
color: transparent;
}
.openerp .oe_list_content td.oe_list_field_handle .oe_list_handle:before {
font: 21px "mnmliconsRegular";
content: "ö";
color: #404040;
}
.openerp .tree_header {
background-color: #f0f0f0;
border-bottom: 1px solid #cacaca;
@ -2474,27 +2646,6 @@
.openerp .oe_trad_field.touched {
border: 1px solid green !important;
}
.openerp .oe_view_editor {
width: 100%;
border-collapse: collapse;
margin-left: -12px;
width: 100%;
background-color: white;
border-spacing: 0;
}
.openerp .oe_view_editor td {
text-align: center;
white-space: nowrap;
border: 1px solid #d8d8d8;
cursor: pointer;
font-size: 90%;
}
.openerp .oe_view_editor_field td {
border: 0px !important;
}
.openerp .oe_view_editor tr:hover {
background-color: #ecebf2;
}
.openerp .oe_layout_debugging .oe_form_group {
outline: 2px dashed green;
}

View File

@ -140,6 +140,14 @@ $sheet-max-width: 860px
font-size: 13px
background: white
// }}}
//Placeholder style{{{
\:-moz-placeholder
color: $facets-border !important
font-style: italic !important
\::-webkit-input-placeholder
color: $facets-border !important
font-style: italic !important
//}}}
// Tag reset {{{
a
text-decoration: none
@ -150,7 +158,7 @@ $sheet-max-width: 860px
font-weight: bold
background-color: #f0f0f0
th
border-right: 1px dotted #afafb6
border-right: 1px dotted $facets-border
&:last-child
border-right: none
th, td
@ -400,6 +408,12 @@ $sheet-max-width: 860px
border: none
.oe_avatar + div
margin-left: 5px
.oe_image_small > img
max-width: 50px
max-height: 50px
.oe_image_medium > img
max-width: 180px
max-height: 180px
.oe_button.oe_link
@include reset()
img
@ -421,9 +435,6 @@ $sheet-max-width: 860px
text-decoration: none
.oe_star_on
color: gold
.oe_bounce
-moz-animation: bounce .40s linear
-webkit-animation: bounce .40s linear
// }}}
// Tags (for many2many tags, among others) {{{
.oe_tag
@ -461,6 +472,16 @@ $sheet-max-width: 860px
list-style: circle
.oe_tooltip_technical_title
font-weight: bold
.oe_tooltip_close
margin: -5px 0 0 2px
cursor: default
float: right
color: white
&:hover
color: #999
cursor: pointer
.oe_tooltip_message
max-width: 310px
// }}}
// Notebook {{{
.oe_notebook
@ -524,7 +545,7 @@ $sheet-max-width: 860px
top: 26px
left: 0
z-index: 1
border: 1px solid #afafb6
border: 1px solid $facets-border
background: white
padding: 4px 0
min-width: 140px
@ -804,7 +825,7 @@ $sheet-max-width: 860px
display: none
width: 220px
background: #f0eeee
border-right: 1px solid #afafb6
border-right: 1px solid $facets-border
text-shadow: 0 1px 1px white
padding-bottom: 16px
a.oe_logo
@ -1245,7 +1266,7 @@ $sheet-max-width: 860px
background-color: white
min-width: 100%
display: none
border: 1px solid #afafb6
border: 1px solid $facets-border
text-align: left
@include radius(4px)
@include box-shadow(0 1px 4px rgba(0,0,0,0.3))
@ -1400,15 +1421,26 @@ $sheet-max-width: 860px
// }}}
// Views Common {{{
.oe_view_nocontent
> img
float: left
margin: 1.5em
> div
// don't encroach on my arrow
overflow: hidden
padding: 35px 0px 0px 0px
max-width: 700px
font-size: 125%
padding: 15px
margin-top: 0
color: #777777
font-size: 125%
max-width: 700px
.oe_view_nocontent_create
background: transparent url(/web/static/src/img/view_empty_arrow.png) no-repeat 7px 0
margin-top: 0
padding-top: 35px
min-height: 28px
color: #4c4c4c
> p
padding-left: 95px
.oe_empty_custom_dashboard
background: transparent url(/web/static/src/img/graph_background.png) no-repeat 0 0
margin-top: -15px
padding: 100px 0 0 137px
min-height: 327px
margin-left: -15px
// }}}
// FormView.base and dynamic tags {{{
.oe_formview
@ -1462,6 +1494,14 @@ $sheet-max-width: 860px
min-width: 650px
max-width: $sheet-max-width
margin: 0 auto
div.oe_form_configuration
div.oe_horizontal_separator
margin: 25px 0 10px 0
p
color: #aaa
max-width: 650px
label
min-width: 150px
ul.oe_form_steps
height: 30px
padding: 0
@ -1491,6 +1531,93 @@ $sheet-max-width: 860px
.oe_form_steps_active
font-weight: bold
color: #b33630
ul.oe_form_steps_clickable
height: 30px
margin: 0
padding: 0
text-shadow: 0 1px 1px #cacaca
box-shadow: 0 0 1px rgba(0,0,0,0.5)
overflow: hidden
li
border-right: none
padding: 0 0 0 12px
position: relative
float: left
vertical-align: top
height: 30px
color: white
&:after
content: " "
width: 0
height: 0
border-top: 21px solid transparent
border-bottom: 21px solid transparent
border-left: 5px solid #807fb4
position: absolute
top: 50%
margin-top: -21px
left: 100%
z-index: 2
&:hover:after
border-left: 5px solid #807fb4
&:before
content: " "
width: 0
height: 0
border-top: 21px solid transparent
border-bottom: 21px solid transparent
border-left: 5px solid white
position: absolute
top: 50%
margin-top: -21px
margin-left: 2px
left: 100%
z-index: 2
&.oe_form_steps_active
font-weight: bold
text-shadow: 0 1px 1px #999999
box-shadow: inset 0 -1px 1px rgba(0,0,0,0.25), inset 0 1px 1px rgba(255,255,255,0.25)
background-color: #dc5f59
background: -webkit-linear-gradient(top, #dc5f59, #b33630)
color: white
&.oe_form_steps_inactive
cursor: pointer
box-shadow: inset 0 -1px 1px rgba(0,0,0,0.25), inset 0 1px 1px rgba(255,255,255,0.25)
background-color: #adadcf
background: -webkit-linear-gradient(top, #adadcf, #7c7ba7)
div
padding: 0 30px 0 0
&.oe_form_steps_inactive:hover
background: -webkit-linear-gradient(top, #7c7ba7, #adadcf)
div
padding: 0 30px 0 0
&.oe_form_steps_active:after
content: " "
display: block
width: 0
height: 0
border-top: 21px solid transparent
border-bottom: 21px solid transparent
border-left: 5px solid #b33630
position: absolute
top: 50%
margin-top: -21px
left: 100%
z-index: 2
&.oe_form_steps_active:before
content: " "
display: block
width: 0
height: 0
border-top: 21px solid transparent
border-bottom: 21px solid transparent
border-left: 5px solid white
position: absolute
top: 50%
margin-top: -21px
margin-left: 2px
left: 100%
z-index: 2
.oe_form .oe_subtotal_footer
width: 1% !important
td.oe_form_group_cell
@ -1524,7 +1651,7 @@ $sheet-max-width: 860px
background: white
min-height: 330px
padding: 16px
border: 1px solid #afafb6
border: 1px solid $facets-border
@include box-shadow(0 0 10px rgba(0,0,0,0.3))
.ui-tabs
margin: 0 -16px
@ -1537,7 +1664,7 @@ $sheet-max-width: 860px
margin: 2px
td.oe_form_group_cell_label
border-right: 1px solid #ddd
padding: 2px 0px 2px 0px
padding: 4px 0px 4px 0px
label
line-height: 18px
display: block
@ -1546,7 +1673,7 @@ $sheet-max-width: 860px
padding-left: 6px
.oe_form_group
width: 100%
margin: 6px 0 6px 0
margin: 9px 0 9px 0
.oe_form_group_cell.oe_group_right
padding-left: 20px
// }}}
@ -1571,7 +1698,7 @@ $sheet-max-width: 860px
font-weight: bold
font-size: 20px
margin: 8px 0px 8px 0px
color: #aab
color: #53637e
.oe_horizontal_separator:empty
height: 5px
.oe_vertical_separator
@ -1618,7 +1745,7 @@ $sheet-max-width: 860px
width: 100%
display: inline-block
padding: 2px 2px 2px 0px
line-height: 18px
line-height: 1em
input
margin: 0px
input[type="text"], input[type="password"], input[type="file"], select
@ -1685,9 +1812,9 @@ $sheet-max-width: 860px
.oe_form_editable
.oe_form
.oe_form_field_integer
width: 7em !important
width: 6em !important
.oe_form_field_float
width: 8em !important
width: 7em !important
.oe_form_field_date
width: 7.5em !important
.oe_form_field_datetime
@ -1804,11 +1931,16 @@ $sheet-max-width: 860px
.oe_list
position: relative
.oe_form .oe_form_field
width: auto
position: absolute
margin: 0 !important // dammit
padding: 0
.oe_form
.oe_form_nosheet
margin: 0 // FIXME: either class or border should not be by default
padding: 0
border: none
.oe_form_field
width: auto
position: absolute
margin: 0 !important // dammit
padding: 0
.oe_list_content
width: 100%
@ -1881,6 +2013,16 @@ $sheet-max-width: 860px
width: 82px
input
text-align: right
th.oe_list_header_handle
font-size: 1px
overflow: hidden
text-indent: -9001px
td.oe_list_field_handle
width: 1em
cursor: ns-resize
.oe_list_handle
@include text-to-icon("ö")
// }}}
// Tree view {{{
.tree_header
@ -1905,7 +2047,7 @@ $sheet-max-width: 860px
border-bottom: 2px solid #cacaca
.treeview-tr, .treeview-td
cursor: pointer
border-right: 1px dotted #afafb6
border-right: 1px dotted $facets-border
vertical-align: top
text-align: left
border-bottom: 1px solid #cfcccc
@ -1929,25 +2071,6 @@ $sheet-max-width: 860px
.oe_trad_field.touched
border: 1px solid green !important
// }}}
// View Editor {{{
.oe_view_editor
width: 100%
border-collapse: collapse
margin-left: -12px
width: 100%
background-color: white
border-spacing: 0
td
text-align: center
white-space: nowrap
border: 1px solid #D8D8D8
cursor: pointer
font-size: 90%
.oe_view_editor_field td
border: 0px !important
.oe_view_editor tr:hover
background-color: #ecebf2
// }}}
// Debugging stuff {{{
.oe_layout_debugging
.oe_form_group

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -48,7 +48,7 @@
* OpenERP Web web module split
*---------------------------------------------------------*/
openerp.web = function(session) {
var files = ["corelib","coresetup","dates","formats","chrome","data","views","search","list","form","list_editable","web_mobile","view_tree","data_export","data_import","view_editor"];
var files = ["corelib","coresetup","dates","formats","chrome","data","views","search","list","form","list_editable","web_mobile","view_tree","data_export","data_import"];
for(var i=0; i<files.length; i++) {
if(openerp.web[files[i]]) {
openerp.web[files[i]](session);

View File

@ -57,9 +57,7 @@ instance.web.Dialog = instance.web.Widget.extend({
init: function (parent, options, content) {
var self = this;
this._super(parent);
if (content) {
this.$element = content instanceof $ ? content : $(content);
}
this.content_to_set = content;
this.dialog_options = {
modal: true,
destroy_on_close: true,
@ -83,11 +81,6 @@ instance.web.Dialog = instance.web.Widget.extend({
if (options) {
_.extend(this.dialog_options, options);
}
if (this.dialog_options.autoOpen) {
this.open();
} else {
instance.web.dialog(this.$element, this.get_options());
}
},
get_options: function(options) {
var self = this,
@ -116,31 +109,44 @@ instance.web.Dialog = instance.web.Widget.extend({
} else if (val.slice(-1) == "%") {
return Math.round(available_size / 100 * parseInt(val.slice(0, -1), 10));
} else {
return parseInt(val, 10);
return parseInt(val, 10);
}
},
renderElement: function() {
if (this.content_to_set) {
this.setElement(this.content_to_set);
} else if (this.template) {
this._super();
}
},
open: function(options) {
// TODO fme: bind window on resize
if (this.template) {
this.$element.html(this.renderElement());
}
if (! this.dialog_inited)
this.init_dialog();
var o = this.get_options(options);
instance.web.dialog(this.$element, o).dialog('open');
instance.web.dialog(this.$element, o).dialog('open');
if (o.height === 'auto' && o.max_height) {
this.$element.css({ 'max-height': o.max_height, 'overflow-y': 'auto' });
}
return this;
},
init_dialog: function(options) {
this.renderElement();
var o = this.get_options(options);
instance.web.dialog(this.$element, o);
var res = this.start();
this.dialog_inited = true;
return res;
},
close: function() {
this.$element.dialog('close');
},
on_close: function() {
if (this.__tmp_dialog_destroying)
return;
if (this.__tmp_dialog_destroying)
return;
if (this.dialog_options.destroy_on_close) {
this.__tmp_dialog_closing = true;
this.__tmp_dialog_closing = true;
this.destroy();
this.__tmp_dialog_closing = undefined;
this.__tmp_dialog_closing = undefined;
}
},
on_resized: function() {
@ -150,10 +156,10 @@ instance.web.Dialog = instance.web.Widget.extend({
el.destroy();
});
if (! this.__tmp_dialog_closing) {
this.__tmp_dialog_destroying = true;
this.close();
this.__tmp_dialog_destroying = undefined;
}
this.__tmp_dialog_destroying = true;
this.close();
this.__tmp_dialog_destroying = undefined;
}
if (! this.isDestroyed()) {
this.$element.dialog('destroy');
}
@ -263,11 +269,11 @@ instance.web.Loading = instance.web.Widget.extend({
this.count += increment;
if (this.count > 0) {
if (instance.connection.debug) {
this.$element.text(_.str.sprintf( _t("Loading (%d)"), this.count));
} else {
this.$element.text(_t("Loading"));
}
if (instance.connection.debug) {
this.$element.text(_.str.sprintf( _t("Loading (%d)"), this.count));
} else {
this.$element.text(_t("Loading"));
}
this.$element.show();
this.getParent().$element.addClass('oe_wait');
} else {
@ -394,6 +400,9 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
'db': form_obj['db_name'],
'login': 'admin',
'password': form_obj['create_admin_pwd'],
'login_successful': function() {
instance.webclient.show_application();
},
},
};
self.do_action(client_action);
@ -496,7 +505,11 @@ instance.web.Login = instance.web.Widget.extend({
this.has_local_storage = typeof(localStorage) != 'undefined';
this.selected_db = null;
this.selected_login = null;
this.params = params;
this.params = params || {};
if (this.params.login_successful) {
this.on('login_successful', this, this.params.login_successful);
}
if (this.has_local_storage && this.remember_credentials) {
this.selected_db = localStorage.getItem('last_db_login_success');
@ -513,7 +526,7 @@ instance.web.Login = instance.web.Widget.extend({
self.do_action("database_manager");
});
return self.load_db_list().then(self.on_db_list_loaded).then(function() {
if(self.params) {
if (self.params.db) {
self.do_login(self.params.db, self.params.login, self.params.password);
}
});
@ -589,10 +602,96 @@ instance.web.Login = instance.web.Widget.extend({
self.$(".oe_login_pane").fadeIn("fast");
self.$element.addClass("oe_login_invalid");
});
},
show: function () {
this.$element.show();
},
hide: function () {
this.$element.hide();
}
});
instance.web.client_actions.add("login", "instance.web.Login");
/**
* Client action to reload the whole interface.
* If params has an entry 'menu_id', it opens the given menu entry.
*/
instance.web.Reload = instance.web.Widget.extend({
init: function(parent, params) {
this._super(parent);
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) {
hash = "#menu_id=" + this.menu_id;
}
var url = l.protocol + "//" + l.host + l.pathname + search + hash;
window.location = url;
}
});
instance.web.client_actions.add("reload", "instance.web.Reload");
/**
* Client action to go back in breadcrumb history.
* If can't go back in history stack, will go back to home.
*/
instance.web.HistoryBack = instance.web.Widget.extend({
init: function(parent, params) {
if (!parent.history_back()) {
window.location = '/' + (window.location.search || '');
}
}
});
instance.web.client_actions.add("history_back", "instance.web.HistoryBack");
/**
* Client action to go back home.
*/
instance.web.Home = instance.web.Widget.extend({
init: function(parent, params) {
window.location = '/' + (window.location.search || '');
}
});
instance.web.client_actions.add("home", "instance.web.Home");
instance.web.ChangePassword = instance.web.Widget.extend({
template: "ChangePassword",
start: function() {
var self = this;
self.$element.find("form[name=change_password_form]").validate({
submitHandler: function (form) {
self.rpc("/web/session/change_password",{
'fields': $(form).serializeArray()
}, function(result) {
if (result.error) {
self.display_error(result);
return;
} else {
instance.webclient.on_logout();
}
});
}
});
},
display_error: function (error) {
return instance.web.dialog($('<div>'), {
modal: true,
title: error.title,
buttons: [
{text: _("Ok"), click: function() { $(this).dialog("close"); }}
]
}).html(error.error);
},
})
instance.web.client_actions.add("change_password", "instance.web.ChangePassword");
instance.web.Menu = instance.web.Widget.extend({
template: 'Menu',
init: function() {
@ -760,37 +859,6 @@ instance.web.UserMenu = instance.web.Widget.extend({
}
});
},
change_password :function() {
var self = this;
this.dialog = new instance.web.Dialog(this, {
title: _t("Change Password"),
width : 'auto'
}).open();
this.dialog.$element.html(QWeb.render("UserMenu.password", self));
this.dialog.$element.find("form[name=change_password_form]").validate({
submitHandler: function (form) {
self.rpc("/web/session/change_password",{
'fields': $(form).serializeArray()
}, function(result) {
if (result.error) {
self.display_error(result);
return;
} else {
instance.webclient.on_logout();
}
});
}
});
},
display_error: function (error) {
return instance.web.dialog($('<div>'), {
modal: true,
title: error.title,
buttons: [
{text: _("Ok"), click: function() { $(this).dialog("close"); }}
]
}).html(error.error);
},
do_update: function () {
var self = this;
var fct = function() {
@ -806,7 +874,7 @@ instance.web.UserMenu = instance.web.Widget.extend({
if(res.company_id[0] > 1)
topbar_name = _.str.sprintf("%s (%s)", topbar_name, res.company_id[1]);
self.$element.find('.oe_topbar_name').text(topbar_name);
var avatar_src = _.str.sprintf('%s/web/binary/image?session_id=%s&model=res.users&field=avatar&id=%s', self.session.prefix, self.session.session_id, self.session.uid);
var avatar_src = _.str.sprintf('%s/web/binary/image?session_id=%s&model=res.users&field=image_small&id=%s', self.session.prefix, self.session.session_id, self.session.uid);
$avatar.attr('src', avatar_src);
});
};
@ -818,44 +886,10 @@ instance.web.UserMenu = instance.web.Widget.extend({
},
on_menu_settings: function() {
var self = this;
var action_manager = new instance.web.ActionManager(this);
var dataset = new instance.web.DataSet (this,'res.users',this.context);
dataset.call ('action_get','',function (result){
self.rpc('/web/action/load', {action_id:result}, function(result){
action_manager.do_action(_.extend(result['result'], {
target: 'inline',
res_id: self.session.uid,
res_model: 'res.users',
flags: {
action_buttons: false,
search_view: false,
sidebar: false,
views_switcher: false,
pager: false
}
}));
});
self.rpc("/web/action/load", { action_id: "base.action_res_users_my" }, function(result) {
result.result.res_id = instance.connection.uid;
self.getParent().action_manager.do_action(result.result);
});
this.dialog = new instance.web.Dialog(this,{
title: _t("Preferences"),
width: '700px',
buttons: [
{text: _t("Change password"), click: function(){ self.change_password(); }},
{text: _t("Cancel"), click: function(){ $(this).dialog('destroy'); }},
{text: _t("Save"), click: function(){
var inner_widget = action_manager.inner_widget;
inner_widget.views[inner_widget.active_view].controller.do_save()
.then(function() {
self.dialog.destroy();
// needs to refresh interface in case language changed
window.location.reload();
});
}
}
]
}).open();
action_manager.appendTo(this.dialog.$element);
action_manager.renderElement(this.dialog);
},
on_menu_about: function() {
var self = this;
@ -880,12 +914,11 @@ instance.web.Client = instance.web.Widget.extend({
},
start: function() {
var self = this;
return instance.connection.session_bind(this.origin).then(function() {
return instance.connection.session_bind(this.origin).pipe(function() {
var $e = $(QWeb.render(self._template, {}));
self.$element.replaceWith($e);
self.$element = $e;
self.replaceElement($e);
self.bind_events();
self.show_common();
return self.show_common();
});
},
bind_events: function() {
@ -896,7 +929,8 @@ instance.web.Client = instance.web.Widget.extend({
this.$element.on('click', '.oe_dropdown_toggle', function(ev) {
ev.preventDefault();
var $toggle = $(this);
var $menu = $toggle.parent().find('.oe_dropdown_menu');
var $menu = $toggle.siblings('.oe_dropdown_menu');
$menu = $menu.size() >= 1 ? $menu : $toggle.find('.oe_dropdown_menu');
var state = $menu.is('.oe_opened');
setTimeout(function() {
// Do not alter propagation
@ -913,8 +947,11 @@ instance.web.Client = instance.web.Widget.extend({
}
}, 0);
});
instance.web.bus.on('click', this, function() {
self.$element.find('.oe_dropdown_menu.oe_opened').removeClass('oe_opened');
instance.web.bus.on('click', this, function(ev) {
$.fn.tipsy.clear();
if (!$(ev.target).is('input[type=file]')) {
self.$element.find('.oe_dropdown_menu.oe_opened').removeClass('oe_opened');
}
});
},
show_common: function() {
@ -1027,15 +1064,15 @@ instance.web.WebClient = instance.web.Client.extend({
$(window).bind('hashchange', this.on_hashchange);
var state = $.bbq.getState(true);
if (! _.isEmpty(state)) {
$(window).trigger('hashchange');
} else {
if (_.isEmpty(state) || state.action == "login") {
self.menu.has_been_loaded.then(function() {
var first_menu_id = self.menu.$element.find("a:first").data("menu");
if(first_menu_id) {
self.menu.menu_click(first_menu_id);
}
});
} else {
$(window).trigger('hashchange');
}
},
on_hashchange: function(event) {

View File

@ -491,23 +491,19 @@ instance.web.CallbackEnabledMixin = _.extend({}, instance.web.PropertiesMixin, {
*
* The semantics of this precisely replace closing over the method call.
*
* @param {String} method_name name of the method to invoke
* @param {String|Function} method function or name of the method to invoke
* @returns {Function} proxied method
*/
proxy: function (method_name) {
proxy: function (method) {
var self = this;
return function () {
return self[method_name].apply(self, arguments);
var fn = (typeof method === 'string') ? self[method] : method;
return fn.apply(self, arguments);
}
}
});
instance.web.WidgetMixin = _.extend({},instance.web.CallbackEnabledMixin, {
/**
* Tag name when creating a default $element.
* @type string
*/
tagName: 'div',
/**
* Constructs the widget and sets its parent if a parent is given.
*
@ -517,14 +513,9 @@ instance.web.WidgetMixin = _.extend({},instance.web.CallbackEnabledMixin, {
* @param {instance.web.Widget} parent Binds the current instance to the given Widget instance.
* When that widget is destroyed by calling destroy(), the current instance will be
* destroyed too. Can be null.
* @param {String} element_id Deprecated. Sets the element_id. Only useful when you want
* to bind the current Widget to an already existing part of the DOM, which is not compatible
* with the DOM insertion methods provided by the current implementation of Widget. So
* for new components this argument should not be provided any more.
*/
init: function(parent) {
instance.web.CallbackEnabledMixin.init.call(this);
this.$element = $(document.createElement(this.tagName));
this.setParent(parent);
},
/**
@ -534,7 +525,7 @@ instance.web.WidgetMixin = _.extend({},instance.web.CallbackEnabledMixin, {
_.each(this.getChildren(), function(el) {
el.destroy();
});
if(this.$element != null) {
if(this.$element) {
this.$element.remove();
}
instance.web.PropertiesMixin.destroy.call(this);
@ -613,6 +604,7 @@ instance.web.WidgetMixin = _.extend({},instance.web.CallbackEnabledMixin, {
* @returns {jQuery.Deferred}
*/
start: function() {
return $.when();
}
});
@ -673,6 +665,12 @@ instance.web.CallbackEnabled = instance.web.Class.extend(instance.web.CallbackEn
* That will kill the widget in a clean way and erase its content from the dom.
*/
instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, {
// Backbone-ish API
tagName: 'div',
id: null,
className: null,
attributes: {},
events: {},
/**
* The name of the QWeb template that will be used for rendering. Must be
* redefined in subclasses or the default render() method can not be used.
@ -689,13 +687,11 @@ instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, {
* @param {instance.web.Widget} parent Binds the current instance to the given Widget instance.
* When that widget is destroyed by calling destroy(), the current instance will be
* destroyed too. Can be null.
* @param {String} element_id Deprecated. Sets the element_id. Only useful when you want
* to bind the current Widget to an already existing part of the DOM, which is not compatible
* with the DOM insertion methods provided by the current implementation of Widget. So
* for new components this argument should not be provided any more.
*/
init: function(parent) {
instance.web.WidgetMixin.init.call(this,parent);
// FIXME: this should not be
this.setElement(this._make_descriptive());
this.session = instance.connection;
},
/**
@ -704,20 +700,120 @@ instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, {
* key that references `this`.
*/
renderElement: function() {
var rendered = null;
if (this.template)
rendered = instance.web.qweb.render(this.template, {widget: this});
if (_.str.trim(rendered)) {
var elem = $(rendered);
this.$element.replaceWith(elem);
this.$element = elem;
var $el;
if (this.template) {
$el = $(_.str.trim(instance.web.qweb.render(
this.template, {widget: this})));
} else {
$el = this._make_descriptive();
}
this.replaceElement($el);
},
/**
* Re-sets the widget's root element and replaces the old root element
* (if any) by the new one in the DOM.
*
* @param {HTMLElement | jQuery} $el
* @returns {*} this
*/
replaceElement: function ($el) {
var $oldel = this.$element;
this.setElement($el);
if ($oldel && !$oldel.is(this.$element)) {
$oldel.replaceWith(this.$element);
}
return this;
},
/**
* Shortcut for $element.find() like backbone
* Re-sets the widget's root element (el/$el/$element).
*
* Includes:
* * re-delegating events
* * re-binding sub-elements
* * if the widget already had a root element, replacing the pre-existing
* element in the DOM
*
* @param {HTMLElement | jQuery} element new root element for the widget
* @return {*} this
*/
"$": function() {
return this.$element.find.apply(this.$element,arguments);
setElement: function (element) {
// NB: completely useless, as WidgetMixin#init creates a $element
// always
if (this.$element) {
this.undelegateEvents();
}
this.$element = (element instanceof $) ? element : $(element);
this.el = this.$element[0];
this.delegateEvents();
return this;
},
/**
* Utility function to build small DOM elements.
*
* @param {String} tagName name of the DOM element to create
* @param {Object} [attributes] map of DOM attributes to set on the element
* @param {String} [content] HTML content to set on the element
* @return {Element}
*/
make: function (tagName, attributes, content) {
var el = document.createElement(tagName);
if (!_.isEmpty(attributes)) {
$(el).attr(attributes);
}
if (content) {
$(el).html(content);
}
return el;
},
/**
* Makes a potential root element from the declarative builder of the
* widget
*
* @return {jQuery}
* @private
*/
_make_descriptive: function () {
var attrs = _.extend({}, this.attributes || {});
if (this.id) { attrs.id = this.id; }
if (this.className) { attrs['class'] = this.className; }
return $(this.make(this.tagName, attrs));
},
delegateEvents: function () {
var events = this.events;
if (_.isEmpty(events)) { return; }
for(var key in events) {
if (!events.hasOwnProperty(key)) { continue; }
var method = this.proxy(events[key]);
var match = /^(\S+)(\s+(.*))?$/.exec(key);
var event = match[1];
var selector = match[3];
event += '.widget_events';
if (!selector) {
this.$element.on(event, method);
} else {
this.$element.on(event, selector, method);
}
}
},
undelegateEvents: function () {
this.$element.off('.widget_events');
},
/**
* Shortcut for ``this.$element.find(selector)``
*
* @param {String} selector CSS selector, rooted in $el
* @returns {jQuery} selector match
*/
$: function(selector) {
return this.$element.find(selector);
},
/**
* Informs the action manager to do an action. This supposes that
@ -1039,7 +1135,8 @@ instance.web.JsonRPC = instance.web.CallbackEnabled.extend({
uid: new py.float(this.uid),
datetime: datetime,
time: time,
relativedelta: relativedelta
relativedelta: relativedelta,
current_date: date.today.__call__().strftime(['%Y-%m-%d'])
};
},
/**
@ -1280,7 +1377,7 @@ instance.web.JsonRPC = instance.web.CallbackEnabled.extend({
processData: false
}, url);
if (this.synch)
ajax.async = false;
ajax.async = false;
return $.ajax(ajax);
},
rpc_jsonp: function(url, payload) {
@ -1299,7 +1396,7 @@ instance.web.JsonRPC = instance.web.CallbackEnabled.extend({
data: data
}, url);
if (this.synch)
ajax.async = false;
ajax.async = false;
var payload_str = JSON.stringify(payload);
var payload_url = $.param({r:payload_str});
if(payload_url.length < 2000) {

View File

@ -19,15 +19,14 @@ instance.web.OldWidget = instance.web.Widget.extend({
this._super(parent);
this.element_id = element_id;
this.element_id = this.element_id || _.uniqueId('widget-');
var tmp = document.getElementById(this.element_id);
this.$element = tmp ? $(tmp) : $(document.createElement(this.tagName));
this.setElement(tmp || this._make_descriptive());
},
renderElement: function() {
var rendered = this.render();
if (rendered) {
var elem = $(rendered);
this.$element.replaceWith(elem);
this.$element = elem;
this.replaceElement($(rendered));
}
return this;
},
@ -394,13 +393,13 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess
timer = setTimeout(waitLoop, CHECK_INTERVAL);
},
synchronized_mode: function(to_execute) {
var synch = this.synch;
this.synch = true;
try {
return to_execute();
} finally {
this.synch = synch;
}
var synch = this.synch;
this.synch = true;
try {
return to_execute();
} finally {
this.synch = synch;
}
}
});
@ -416,12 +415,12 @@ instance.web.Bus = instance.web.Class.extend(instance.web.EventDispatcherMixin,
// check gtk bindings
// http://unixpapa.com/js/key.html
_.each('click,dblclick,keydown,keypress,keyup'.split(','), function(evtype) {
$('html').on(evtype, self, function(ev) {
$('html').on(evtype, function(ev) {
self.trigger(evtype, ev);
});
});
_.each('resize,scroll'.split(','), function(evtype) {
$(window).on(evtype, self, function(ev) {
$(window).on(evtype, function(ev) {
self.trigger(evtype, ev);
});
});
@ -541,10 +540,10 @@ $.async_when = function() {
// special tweak for the web client
var old_async_when = $.async_when;
$.async_when = function() {
if (instance.connection.synch)
return $.when.apply(this, arguments);
else
return old_async_when.apply(this, arguments);
if (instance.connection.synch)
return $.when.apply(this, arguments);
else
return old_async_when.apply(this, arguments);
};
/** Setup blockui */
@ -673,32 +672,6 @@ instance.connection.on('module_loaded', this, function () {
*/
instance.web.client_actions = new instance.web.Registry();
/**
* Client action to reload the whole interface.
* If params has an entry 'menu_id', it opens the given menu entry.
*/
instance.web.Reload = instance.web.Widget.extend({
init: function(parent, params) {
this._super(parent);
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) {
hash = "#menu_id=" + this.menu_id;
}
var url = l.protocol + "//" + l.host + l.pathname + search + hash;
window.location = url;
}
});
instance.web.client_actions.add("reload", "instance.web.Reload");
};
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:

View File

@ -803,7 +803,7 @@ instance.web.DataSet = instance.web.OldWidget.extend( /** @lends openerp.web.Da
return this.ids.length;
},
alter_ids: function(n_ids) {
this.ids = n_ids;
this.ids = n_ids;
},
});
instance.web.DataSetStatic = instance.web.DataSet.extend({
@ -1042,7 +1042,7 @@ instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
self.cache.push({id: id, values: record});
} else {
// I assume cache value is prioritary
cached.values = _.defaults(_.clone(cached.values), record);
cached.values = _.defaults(_.clone(cached.values), record);
}
});
return_records();
@ -1067,7 +1067,7 @@ instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
return this._super(method, args, callback, error_callback);
},
alter_ids: function(n_ids) {
this._super(n_ids);
this._super(n_ids);
this.on_change();
},
});

View File

@ -156,7 +156,7 @@ instance.web.DataImport = instance.web.Dialog.extend({
});
},
toggle_import_button: function (newstate) {
instance.web.dialog(this.$element, 'widget')
instance.web.dialog(this.$element, 'widget')
.find('.oe_import_dialog_button')
.button('option', 'disabled', !newstate);
},

View File

@ -271,82 +271,4 @@ instance.web.auto_date_to_str = function(value, type) {
}
};
/**
* Formats a provided cell based on its field type. Most of the field types
* return a correctly formatted value, but some tags and fields are
* special-cased in their handling:
*
* * buttons will return an actual ``<button>`` tag with a bunch of error handling
*
* * boolean fields will return a checkbox input, potentially disabled
*
* * binary fields will return a link to download the binary data as a file
*
* @param {Object} row_data record whose values should be displayed in the cell
* @param {Object} column column descriptor
* @param {"button"|"field"} column.tag base control type
* @param {String} column.type widget type for a field control
* @param {String} [column.string] button label
* @param {String} [column.icon] button icon
* @param {Object} [options]
* @param {String} [options.value_if_empty=''] what to display if the field's value is ``false``
* @param {Boolean} [options.process_modifiers=true] should the modifiers be computed ?
* @param {String} [options.model] current record's model
* @param {Number} [options.id] current record's id
*
*/
instance.web.format_cell = function (row_data, column, options) {
options = options || {};
var attrs = {};
if (options.process_modifiers !== false) {
attrs = column.modifiers_for(row_data);
}
if (attrs.invisible) { return ''; }
if (column.tag === 'button') {
return _.template('<button type="button" title="<%-title%>" <%=additional_attributes%> >' +
'<img src="<%-prefix%>/web/static/src/img/icons/<%-icon%>.png" alt="<%-alt%>"/>' +
'</button>', {
title: column.string || '',
additional_attributes: isNaN(row_data["id"].value) && instance.web.BufferedDataSet.virtual_id_regex.test(row_data["id"].value) ?
'disabled="disabled" class="oe_list_button_disabled"' : '',
prefix: instance.connection.prefix,
icon: column.icon,
alt: column.string || ''
});
}
if (!row_data[column.id]) {
return options.value_if_empty === undefined ? '' : options.value_if_empty;
}
switch (column.widget || column.type) {
case "boolean":
return _.str.sprintf('<input type="checkbox" %s disabled="disabled"/>',
row_data[column.id].value ? 'checked="checked"' : '');
case "binary":
var text = _t("Download"),
download_url = _.str.sprintf('/web/binary/saveas?session_id=%s&model=%s&field=%s&id=%d', instance.connection.session_id, options.model, column.id, options.id);
if (column.filename) {
download_url += '&filename_field=' + column.filename;
if (row_data[column.filename]) {
text = _.str.sprintf(_t("Download \"%s\""), instance.web.format_value(
row_data[column.filename].value, {type: 'char'}));
}
}
return _.template('<a href="<%-href%>"><%-text%></a> (%<-size%>)', {
text: text,
href: download_url,
size: row_data[column.id].value
});
case 'progressbar':
return _.template(
'<progress value="<%-value%>" max="100"><%-value%>%</progress>', {
value: _.str.sprintf("%.0f", row_data[column.id].value || 0)
});
}
return _.escape(instance.web.format_value(
row_data[column.id].value, column, options.value_if_empty));
}
};

View File

@ -661,7 +661,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
null, _(this.select_for_drawer()).invoke(
'appendTo', this.$element.find('.oe_searchview_drawer')));
new instance.web.search.AddToDashboard(this).appendTo($('.oe_searchview_drawer', this.$element));
new instance.web.search.AddToReporting(this).appendTo($('.oe_searchview_drawer', this.$element));
// load defaults
var defaults_fetched = $.when.apply(null, _(this.inputs).invoke(
@ -861,13 +861,13 @@ instance.web.search.Invalid = instance.web.Class.extend( /** @lends instance.web
);
}
});
instance.web.search.Widget = instance.web.OldWidget.extend( /** @lends instance.web.search.Widget# */{
instance.web.search.Widget = instance.web.Widget.extend( /** @lends instance.web.search.Widget# */{
template: null,
/**
* Root class of all search widgets
*
* @constructs instance.web.search.Widget
* @extends instance.web.OldWidget
* @extends instance.web.Widget
*
* @param view the ancestor view of this widget
*/
@ -1678,42 +1678,39 @@ instance.web.search.Filters = instance.web.search.Input.extend({
}));
}
});
instance.web.search.AddToDashboard = instance.web.Widget.extend({
template: 'SearchView.addtodashboard',
instance.web.search.AddToReporting = instance.web.Widget.extend({
template: 'SearchView.addtoreporting',
_in_drawer: true,
start: function () {
var self = this;
this.data_loaded = $.Deferred();
this.dashboard_data =[];
this.$element
.on('click', 'h4', this.proxy('show_option'))
.on('submit', 'form', function (e) {
e.preventDefault();
self.add_dashboard();
});
return $.when(this.load_data(),this.data_loaded).pipe(this.proxy("render_data"));
return this.load_data().then(this.proxy("render_data"));
},
load_data:function(){
if (!instance.webclient) { return $.Deferred().reject(); }
var self = this,dashboard_menu = instance.webclient.menu.data.data.children;
var ir_model_data = new instance.web.Model('ir.model.data',{},[['name','=','menu_reporting_dashboard']]).query(['res_id']);
var map_data = function(result){
_.detect(dashboard_menu, function(dash){
var id = _.pluck(dash.children, "id"),indexof = _.indexOf(id, result.res_id);
if(indexof !== -1){
self.dashboard_data = dash.children[indexof].children
self.data_loaded.resolve();
return;
}
});
};
return ir_model_data._execute().done(function(result){map_data(result[0])});
var dashboard_menu = instance.webclient.menu.data.data.children;
return new instance.web.Model('ir.model.data')
.query(['res_id'])
.filter([['name','=','menu_reporting_dashboard']])
.first().pipe(function (result) {
var menu = _(dashboard_menu).chain()
.pluck('children')
.flatten(true)
.find(function (child) { return child.id === result.res_id; })
.value();
return menu ? menu.children : [];
});
},
render_data: function(){
var self = this;
var selection = instance.web.qweb.render("SearchView.addtodashboard.selection",{selections:this.dashboard_data});
this.$element.find("input").before(selection)
render_data: function(dashboard_choices){
var selection = instance.web.qweb.render(
"SearchView.addtoreporting.selection", {
selections: dashboard_choices});
this.$("input").before(selection)
},
add_dashboard:function(){
var self = this;
@ -1721,11 +1718,11 @@ instance.web.search.AddToDashboard = instance.web.Widget.extend({
var view_parent = this.getParent().getParent();
if (! view_parent.action || ! this.$element.find("select").val())
return this.do_warn("Can't find dashboard action");
data = getParent.build_search_data(),
context = new instance.web.CompoundContext(getParent.dataset.get_context() || []),
domain = new instance.web.CompoundDomain(getParent.dataset.get_domain() || []);
_.each(data.contexts, function(x) {context.add(x);});
_.each(data.domains, function(x) {domain.add(x);});
var data = getParent.build_search_data();
var context = new instance.web.CompoundContext(getParent.dataset.get_context() || []);
var domain = new instance.web.CompoundDomain(getParent.dataset.get_domain() || []);
_.each(data.contexts, context.add, context);
_.each(data.domains, domain.add, domain);
this.rpc('/web/searchview/add_to_dashboard', {
menu_id: this.$element.find("select").val(),
action_id: view_parent.action.id,
@ -1746,7 +1743,7 @@ instance.web.search.AddToDashboard = instance.web.Widget.extend({
this.$element.toggleClass('oe_opened');
if (! this.$element.hasClass('oe_opened'))
return;
this.$element.find("input").val(this.getParent().fields_view.name || "" );
this.$("input").val(this.getParent().fields_view.name || "" );
}
});

View File

@ -79,6 +79,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
_.defaults(this.options, {
"not_interactible_on_create": false,
"initial_mode": "view",
"disable_autofocus": false,
});
this.is_initialized = $.Deferred();
this.mutating_mutex = new $.Mutex();
@ -101,7 +102,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
w.off('focused blurred');
w.destroy();
});
this.$element.off('.formBlur');
if (this.$element) {
this.$element.off('.formBlur');
}
this._super();
},
on_loaded: function(data) {
@ -148,19 +151,20 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
this.sidebar.add_items('other', [
{ label: _t('Delete'), callback: self.on_button_delete },
{ label: _t('Duplicate'), callback: self.on_button_duplicate },
{ label: _t('Set Default'), callback: function (item) { self.open_defaults_dialog(); } },
{ label: _t('Set Default'), callback: function (item) { self.open_defaults_dialog(); } }
]);
}
this.has_been_loaded.resolve();
// Add bounce effect on button 'Edit' when click on readonly page view.
this.$element.find(".oe_form_field, .oe_form_group_cell").on('click', function (e) {
this.$element.find(".oe_form_field,label").on('click', function (e) {
if(self.get("actual_mode") == "view") {
var $button = self.options.$buttons.find(".oe_form_button_edit");
$button.wrap('<div>').css('margin-right','4px').addClass('oe_left oe_bounce');
$button.effect('bounce', {distance: 18, times: 7}, 200)
}
});
this.has_been_loaded.resolve();
return $.when();
},
extract_qweb_template: function(fvg) {
@ -267,7 +271,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
if (this.$pager) {
this.$pager.show();
}
this.$element.show().css('visibility', 'hidden');
this.$element.show().css({
opacity: '0',
filter: 'alpha(opacity = 0)'
});
this.$element.add(this.$buttons).removeClass('oe_form_dirty');
var shown = this.has_been_loaded;
@ -277,8 +284,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
// null index means we should start a new record
return self.on_button_new();
}
return self.dataset.read_index(_.keys(self.fields_view.fields), {
context: { 'bin_size': true }
var fields = _.keys(self.fields_view.fields);
fields.push('display_name');
return self.dataset.read_index(fields, {
context: { 'bin_size': true, 'future_display_name' : true }
}).pipe(self.on_record_loaded);
});
}
@ -286,7 +295,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
if (options.editable) {
self.to_edit_mode();
}
self.$element.css('visibility', 'visible');
self.$element.css({
opacity: '1',
filter: 'alpha(opacity = 100)'
});
});
},
do_hide: function () {
@ -310,7 +322,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
}
this.datarecord = record;
this._actualize_mode();
this.set({ 'title' : record.id ? record.name : "New record" });
this.set({ 'title' : record.id ? record.display_name : "New record" });
if (this.qweb) {
this.kill_current_form();
@ -344,8 +356,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
}
if (record.id) {
self.do_push_state({id:record.id});
} else {
self.do_push_state({});
}
self.$element.add(self.$buttons).removeClass('oe_form_dirty');
self.autofocus();
});
},
/**
@ -623,8 +638,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
*/
_actualize_mode: function(switch_to) {
var mode = switch_to || this.get("actual_mode");
if (! this.datarecord.id)
if (! this.datarecord.id) {
mode = "create";
}
this.set({actual_mode: mode});
},
check_actual_mode: function(source, options) {
@ -645,29 +661,39 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
_.each(this.fields,function(field){
field.set({"force_readonly": false});
});
var fields_order = self.fields_order.slice(0);
if (self.default_focus_field) {
fields_order.unshift(self.default_focus_field.name);
this.autofocus();
}
},
autofocus: function() {
if (this.get("actual_mode") !== "view" && !this.options.disable_autofocus) {
var fields_order = this.fields_order.slice(0);
if (this.default_focus_field) {
fields_order.unshift(this.default_focus_field.name);
}
for (var i = 0; i < fields_order.length; i += 1) {
var field = self.fields[fields_order[i]];
var field = this.fields[fields_order[i]];
if (!field.get('effective_invisible') && !field.get('effective_readonly')) {
field.focus();
break;
if (field.focus() !== false) {
break;
}
}
}
}
},
on_button_save: function() {
var self = this;
return this.do_save().then(function(result) {
return this.do_save().then(function(result) {
self.to_view_mode();
});
},
on_button_cancel: function(event) {
if (this.can_be_discarded()) {
this.to_view_mode();
this.on_record_loaded(this.datarecord);
if (this.get('actual_mode') === 'create') {
this.trigger('history_back');
} else {
this.to_view_mode();
this.on_record_loaded(this.datarecord);
}
}
return false;
},
@ -764,16 +790,16 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
self.set({'display_invalid_fields': false});
var save_deferral;
if (!self.datarecord.id) {
//console.log("FormView(", self, ") : About to create", values);
// console.log("FormView(", self, ") : About to create", values);
save_deferral = self.dataset.create(values).pipe(function(r) {
return self.on_created(r, undefined, prepend_on_create);
}, null);
} else if (_.isEmpty(values) && ! self.force_dirty) {
//console.log("FormView(", self, ") : Nothing to save");
// console.log("FormView(", self, ") : Nothing to save");
save_deferral = $.Deferred().resolve({}).promise();
} else {
self.force_dirty = false;
//console.log("FormView(", self, ") : About to save", values);
// console.log("FormView(", self, ") : About to save", values);
save_deferral = self.dataset.write(self.datarecord.id, values, {}).pipe(function(r) {
return self.on_saved(r);
}, null);
@ -856,8 +882,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
if (self.dataset.index == null || self.dataset.index < 0) {
return $.when(self.on_button_new());
} else {
return self.dataset.read_index(_.keys(self.fields_view.fields), {
context : { 'bin_size' : true }
var fields = _.keys(self.fields_view.fields);
fields.push('display_name');
return self.dataset.read_index(fields, {
context : { 'bin_size' : true, 'future_display_name' : true }
}).pipe(self.on_record_loaded);
}
});
@ -1956,14 +1984,7 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w
}
},
focus: function() {
},
/**
* Utility method to focus an element, but only after a small amount of time.
*/
delay_focus: function($elem) {
setTimeout(function() {
$elem[0].focus();
}, 50);
return false;
},
/**
* Utility method to get the widget options defined in the field xml description.
@ -2062,7 +2083,7 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we
return this.get('value') === '' || this._super();
},
focus: function() {
this.delay_focus(this.$element.find('input:first'));
this.$('input:first').focus();
}
});
@ -2146,6 +2167,9 @@ instance.web.form.FieldFloat = instance.web.form.FieldChar.extend({
value_ = 0;
}
this._super.apply(this, [value_]);
},
focus: function () {
this.$('input:first').select();
}
});
@ -2282,8 +2306,9 @@ instance.web.form.FieldDatetime = instance.web.form.AbstractField.extend(instanc
return this.get('value') === '' || this._super();
},
focus: function() {
if (this.datewidget && this.datewidget.$input)
this.delay_focus(this.datewidget.$input);
if (this.datewidget && this.datewidget.$input) {
this.datewidget.$input.focus();
}
}
});
@ -2338,7 +2363,7 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we
return this.get('value') === '' || this._super();
},
focus: function($element) {
this.delay_focus(this.$textarea);
this.$textarea.focus();
},
do_resize: function(max_height) {
max_height = parseInt(max_height, 10);
@ -2431,7 +2456,7 @@ instance.web.form.FieldBoolean = instance.web.form.AbstractField.extend({
this.$checkbox[0].checked = value_;
},
focus: function() {
this.delay_focus(this.$checkbox);
this.$checkbox.focus();
}
});
@ -2455,9 +2480,6 @@ instance.web.form.FieldProgressBar = instance.web.form.AbstractField.extend({
}
});
instance.web.form.FieldTextXml = instance.web.form.AbstractField.extend({
// to replace view editor
});
instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeFieldMixin, {
template: 'FieldSelection',
@ -2526,7 +2548,7 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(instan
return !! value_;
},
focus: function() {
this.delay_focus(this.$element.find('select:first'));
this.$element.find('select:first').focus();
}
});
@ -2696,10 +2718,20 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
self.$input.tipsy({
title: function() {
return "No element was selected, you should create or select one from the dropdown list.";
return QWeb.render('Tipsy.alert', {
message: "No element was selected, you should create or select one from the dropdown list."
});
},
trigger:'manual',
fade: true,
gravity: 's',
html: true,
opacity: 1,
offset: 4,
});
self.$input.on('focus', function() {
self.$input.tipsy("hide");
});
this.$drop_down = this.$element.find(".oe_m2o_drop_down_button");
@ -2727,7 +2759,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
});
// some behavior for input
this.$input.keydown(function() {
var input_changed = function() {
if (self.current_display !== self.$input.val()) {
self.current_display = self.$input.val();
if (self.$input.val() === "") {
@ -2737,7 +2769,9 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
self.floating = true;
}
}
});
};
this.$input.keydown(input_changed);
this.$input.change(input_changed);
this.$drop_down.click(function() {
if (self.$input.autocomplete("widget").is(":visible")) {
self.$input.autocomplete("close");
@ -2753,7 +2787,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
var tip_def = $.Deferred();
var untip_def = $.Deferred();
var tip_delay = 200;
var tip_duration = 3000;
var tip_duration = 15000;
var anyoneLoosesFocus = function() {
var used = false;
if (self.floating) {
@ -2813,6 +2847,8 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
} else if (item.action) {
self.floating = true;
item.action();
// Cancel widget blurring, to avoid form blur event
self.trigger('focused');
return false;
}
},
@ -2836,7 +2872,6 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
});
this.setupFocus(this.$input.add(this.$follow_button));
},
render_value: function(no_recurse) {
var self = this;
if (! this.get("value")) {
@ -2861,6 +2896,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
if (!this.get("effective_readonly")) {
this.$input.val(str.split("\n")[0]);
this.current_display = this.$input.val();
this.$('.oe_m2o_cm_button').css({'visibility': this.is_false() ? 'hidden' : 'visible'});
} else {
var lines = _.escape(str).split("\n");
var link = "";
@ -2916,7 +2952,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
return ! this.get("value");
},
focus: function () {
this.delay_focus(this.$input);
this.$input.focus();
}
});
@ -3072,7 +3108,6 @@ 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();
@ -3322,6 +3357,7 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
ListType: instance.web.form.One2ManyList
}));
this.on('edit:before', this, this.proxy('_before_edit'));
this.on('edit:after', this, this.proxy('_after_edit'));
this.on('save:before cancel:before', this, this.proxy('_before_unedit'));
this.records
@ -3432,6 +3468,12 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
this.__ignore_blur = false;
this.editor.form.on('blurred', this, this._on_form_blur);
},
_after_edit: function () {
// The form's blur thing may be jiggered during the edition setup,
// potentially leading to the o2m instasaving the row. Cancel any
// blurring triggered the edition startup here
this.editor.form.widgetFocused();
},
_before_unedit: function () {
this.editor.form.off('blurred', this, this._on_form_blur);
},
@ -3465,6 +3507,28 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
// the current row *anyway*, then create a new one/edit the next one)
this.__ignore_blur = true;
this._super.apply(this, arguments);
},
do_delete: function (ids) {
var self = this;
var next = $.when();
var _super = this._super;
// handle deletion of an item which does not exist
// TODO: better handle that in the editable list?
var false_id_index = _(ids).indexOf(false);
if (false_id_index !== -1) {
ids.splice(false_id_index, 1);
next = this.cancel_edition(true);
}
return next.pipe(function () {
// wheeee
var confirm = window.confirm;
window.confirm = function () { return true; };
try {
return _super.call(self, ids);
} finally {
window.confirm = confirm;
}
});
}
});
instance.web.form.One2ManyList = instance.web.ListView.List.extend({
@ -3485,14 +3549,34 @@ instance.web.form.One2ManyList = instance.web.ListView.List.extend({
var $cell = $('<td>', {
colspan: columns,
'class': 'oe_form_field_one2many_list_row_add'
}).text(_t("Add a row"))
.click(function (e) {
e.preventDefault();
e.stopPropagation();
self.view.do_add_record();
});
this.$current.append(
$('<tr>').append($cell))
}).append(
$('<a>', {href: '#'}).text(_t("Add a row"))
.mousedown(function () {
// FIXME: needs to be an official API somehow
if (self.view.editor.is_editing()) {
self.view.__ignore_blur = true;
}
})
.click(function (e) {
e.preventDefault();
e.stopPropagation();
// FIXME: there should also be an API for that one
if (self.view.editor.form.__blur_timeout) {
clearTimeout(self.view.editor.form.__blur_timeout);
self.view.editor.form.__blur_timeout = false;
}
self.view.ensure_saved().then(function () {
self.view.do_add_record();
});
}));
var $padding = this.$current.find('tr:not([data-id]):first');
var $newrow = $('<tr>').append($cell);
if ($padding.length) {
$padding.before($newrow);
} else {
this.$current.append($newrow)
}
}
});
@ -3600,7 +3684,7 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(in
$("textarea", this.$element).focusout(function() {
self.$text.trigger("setInputData", "");
}).keydown(function(e) {
if (event.keyCode === 9 && self._drop_shown) {
if (e.which === $.ui.keyCode.TAB && self._drop_shown) {
self.$text.textext()[0].autocomplete().selectFromDropdown();
}
});
@ -4300,7 +4384,7 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(instan
this.selection.view = this.view;
this.selection.set({force_readonly: this.get('effective_readonly')});
this.selection.on("change:value", this, this.on_selection_changed);
this.selection.$element = $(".oe_form_view_reference_selection", this.$element);
this.selection.setElement(this.$(".oe_form_view_reference_selection"));
this.selection.renderElement();
this.selection.start();
this.selection
@ -4313,7 +4397,7 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(instan
this.m2o.view = this.view;
this.m2o.set({force_readonly: this.get("effective_readonly")});
this.m2o.on("change:value", this, this.data_changed);
this.m2o.$element = $(".oe_form_view_reference_m2o", this.$element);
this.m2o.setElement(this.$(".oe_form_view_reference_m2o"));
this.m2o.renderElement();
this.m2o.start();
this.m2o
@ -4529,7 +4613,7 @@ instance.web.form.FieldBinaryImage = instance.web.form.FieldBinary.extend({
},
render_value: function() {
var url;
if (this.get('value') && this.get('value').substr(0, 10).indexOf(' ') == -1) {
if (this.get('value') && ! /^\d+(\.\d*)? \w+$/.test(this.get('value'))) {
url = 'data:image/png;base64,' + this.get('value');
} else if (this.get('value')) {
url = '/web/binary/image?session_id=' + this.session.session_id + '&model=' +
@ -4558,9 +4642,11 @@ instance.web.form.FieldBinaryImage = instance.web.form.FieldBinary.extend({
instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({
template: "FieldStatus",
clickable: false,
start: function() {
this._super();
this.selected_value = null;
this.clickable = !!this.node.attrs.clickable;
if (this.$element.parent().is('header')) {
this.$element.after('<div class="oe_clear"/>');
}
@ -4665,19 +4751,34 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({
* state (given by the key of (key, label)).
*/
render_elements: function () {
var self = this;
var content = instance.web.qweb.render("FieldStatus.content", {widget: this, _:_});
this.$element.html(content);
if (this.clickable) {
this.$element.addClass("oe_form_steps_clickable");
$('.oe_form_steps_arrow').remove();
var elemts = this.$element.find('.oe_form_steps_button');
_.each(elemts, function(element){
$item = $(element);
if ($item.attr("data-id") != self.selected_value) {
$item.click(function(event){
var data_id = parseInt($(this).attr("data-id"))
self.view.dataset.call('stage_set', [[self.view.datarecord.id],data_id]).then(function() {
return self.view.reload();
});
});
}
});
} else {
this.$element.addClass("oe_form_steps");
}
var colors = JSON.parse((this.node.attrs || {}).statusbar_colors || "{}");
var color = colors[this.selected_value];
if (color) {
if (color) {
var elem = this.$element.find("li.oe_form_steps_active span");
elem.css("color", color);
elem.css("color", color);
}
},
focus: function() {
return false;
},
});
/**

View File

@ -354,7 +354,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
this.sidebar.add_items('other', [
{ label: _t("Import"), callback: this.on_sidebar_import },
{ label: _t("Export"), callback: this.on_sidebar_export },
{ label: _t('Delete'), callback: this.do_delete_selected },
{ label: _t('Delete'), callback: this.do_delete_selected }
]);
this.sidebar.add_toolbar(this.fields_view.toolbar);
this.sidebar.$element.hide();
@ -399,77 +399,23 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
* @param {Boolean} [grouped] Should the grouping columns (group and count) be displayed
*/
setup_columns: function (fields, grouped) {
var domain_computer = instance.web.form.compute_domain;
var noop = function () { return {}; };
var field_to_column = function (field) {
var name = field.attrs.name;
var column = _.extend({id: name, tag: field.tag},
fields[name], field.attrs);
// modifiers computer
if (column.modifiers) {
var modifiers = JSON.parse(column.modifiers);
column.modifiers_for = function (fields) {
var out = {};
for (var attr in modifiers) {
if (!modifiers.hasOwnProperty(attr)) { continue; }
var modifier = modifiers[attr];
out[attr] = _.isBoolean(modifier)
? modifier
: domain_computer(modifier, fields);
}
return out;
};
if (modifiers['tree_invisible']) {
column.invisible = '1';
} else {
delete column.invisible;
}
column.modifiers = modifiers;
} else {
column.modifiers_for = noop;
column.modifiers = {};
}
return column;
};
var registry = instance.web.list.columns;
this.columns.splice(0, this.columns.length);
this.columns.push.apply(
this.columns,
_(this.fields_view.arch.children).map(field_to_column));
this.columns.push.apply(this.columns,
_(this.fields_view.arch.children).map(function (field) {
var id = field.attrs.name;
return registry.for_(id, fields[id], field);
}));
if (grouped) {
this.columns.unshift({
id: '_group', tag: '', string: _t("Group"), meta: true,
modifiers_for: function () { return {}; },
modifiers: {}
}, {
id: '_count', tag: '', string: '#', meta: true,
modifiers_for: function () { return {}; },
modifiers: {}
});
this.columns.unshift(
new instance.web.list.MetaColumn('_group', _t("Group")));
}
this.visible_columns = _.filter(this.columns, function (column) {
return column.invisible !== '1';
});
this.aggregate_columns = _(this.visible_columns)
.map(function (column) {
if (column.type !== 'integer' && column.type !== 'float') {
return {};
}
var aggregation_func = column['group_operator'] || 'sum';
if (!(aggregation_func in column)) {
return {};
}
return _.extend({}, column, {
'function': aggregation_func,
label: column[aggregation_func]
});
});
this.aggregate_columns = _(this.visible_columns).invoke('to_aggregate');
},
/**
* Used to handle a click on a table row, if no other handler caught the
@ -678,6 +624,10 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
* Base handling of buttons, can be called when overriding do_button_action
* in order to bypass parent overrides.
*
* The callback will be provided with the ``id`` as its parameter, in case
* handle_button's caller had to alter the ``id`` (or even create one)
* while not being ``callback``'s creator.
*
* This method should not be overridden.
*
* @param {String} name action name
@ -703,7 +653,8 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
c.add(action.context);
}
action.context = c;
this.do_execute_action(action, this.dataset, id, callback);
this.do_execute_action(
action, this.dataset, id, _.bind(callback, null, id));
},
/**
* Handles the activation of a record (clicking on it)
@ -819,9 +770,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
}
$footer_cells.filter(_.str.sprintf('[data-field=%s]', column.id))
.html(instance.web.format_cell(aggregation, column, {
process_modifiers: false
}));
.html(column.format(aggregation, { process_modifiers: false }));
});
},
get_selected_ids: function() {
@ -880,9 +829,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
}
this.$element.find('table:first').hide();
this.$element.prepend(
$('<div class="oe_view_nocontent">')
.append($('<img>', { src: '/web/static/src/img/view_empty_arrow.png' }))
.append($('<div>').html(this.options.action.help))
$('<div class="oe_view_nocontent">').html(this.options.action.help)
);
}
});
@ -997,8 +944,8 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
// of digits, nice when storing actual numbers, not nice when
// storing strings composed only of digits. Force the action
// name to be a string
$(self).trigger('action', [field.toString(), record_id, function () {
return self.reload_record(self.records.get(record_id));
$(self).trigger('action', [field.toString(), record_id, function (id) {
return self.reload_record(self.records.get(id));
}]);
})
.delegate('a', 'click', function (e) {
@ -1059,7 +1006,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
});
}
}
return instance.web.format_cell(record.toForm().data, column, {
return column.format(record.toForm().data, {
model: this.dataset.model,
id: record.get('id')
});
@ -1344,15 +1291,18 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
_t("Grouping on field '%s' is not possible because that field does not appear in the list view."),
group.grouped_on));
}
var group_label;
try {
$group_column.html(instance.web.format_cell(
row_data, group_column, {
value_if_empty: _t("Undefined"),
process_modifiers: false
}));
group_label = group_column.format(row_data, {
value_if_empty: _t("Undefined"),
process_modifiers: false
});
} catch (e) {
$group_column.html(row_data[group_column.id].value);
group_label = row_data[group_column.id].value;
}
$group_column.text(_.str.sprintf("%s (%d)",
group_label, group.length));
if (group.length && group.openable) {
// Make openable if not terminal group & group_by_no_leaf
$group_column.prepend('<span class="ui-icon ui-icon-triangle-1-e" style="float: left;">');
@ -1364,14 +1314,12 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
}
}
self.indent($group_column, group.level);
// count column
$('<td>').text(group.length).appendTo($row);
if (self.options.selectable) {
$row.append('<td>');
}
_(self.columns).chain()
.filter(function (column) {return !column.invisible;})
.filter(function (column) { return column.invisible !== '1'; })
.each(function (column) {
if (column.meta) {
// do not do anything
@ -1379,8 +1327,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
var r = {};
r[column.id] = {value: group.aggregates[column.id]};
$('<td class="oe_number">')
.html(instance.web.format_cell(
r, column, {process_modifiers: false}))
.html(column.format(r, {process_modifiers: false}))
.appendTo($row);
} else {
$row.append('<td>');
@ -1467,18 +1414,31 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
},
setup_resequence_rows: function (list, dataset) {
// drag and drop enabled if list is not sorted and there is a
// "sequence" column in the view.
// visible column with @widget=handle or "sequence" column in the view.
if ((dataset.sort && dataset.sort())
|| !_(this.columns).any(function (column) {
return column.name === 'sequence'; })) {
return column.widget === 'handle'
|| column.name === 'sequence'; })) {
return;
}
var sequence_field = _(this.columns).find(function (c) {
return c.widget === 'handle';
});
var seqname = sequence_field ? sequence_field.name : 'sequence';
// ondrop, move relevant record & fix sequences
list.$current.sortable({
axis: 'y',
items: '> tr[data-id]',
containment: 'parent',
helper: 'clone',
helper: 'clone'
});
if (sequence_field) {
list.$current.sortable('option', 'handle', '.oe_list_field_handle');
}
list.$current.sortable('option', {
start: function (e, ui) {
ui.placeholder.height(ui.item.height());
},
stop: function (event, ui) {
var to_move = list.records.get(ui.item.data('id')),
target_id = ui.item.prev().data('id'),
@ -1496,7 +1456,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
var record, index = to,
// if drag to 1st row (to = 0), start sequencing from 0
// (exclusive lower bound)
seq = to ? list.records.at(to - 1).get('sequence') : 0;
seq = to ? list.records.at(to - 1).get(seqname) : 0;
while (++seq, record = list.records.at(index++)) {
// write are independent from one another, so we can just
// launch them all at the same time and we don't really
@ -1506,10 +1466,12 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
// when synchronous (without setTimeout)
(function (dataset, id, seq) {
$.async_when().then(function () {
dataset.write(id, {sequence: seq});
var attrs = {};
attrs[seqname] = seq;
dataset.write(id, attrs);
});
}(dataset, record.get('id'), seq));
record.set('sequence', seq);
record.set(seqname, seq);
}
}
});
@ -1963,6 +1925,204 @@ instance.web.list = {
Events: Events,
Record: Record,
Collection: Collection
}
};
/**
* Registry for column objects used to format table cells (and some other tasks
* e.g. aggregation computations).
*
* Maps a field or button to a Column type via its ``$tag.$widget``,
* ``$tag.$type`` or its ``$tag`` (alone).
*
* This specific registry has a dedicated utility method ``for_`` taking a
* field (from fields_get/fields_view_get.field) and a node (from a view) and
* returning the right object *already instantiated from the data provided*.
*
* @type {instance.web.Registry}
*/
instance.web.list.columns = new instance.web.Registry({
'field': 'instance.web.list.Column',
'field.boolean': 'instance.web.list.Boolean',
'field.binary': 'instance.web.list.Binary',
'field.progressbar': 'instance.web.list.ProgressBar',
'field.handle': 'instance.web.list.Handle',
'button': 'instance.web.list.Button',
});
instance.web.list.columns.for_ = function (id, field, node) {
var description = _.extend({tag: node.tag}, field, node.attrs);
var tag = description.tag;
var Type = this.get_any([
tag + '.' + description.widget,
tag + '.'+ description.type,
tag
]);
return new Type(id, node.tag, description)
};
instance.web.list.Column = instance.web.Class.extend({
init: function (id, tag, attrs) {
_.extend(attrs, {
id: id,
tag: tag
});
this.modifiers = attrs.modifiers ? JSON.parse(attrs.modifiers) : {};
delete attrs.modifiers;
_.extend(this, attrs);
if (this.modifiers['tree_invisible']) {
this.invisible = '1';
} else { delete this.invisible; }
},
modifiers_for: function (fields) {
var out = {};
var domain_computer = instance.web.form.compute_domain;
for (var attr in this.modifiers) {
if (!this.modifiers.hasOwnProperty(attr)) { continue; }
var modifier = this.modifiers[attr];
out[attr] = _.isBoolean(modifier)
? modifier
: domain_computer(modifier, fields);
}
return out;
},
to_aggregate: function () {
if (this.type !== 'integer' && this.type !== 'float') {
return {};
}
var aggregation_func = this['group_operator'] || 'sum';
if (!(aggregation_func in this)) {
return {};
}
var C = function (label, fn) {
this['function'] = fn;
this.label = label;
};
C.prototype = this;
return new C(aggregation_func, this[aggregation_func]);
},
/**
*
* @param row_data record whose values should be displayed in the cell
* @param {Object} [options]
* @param {String} [options.value_if_empty=''] what to display if the field's value is ``false``
* @param {Boolean} [options.process_modifiers=true] should the modifiers be computed ?
* @param {String} [options.model] current record's model
* @param {Number} [options.id] current record's id
* @return {String}
*/
format: function (row_data, options) {
options = options || {};
var attrs = {};
if (options.process_modifiers !== false) {
attrs = this.modifiers_for(row_data);
}
if (attrs.invisible) { return ''; }
if (!row_data[this.id]) {
return options.value_if_empty === undefined
? ''
: options.value_if_empty;
}
return this._format(row_data, options);
},
/**
* Method to override in order to provide alternative HTML content for the
* cell. Column._format will simply call ``instance.web.format_value`` and
* escape the output.
*
* The output of ``_format`` will *not* be escaped by ``format``, any
* escaping *must be done* by ``format``.
*
* @private
*/
_format: function (row_data, options) {
return _.escape(instance.web.format_value(
row_data[this.id].value, this, options.value_if_empty));
}
});
instance.web.list.MetaColumn = instance.web.list.Column.extend({
meta: true,
init: function (id, string) {
this._super(id, '', {string: string});
}
});
instance.web.list.Button = instance.web.list.Column.extend({
/**
* Return an actual ``<button>`` tag
*/
format: function (row_data, options) {
return _.template('<button type="button" title="<%-title%>" <%=additional_attributes%> >' +
'<img src="<%-prefix%>/web/static/src/img/icons/<%-icon%>.png" alt="<%-alt%>"/>' +
'</button>', {
title: this.string || '',
additional_attributes: isNaN(row_data["id"].value) && instance.web.BufferedDataSet.virtual_id_regex.test(row_data["id"].value) ?
'disabled="disabled" class="oe_list_button_disabled"' : '',
prefix: instance.connection.prefix,
icon: this.icon,
alt: this.string || ''
});
}
});
instance.web.list.Boolean = instance.web.list.Column.extend({
/**
* Return a potentially disabled checkbox input
*
* @private
*/
_format: function (row_data, options) {
return _.str.sprintf('<input type="checkbox" %s disabled="disabled"/>',
row_data[this.id].value ? 'checked="checked"' : '');
}
});
instance.web.list.Binary = instance.web.list.Column.extend({
/**
* Return a link to the binary data as a file
*
* @private
*/
_format: function (row_data, options) {
var text = _t("Download");
var download_url = _.str.sprintf(
'/web/binary/saveas?session_id=%s&model=%s&field=%s&id=%d',
instance.connection.session_id, options.model, this.id, options.id);
if (this.filename) {
download_url += '&filename_field=' + this.filename;
if (row_data[this.filename]) {
text = _.str.sprintf(_t("Download \"%s\""), instance.web.format_value(
row_data[this.filename].value, {type: 'char'}));
}
}
return _.template('<a href="<%-href%>"><%-text%></a> (%<-size%>)', {
text: text,
href: download_url,
size: row_data[this.id].value
});
}
});
instance.web.list.ProgressBar = instance.web.list.Column.extend({
/**
* Return a formatted progress bar display
*
* @private
*/
_format: function (row_data, options) {
return _.template(
'<progress value="<%-value%>" max="100"><%-value%>%</progress>', {
value: _.str.sprintf("%.0f", row_data[this.id].value || 0)
});
}
});
instance.web.list.Handle = instance.web.list.Column.extend({
/**
* Return styling hooks for a drag handle
*
* @private
*/
_format: function (row_data, options) {
return '<div class="oe_list_handle">';
}
});
};
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:

View File

@ -96,12 +96,10 @@ openerp.web.list_editable = function (instance) {
},
on_loaded: function (data, grouped) {
var self = this;
if (this.editor) {
this.editor.destroy();
}
// tree/@editable takes priority on everything else if present.
var result = this._super(data, grouped);
if (this.editable()) {
this.$element.addClass('oe_list_editable');
// FIXME: any hook available to ensure this is only done once?
this.$buttons
.off('click', '.oe_list_save')
@ -118,6 +116,7 @@ openerp.web.list_editable = function (instance) {
self.start_edition();
}
});
this.editor.destroy();
// Editor is not restartable due to formview not being
// restartable
this.editor = this.make_editor();
@ -125,6 +124,8 @@ openerp.web.list_editable = function (instance) {
.then(this.proxy('setup_events'));
return $.when(result, editor_ready);
} else {
this.$element.removeClass('oe_list_editable');
}
return result;
@ -137,10 +138,13 @@ openerp.web.list_editable = function (instance) {
make_editor: function () {
return new instance.web.list.Editor(this);
},
do_button_action: function () {
do_button_action: function (name, id, callback) {
var self = this, args = arguments;
this.ensure_saved().then(function () {
self.handle_button.apply(self, args);
this.ensure_saved().then(function (done) {
if (!id && done.created) {
id = done.record.get('id');
}
self.handle_button.call(self, name, id, callback);
});
},
/**
@ -283,16 +287,17 @@ openerp.web.list_editable = function (instance) {
});
},
/**
* @param {Boolean} [force=false] discards the data even if the form has been edited
* @return {jQuery.Deferred}
*/
cancel_edition: function () {
cancel_edition: function (force) {
var self = this;
return this.with_event('cancel', {
editor: this.editor,
form: this.editor.form,
cancel: false
}, function () {
return this.editor.cancel().pipe(function (attrs) {
return this.editor.cancel(force).pipe(function (attrs) {
if (attrs.id) {
var record = self.records.get(attrs.id);
if (!record) {
@ -604,6 +609,7 @@ openerp.web.list_editable = function (instance) {
this.form = new (this.options.formView)(
this, this.delegate.dataset, false, {
initial_mode: 'edit',
disable_autofocus: true,
$buttons: $(),
$pager: $()
});
@ -683,9 +689,8 @@ openerp.web.list_editable = function (instance) {
if (!field.$element.is(':visible')) {
return false;
}
field.focus();
// Stop as soon as a field got focused
return true;
return field.focus() !== false;
});
},
edit: function (record, configureField, options) {
@ -719,13 +724,13 @@ openerp.web.list_editable = function (instance) {
return self.cancel();
});
},
cancel: function () {
var record = this.record;
this.record = null;
if (!this.form.can_be_discarded()) {
cancel: function (force) {
if (!(force || this.form.can_be_discarded())) {
return $.Deferred().reject({
message: "The form's data can not be discarded"}).promise();
}
var record = this.record;
this.record = null;
this.form.do_hide();
return $.when(record);
}

View File

@ -14,6 +14,9 @@ instance.web.ActionManager = instance.web.Widget.extend({
this.dialog = null;
this.dialog_widget = null;
this.breadcrumbs = [];
this.on('history_back', this, function() {
return this.history_back();
});
},
start: function() {
this._super.apply(this, arguments);
@ -65,21 +68,46 @@ instance.web.ActionManager = instance.web.Widget.extend({
item.id = _.uniqueId('breadcrumb_');
this.breadcrumbs.push(item);
},
history_back: function() {
var last = this.breadcrumbs.slice(-1)[0];
if (!last) {
return false;
}
var title = last.get_title();
if (_.isArray(title) && title.length > 1) {
return this.select_breadcrumb(this.breadcrumbs.length - 1, title.length - 2);
} else if (this.breadcrumbs.length === 1) {
// Only one single titled item in breadcrumb, most of the time you want to trigger back to home
return false;
} else {
var prev = this.breadcrumbs[this.breadcrumbs.length - 2];
title = prev.get_title();
return this.select_breadcrumb(this.breadcrumbs.length - 2, _.isArray(title) ? title.length - 1 : undefined);
}
},
on_breadcrumb_clicked: function(ev) {
var $e = $(ev.target);
var id = $e.data('id');
var item;
var index;
for (var i = this.breadcrumbs.length - 1; i >= 0; i--) {
var it = this.breadcrumbs[i];
if (it.id == id) {
item = it;
if (this.breadcrumbs[i].id == id) {
index = i;
break;
}
this.remove_breadcrumb(i);
}
var index = $e.parent().find('.oe_breadcrumb_item[data-id=' + $e.data('id') + ']').index($e);
item.show(index, $e);
var subindex = $e.parent().find('.oe_breadcrumb_item[data-id=' + $e.data('id') + ']').index($e);
this.select_breadcrumb(index, subindex);
},
select_breadcrumb: function(index, subindex) {
for (var i = this.breadcrumbs.length - 1; i >= 0; i--) {
if (i > index) {
this.remove_breadcrumb(i);
}
}
var item = this.breadcrumbs[index];
item.show(subindex);
this.inner_widget = item.widget;
return true;
},
clear_breadcrumbs: function() {
while (this.breadcrumbs.length) {
@ -117,6 +145,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
return titles.join(' <span class="oe_fade">/</span> ');
},
do_push_state: function(state) {
state = state || {};
if (this.getParent() && this.getParent().do_push_state) {
if (this.inner_action) {
state['title'] = this.inner_action.name;
@ -124,7 +153,10 @@ instance.web.ActionManager = instance.web.Widget.extend({
state['model'] = this.inner_action.res_model;
}
if (this.inner_action.id) {
state['action_id'] = this.inner_action.id;
state['action'] = this.inner_action.id;
} else if (this.inner_action.type == 'ir.actions.client') {
state['action'] = this.inner_action.tag;
//state = _.extend(this.inner_action.params || {}, state);
}
}
this.getParent().do_push_state(state);
@ -133,14 +165,20 @@ instance.web.ActionManager = instance.web.Widget.extend({
do_load_state: function(state, warm) {
var self = this,
action_loaded;
if (state.action_id) {
var run_action = (!this.inner_widget || !this.inner_widget.action) || this.inner_widget.action.id !== state.action_id;
if (run_action) {
if (state.action) {
if (_.isString(state.action) && instance.web.client_actions.contains(state.action)) {
var action_client = {type: "ir.actions.client", tag: state.action, params: state};
this.null_action();
action_loaded = this.do_action(state.action_id);
instance.webclient.menu.has_been_loaded.then(function() {
instance.webclient.menu.open_action(state.action_id);
});
action_loaded = this.do_action(action_client);
} else {
var run_action = (!this.inner_widget || !this.inner_widget.action) || this.inner_widget.action.id !== state.action;
if (run_action) {
this.null_action();
action_loaded = this.do_action(state.action);
instance.webclient.menu.has_been_loaded.then(function() {
instance.webclient.menu.open_action(state.action);
});
}
}
} else if (state.model && state.id) {
// TODO handle context & domain ?
@ -154,23 +192,12 @@ instance.web.ActionManager = instance.web.Widget.extend({
action_loaded = this.do_action(action);
} else if (state.sa) {
// load session action
var self = this;
this.null_action();
action_loaded = this.rpc('/web/session/get_session_action', {key: state.sa}).pipe(function(action) {
if (action) {
return self.do_action(action);
}
});
} else if (state.client_action) {
this.null_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() {
@ -191,7 +218,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
}
if (!action.type) {
console.error("No type for action", action);
return;
return null;
}
var type = action.type.replace(/\./g,'_');
var popup = action.target === 'new';
@ -206,7 +233,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
}, action.flags || {});
if (!(type in this)) {
console.error("Action manager can't handle action of type " + action.type, action);
return;
return null;
}
return this[type](action, on_close);
},
@ -216,21 +243,24 @@ instance.web.ActionManager = instance.web.Widget.extend({
},
do_ir_actions_common: function(action, on_close) {
var self = this, klass, widget, add_breadcrumb;
var self = this, klass, widget, post_process;
if (action.type === 'ir.actions.client') {
var ClientWidget = instance.web.client_actions.get_object(action.tag);
widget = new ClientWidget(this, action.params);
klass = 'oe_act_client';
add_breadcrumb = function() {
post_process = function() {
self.push_breadcrumb({
widget: widget,
title: action.name
});
}
if (action.tag !== 'reload') {
self.do_push_state({});
}
};
} else {
widget = new instance.web.ViewManagerAction(this, action);
klass = 'oe_act_window';
add_breadcrumb = widget.proxy('add_breadcrumb');
post_process = widget.proxy('add_breadcrumb');
}
if (action.target === 'new') {
if (this.dialog === null) {
@ -250,14 +280,9 @@ instance.web.ActionManager = instance.web.Widget.extend({
this.dialog.open();
} else {
this.dialog_stop();
if(action.menu_id) {
return this.getParent().do_action(action, function () {
instance.webclient.menu.open_menu(action.menu_id);
});
}
this.inner_action = action;
this.inner_widget = widget;
add_breadcrumb();
post_process();
this.inner_widget.appendTo(this.$element);
}
},
@ -423,7 +448,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
.find('.oe_view_manager_switch a').filter('[data-view-type="' + view_type + '"]')
.parent().addClass('active');
$.when(view_promise).then(function () {
return $.when(view_promise).then(function () {
_.each(_.keys(self.views), function(view_name) {
var controller = self.views[view_name].controller;
if (controller) {
@ -435,7 +460,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
container.hide();
controller.do_hide();
}
// put the <footer> in the dialog's buttonpane
// put the <footer> in the dialog's buttonpane
if (self.$element.parent('.ui-dialog-content') && self.$element.find('footer')) {
self.$element.parent('.ui-dialog-content').parent().find('div.ui-dialog-buttonset').hide()
self.$element.find('footer').appendTo(
@ -445,7 +470,6 @@ instance.web.ViewManager = instance.web.Widget.extend({
}
});
});
return view_promise;
},
do_create_view: function(view_type) {
// Lazy loading of views
@ -463,6 +487,13 @@ instance.web.ViewManager = instance.web.Widget.extend({
}
var controller = new controllerclass(this, this.dataset, view.view_id, options);
controller.on('history_back', this, function() {
var am = self.getParent();
if (am && am.trigger) {
return am.trigger('history_back');
}
});
controller.on("change:title", this, function() {
if (self.active_view === view_type) {
self.set_title(controller.get('title'));
@ -505,7 +536,8 @@ instance.web.ViewManager = instance.web.Widget.extend({
});
this.getParent().push_breadcrumb({
widget: this,
show: function(index, $e) {
action: this.action,
show: function(index) {
var view_to_select = views[index];
self.$element.show();
if (self.active_view !== view_to_select) {
@ -513,9 +545,27 @@ instance.web.ViewManager = instance.web.Widget.extend({
}
},
get_title: function() {
return _.map(views, function(v) {
return self.views[v].controller.get('title');
var id;
var currentIndex;
_.each(self.getParent().breadcrumbs, function(bc, i) {
if (bc.widget === self) {
currentIndex = i;
}
});
var next = self.getParent().breadcrumbs.slice(currentIndex + 1)[0];
var titles = _.map(views, function(v) {
var controller = self.views[v].controller;
if (v === 'form') {
id = controller.datarecord.id;
}
return controller.get('title');
});
if (next && next.action && next.action.res_id && self.active_view === 'form' && self.model === next.action.res_model && id === next.action.res_id) {
// If the current active view is a formview and the next item in the breadcrumbs
// is an action on same object (model / res_id), then we omit the current formview's title
titles.pop();
}
return titles;
}
});
},
@ -737,15 +787,6 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
width: '95%'}, $root).open();
});
break;
case 'manage_views':
if (current_view.fields_view && current_view.fields_view.arch) {
var view_editor = new instance.web.ViewEditor(current_view, current_view.$element, this.dataset, current_view.fields_view.arch);
view_editor.start();
} else {
this.do_warn(_t("Manage Views"),
_t("Could not find current view declaration"));
}
break;
case 'edit_workflow':
return this.do_action({
res_model : 'workflow',
@ -1034,14 +1075,15 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
this['on_button_' + _t("Close")] = this.on_btn_close;
this._super(view, {
width: '80%',
height: '80%'
height: '80%',
destroy_on_close: false,
});
this.view = view;
this.view_type = view.fields_view.type || '';
this.$fields_form = null;
this.$view_form = null;
this.$sidebar_form = null;
this.translatable_fields_keys = _.map(this.view.translatable_fields || [], function(i) { return i.name });
this.translatable_fields_keys = _.map(this.view.translatable_fields || [], function(i) { return i.name; });
this.languages = null;
this.languages_loaded = $.Deferred();
(new instance.web.DataSetSearch(this, 'res.lang', this.view.dataset.get_context(),
@ -1072,7 +1114,8 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
deffered.push(deff);
var callback = function(values) {
_.each(self.translatable_fields_keys, function(f) {
self.$fields_form.find('.oe_trad_field[name="' + lg.code + '-' + f + '"]').val(values[0][f] || '').attr('data-value', values[0][f] || '');
var value = values[0][f] || '';
self.$fields_form.find('.oe_trad_field[name="' + lg.code + '-' + f + '"]').val(value).attr('data-value', value);
});
deff.resolve();
};
@ -1083,31 +1126,24 @@ instance.web.TranslateDialog = instance.web.Dialog.extend({
});
callback([values]);
} else {
self.rpc('/web/dataset/get', {
model: self.view.dataset.model,
ids: [self.view.datarecord.id],
fields: self.translatable_fields_keys,
context: self.view.dataset.get_context({
'lang': lg.code
})}, callback);
self.view.dataset.read_ids([self.view.datarecord.id], self.translatable_fields_keys, {
context: { 'lang': lg.code }
}).then(callback);
}
});
$.when.apply(null, deffered).then(callback);
},
open: function(field) {
var self = this,
sup = this._super;
var self = this;
this._super();
$.when(this.languages_loaded).then(function() {
if (self.view.translatable_fields && self.view.translatable_fields.length) {
self.do_load_fields_values(function() {
sup.call(self);
// desactivated because it created an exception, plus it does not seem very useful
/*
if (field) {
var $field_input = self.$element.find('tr[data-field="' + field.name + '"] td:nth-child(2) *:first-child');
self.$element.scrollTo($field_input);
$field_input.focus();
}*/
}
});
} else {
sup.call(self);
@ -1156,7 +1192,7 @@ instance.web.View = instance.web.Widget.extend({
this.view_id = view_id;
this.set_default_options(options);
},
start: function() {
start: function () {
return this.load_view();
},
load_view: function() {
@ -1196,7 +1232,7 @@ instance.web.View = instance.web.Widget.extend({
},
open_translate_dialog: function(field) {
if (!this.translate_dialog) {
this.translate_dialog = new instance.web.TranslateDialog(this).start();
this.translate_dialog = new instance.web.TranslateDialog(this);
}
this.translate_dialog.open(field);
},
@ -1366,7 +1402,6 @@ instance.web.xml_to_json = function(node) {
}
instance.web.json_node_to_xml = function(node, human_readable, indent) {
// For debugging purpose, this function will convert a json node back to xml
// Maybe useful for xml view editor
indent = indent || 0;
var sindent = (human_readable ? (new Array(indent + 1).join('\t')) : ''),
r = sindent + '<' + node.tag,

View File

@ -25,6 +25,13 @@
</div>
</div>
</t>
<t t-name="Tipsy.alert">
<a class="oe_tooltip_close oe_e">[</a>
<span style="float:left; margin:2px 5px 0 0;" class="ui-icon ui-icon-alert ui-state-error"></span>
<div class="oe_tooltip_message">
<t t-esc="message"/>
</div>
</t>
<t t-name="CrashManager.warning">
<table cellspacing="0" cellpadding="0" border="0" class="oe_dialog_warning">
@ -264,6 +271,31 @@
</div>
</t>
<t t-name="ChangePassword">
<form name="change_password_form" method="POST">
<table align="center">
<tr>
<td><label for="old_pwd">Old Password:</label></td>
<td><input type="password" name="old_pwd"
minlength="1" autofocus="autofocus"/></td>
</tr>
<tr>
<td><label for="new_password">New Password:</label></td>
<td><input type="password" name="new_password"
minlength="1" autofocus="autofocus"/></td>
</tr>
<tr>
<td><label for="confirm_pwd">Confirm Password:</label></td>
<td><input type="password" name="confirm_pwd"
minlength="1"/></td>
</tr>
<tr>
<td colspan="2" align="right"><button class="oe_button">Change Password</button></td>
</tr>
</table>
</form>
</t>
<t t-name="Menu">
<ul class="oe_menu" t-if="widget.data">
<li t-foreach="widget.data.data.children" t-as="menu">
@ -303,7 +335,7 @@
</ul>
</t>
<t t-name="Menu.secondary.link">
<a t-attf-href="#menu_id=#{menu.id}&amp;action_id=#{menu.action ? menu.action.split(',')[1] : ''}"
<a t-attf-href="#menu_id=#{menu.id}&amp;action=#{menu.action ? menu.action.split(',')[1] : ''}"
t-att-class="menu.children.length ? 'oe_menu_toggler' : 'oe_menu_leaf'"
t-att-data-menu="menu.id"
t-att-data-action-model="menu.action ? menu.action.split(',')[0] : ''"
@ -331,7 +363,7 @@
<t t-name="UserMenu.about">
<div class="oe_about">
<a class="oe_activate_debug_mode oe_right" href="?debug">Activate the developer mode</a>
<a class="oe_activate_debug_mode oe_right" href="?debug" style="background-color: white; padding:2px 6px; border-radius: 10px;">Activate the developer mode</a>
<img class="oe_logo" src="/web/static/src/img/logo2.png"/>
<h3>Version <t t-esc="version_info.version"/></h3>
@ -344,30 +376,6 @@
</div>
</t>
<t t-name="UserMenu.password">
<form name="change_password_form" method="POST">
<table align="center">
<tr>
<td><label for="old_pwd">Old Password:</label></td>
<td><input type="password" name="old_pwd"
minlength="1" autofocus="autofocus"/></td>
</tr>
<tr>
<td><label for="new_password">New Password:</label></td>
<td><input type="password" name="new_password"
minlength="1" autofocus="autofocus"/></td>
</tr>
<tr>
<td><label for="confirm_pwd">Confirm Password:</label></td>
<td><input type="password" name="confirm_pwd"
minlength="1"/></td>
</tr>
<tr>
<td colspan="2" align="right"><button class="oe_button">Change Password</button></td>
</tr>
</table>
</form>
</t>
<t t-name="WebClient">
<div class="openerp openerp_webclient_container">
@ -406,10 +414,10 @@
<t t-name="ViewManager">
<div class="oe_view_manager">
<table class="oe_view_manager_header">
<col width="20%"/>
<col width="25%"/>
<col width="20%"/>
<col width="35%"/>
<col width="20%"/>
<col width="25%"/>
<col width="20%"/>
<col width="35%"/>
<tr class="oe_header_row oe_header_row_top">
<td colspan="2">
<h2 class="oe_view_title" t-if="widget.flags.display_title !== false">
@ -607,7 +615,7 @@
</th>
<t t-foreach="columns" t-as="column">
<th t-if="!column.meta and column.invisible !== '1'" t-att-data-id="column.id"
t-att-class="((options.sortable and column.tag !== 'button') ? 'oe_sortable' : null)">
t-attf-class="oe_list_header_#{column.widget or column.type} #{((options.sortable and column.tag !== 'button') ? 'oe_sortable' : null)}">
<t t-if="column.tag !== 'button'"><t t-esc="column.string"/></t>
</th>
</t>
@ -701,7 +709,9 @@
<div t-name="FormView.buttons" class="oe_form_buttons">
<t t-if="widget.options.action_buttons !== false">
<span class="oe_form_buttons_view">
<button type="button" class="oe_button oe_form_button_edit">Edit</button>
<div style="display: inline-block;"> <!-- required for the bounce effect on button -->
<button type="button" class="oe_button oe_form_button_edit">Edit</button>
</div>
<button type="button" class="oe_button oe_form_button_create">Create</button>
</span>
<span class="oe_form_buttons_edit">
@ -921,9 +931,10 @@
t-att-tabindex="widget.node.attrs.tabindex"
t-att-autofocus="widget.node.attrs.autofocus"
t-att-placeholder="! widget.get('effective_readonly') ? widget.node.attrs.placeholder : ''"
></textarea>
<img class="oe_field_translate oe_input_icon" t-if="widget.field.translate"
t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
></textarea><img class="oe_field_translate oe_input_icon"
t-if="widget.field.translate and !widget.get('effective_readonly')"
t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"
/>
</div>
</t>
<t t-name="web.datepicker">
@ -1026,14 +1037,19 @@
</span>
</t>
<t t-name="FieldStatus">
<ul class="oe_form_steps" t-att-style="widget.node.attrs.style"/>
<ul class="" t-att-style="widget.node.attrs.style"/>
</t>
<t t-name="FieldStatus.content">
<t t-set="size" t-value="widget.to_show.length"/>
<t t-foreach="_.range(size)" t-as="i">
<li t-att-class="widget.to_show[i][0] === widget.selected_value ? 'oe_form_steps_active' : ''">
<span><t t-esc="widget.to_show[i][1]"/></span>
<img t-att-src='_s + "/web/static/src/img/form_steps.png"' class="oe_form_steps_arrow" t-if="i &lt; size - 1"/>
<li t-att-class="widget.to_show[i][0] === widget.selected_value ? 'oe_form_steps_active' : 'oe_form_steps_inactive'">
<div class="oe_form_steps_button" t-att-data-id="widget.to_show[i][0]">
<t t-esc="widget.to_show[i][1]"/>
<span class="oe_form_steps_arrow">
<span></span>
</span>
<img t-att-src='_s + "/web/static/src/img/form_steps.png"' class="oe_form_steps_arrow" t-if="i &lt; size - 1"/>
</div>
</li>
</t>
</t>
@ -1184,11 +1200,11 @@
</tr>
<tr t-foreach="widget.view.translatable_fields" t-as="field" t-att-data-field="field.name">
<td class="oe_form_group_cell" width="1%" nowrap="nowrap">
<label class="oe_label"><t t-esc="field.node.attrs.string"/>:</label>
<label class="oe_label"><t t-esc="field.string"/>:</label>
</td>
<td t-foreach="widget.languages" t-as="lg" class="oe_form_group_cell">
<input t-if="field.type == 'char'" type="text" t-attf-name="#{lg.code}-#{field.name}" value="" data-value="" class="oe_trad_field" style="width: 100%"/>
<textarea t-if="field.type == 'text'" t-attf-name="#{lg.code}-#{field.name}" data-value="" class="oe_trad_field" style="width: 100%"></textarea>
<input t-if="field.field.type == 'char'" type="text" t-attf-name="#{lg.code}-#{field.name}" value="" data-value="" class="oe_trad_field" style="width: 100%"/>
<textarea t-if="field.field.type == 'text'" t-attf-name="#{lg.code}-#{field.name}" data-value="" class="oe_trad_field" style="width: 100%"></textarea>
</td>
</tr>
</table>
@ -1443,18 +1459,18 @@
<div>
</div>
</div>
<div t-name="SearchView.addtodashboard" class="oe_searchview_dashboard">
<div t-name="SearchView.addtoreporting" class="oe_searchview_dashboard">
<h4>Add to Dashboard</h4>
<form>
<p><input placeholder ="Title of new Dashboard item" title = "Title of new Dashboard item" type="text"/></p>
<button class="oe_apply" type="submit">Save</button>
<p><input placeholder="Title of new dashboard item"/></p>
<button class="oe_apply" type="submit">Add</button>
</form>
</div>
<t t-name="SearchView.addtodashboard.selection">
<select title = "Select Dashboard to add this filter to">
<t t-foreach="selections" t-as="element">
<option t-att-value="element.id || element.res_id "><t t-esc="element.name"/></option>
</t>
<t t-name="SearchView.addtoreporting.selection">
<select>
<option t-foreach="selections" t-as="element"
t-att-value="element.id || element.res_id ">
<t t-esc="element.name"/></option>
</select>
</t>
<div t-name="SearchView.advanced" class="oe_searchview_advanced">
@ -1502,70 +1518,6 @@
</select>
</t>
<t t-name="view_editor">
<table class="oe_view_editor">
<t t-call="view_editor.row"/>
</table>
</t>
<t t-name="view_editor.row">
<tr t-att-id="'viewedit-' + rec.id" t-att-level="rec.level" t-foreach="data" t-as="rec">
<td width="90%">
<table class="oe_view_editor_field">
<tr>
<td width="16px" t-att-style="'background-position: ' + 20*rec.level + 'px; padding-left: ' + 20*rec.level + 'px'">
<img t-if="rec.child_id.length" t-att-id="'parentimg-' + rec.id"
t-att-src='_s + "/web/static/src/img/collapse.gif"' width="16" height="16" border="0"/>
</td>
<td style="cursor: pointer;">
<a style="text-decoration:none" href="javascript:void(0);">
<t t-esc="rec.name"/>
</a>
</td>
</tr>
</table>
</td>
<td width="2%">
<img t-if="rec.att_list.length"
id="side-add" t-att-src='_s + "/web/static/src/img/icons/gtk-add.png"' style="cursor: pointer;"/>
</td>
<td width="2%">
<img id="side-remove" t-att-src='_s + "/web/static/src/img/icons/gtk-remove.png"' style="cursor: pointer;"/>
</td>
<td width="2%">
<img t-if="rec.att_list.length and !_.include(no_properties, rec.att_list[0])"
id="side-edit" t-att-src='_s + "/web/static/src/img/icons/gtk-edit.png"' style="cursor: pointer;"/>
</td>
<td width="2%">
<img t-if="rec.att_list.length"
id="side-up" t-att-src='_s + "/web/static/src/img/icons/gtk-go-up.png"' style="cursor: pointer;"/>
</td>
<td width="2%">
<img t-if="rec.att_list.length"
id="side-down" t-att-src='_s + "/web/static/src/img/icons/gtk-go-down.png"' style="cursor: pointer;"/>
</td>
<t t-if="rec.child_id.length">
<t t-set="data" t-value="rec.child_id"/>
<t t-call="view_editor.row"/>
</t>
</tr>
</t>
<t t-name="vieweditor_char">
<input type="text" t-att-id="widget.name" class="field_char" size="50"/>
</t>
<t t-name="vieweditor_selection">
<select t-att-id="widget.name" >
<t t-if="widget.selection" t-foreach="widget.selection" t-as="option">
<option
t-att-value="typeof option === 'object' ? option[0] : option">
<t t-esc="typeof option === 'object' ? option[1] : option"/>
</option>
</t>
</select>
</t>
<t t-name="vieweditor_boolean">
<input type="checkbox" t-att-id="widget.name"/>
</t>
<t t-name="ExportView">
<a id="exportview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Export</a>
</t>

View File

@ -0,0 +1,239 @@
$(document).ready(function () {
var $fix = $('#qunit-fixture');
var mod = {
setup: function () {
instance = window.openerp.init([]);
window.openerp.web.corelib(instance);
instance.web.qweb = new QWeb2.Engine();
instance.web.qweb.add_template(
'<no>' +
'<t t-name="test.widget.template">' +
'<ol>' +
'<li t-foreach="5" t-as="counter" ' +
't-attf-class="class-#{counter}">' +
'<input/>' +
'<t t-esc="counter"/>' +
'</li>' +
'</ol>' +
'</t>' +
'<t t-name="test.widget.template-value">' +
'<p><t t-esc="widget.value"/></p>' +
'</t>' +
'</no>');
}
};
var instance;
module('Widget.proxy', mod);
test('(String)', function () {
var W = instance.web.Widget.extend({
exec: function () {
this.executed = true;
}
});
var w = new W;
var fn = w.proxy('exec');
fn();
ok(w.executed, 'should execute the named method in the right context');
});
test('(String)(*args)', function () {
var W = instance.web.Widget.extend({
exec: function (arg) {
this.executed = arg;
}
});
var w = new W;
var fn = w.proxy('exec');
fn(42);
ok(w.executed, "should execute the named method in the right context");
equal(w.executed, 42, "should be passed the proxy's arguments");
});
test('(String), include', function () {
// the proxy function should handle methods being changed on the class
// and should always proxy "by name", to the most recent one
var W = instance.web.Widget.extend({
exec: function () {
this.executed = 1;
}
});
var w = new W;
var fn = w.proxy('exec');
W.include({
exec: function () { this.executed = 2; }
});
fn();
equal(w.executed, 2, "should be lazily resolved");
});
test('(Function)', function () {
var w = new (instance.web.Widget.extend({ }));
var fn = w.proxy(function () { this.executed = true; });
fn();
ok(w.executed, "should set the function's context (like Function#bind)");
});
test('(Function)(*args)', function () {
var w = new (instance.web.Widget.extend({ }));
var fn = w.proxy(function (arg) { this.executed = arg; });
fn(42);
equal(w.executed, 42, "should be passed the proxy's arguments");
});
module('Widget.renderElement', mod);
test('no template, default', function () {
var w = new (instance.web.Widget.extend({ }));
var $original = w.$element;
ok($original, "should initially have a root element");
w.renderElement();
ok(w.$element, "should have generated a root element");
ok($original !== w.$element, "should have generated a new root element");
strictEqual(w.$element, w.$element, "should provide $element alias");
ok(w.$element.is(w.el), "should provide raw DOM alias");
equal(w.el.nodeName, 'DIV', "should have generated the default element");
equal(w.el.attributes.length, 0, "should not have generated any attribute");
ok(_.isEmpty(w.$element.html(), "should not have generated any content"));
});
test('no template, custom tag', function () {
var w = new (instance.web.Widget.extend({
tagName: 'ul'
}));
w.renderElement();
equal(w.el.nodeName, 'UL', "should have generated the custom element tag");
});
test('no template, @id', function () {
var w = new (instance.web.Widget.extend({
id: 'foo'
}));
w.renderElement();
equal(w.el.attributes.length, 1, "should have one attribute");
equal(w.$element.attr('id'), 'foo', "should have generated the id attribute");
equal(w.el.id, 'foo', "should also be available via property");
});
test('no template, @className', function () {
var w = new (instance.web.Widget.extend({
className: 'oe_some_class'
}));
w.renderElement();
equal(w.el.className, 'oe_some_class', "should have the right property");
equal(w.$element.attr('class'), 'oe_some_class', "should have the right attribute");
});
test('no template, bunch of attributes', function () {
var w = new (instance.web.Widget.extend({
attributes: {
'id': 'some_id',
'class': 'some_class',
'data-foo': 'data attribute',
'clark': 'gable',
'spoiler': 'snape kills dumbledore'
}
}));
w.renderElement();
equal(w.el.attributes.length, 5, "should have all the specified attributes");
equal(w.el.id, 'some_id');
equal(w.$element.attr('id'), 'some_id');
equal(w.el.className, 'some_class');
equal(w.$element.attr('class'), 'some_class');
equal(w.$element.attr('data-foo'), 'data attribute');
equal(w.$element.data('foo'), 'data attribute');
equal(w.$element.attr('clark'), 'gable');
equal(w.$element.attr('spoiler'), 'snape kills dumbledore');
});
test('template', function () {
var w = new (instance.web.Widget.extend({
template: 'test.widget.template'
}));
w.renderElement();
equal(w.el.nodeName, 'OL');
equal(w.$element.children().length, 5);
equal(w.el.textContent, '01234');
});
module('Widget.$', mod);
test('basic-alias', function () {
var w = new (instance.web.Widget.extend({
template: 'test.widget.template'
}));
w.renderElement();
ok(w.$('li:eq(3)').is(w.$element.find('li:eq(3)')),
"should do the same thing as calling find on the widget root");
});
module('Widget.events', mod);
test('delegate', function () {
var a = [];
var w = new (instance.web.Widget.extend({
template: 'test.widget.template',
events: {
'click': function () {
a[0] = true;
strictEqual(this, w, "should trigger events in widget")
},
'click li.class-3': 'class3',
'change input': function () { a[2] = true; }
},
class3: function () { a[1] = true; }
}));
w.renderElement();
w.$element.click();
w.$('li:eq(3)').click();
w.$('input:last').val('foo').change();
for(var i=0; i<3; ++i) {
ok(a[i], "should pass test " + i);
}
});
test('undelegate', function () {
var clicked = false, newclicked = false;
var w = new (instance.web.Widget.extend({
template: 'test.widget.template',
events: { 'click li': function () { clicked = true; } }
}));
w.renderElement();
w.$element.on('click', 'li', function () { newclicked = true });
w.$('li').click();
ok(clicked, "should trigger bound events");
ok(newclicked, "should trigger bound events");
clicked = newclicked = false;
w.undelegateEvents();
w.$('li').click();
ok(!clicked, "undelegate should unbind events delegated");
ok(newclicked, "undelegate should only unbind events it created");
});
module('Widget.renderElement', mod);
test('repeated', function () {
var w = new (instance.web.Widget.extend({
template: 'test.widget.template-value'
}));
w.value = 42;
w.appendTo($fix)
.always(start)
.done(function () {
equal($fix.find('p').text(), '42', "DOM fixture should contain initial value");
equal(w.$element.text(), '42', "should set initial value");
w.value = 36;
w.renderElement();
equal($fix.find('p').text(), '36', "DOM fixture should use new value");
equal(w.$element.text(), '36', "should set new value");
});
});
});

View File

@ -133,4 +133,20 @@ $(document).ready(function () {
}]);
deepEqual(result, {type: 'out_invoice'});
});
module('eval.domains', {
setup: function () {
openerp = window.openerp.testing.instanceFor('coresetup');
window.openerp.web.dates(openerp);
}
});
test('current_date', function () {
var current_date = openerp.web.date_to_str(new Date());
var result = openerp.connection.test_eval_domains(
[[],{"__ref":"domain","__debug":"[('name','>=',current_date),('name','<=',current_date)]","__id":"5dedcfc96648"}],
openerp.connection.test_eval_get_context());
deepEqual(result, [
['name', '>=', current_date],
['name', '<=', current_date]
]);
})
});

View File

@ -72,7 +72,7 @@ $(document).ready(function () {
});
asyncTest('base-state', 2, function () {
var e = new instance.web.list.Editor({
dataset: {},
dataset: {ids: []},
edition_view: function () {
return makeFormView();
}
@ -240,8 +240,7 @@ $(document).ready(function () {
};
var ds = new instance.web.DataSetStatic(null, 'demo', null, [1]);
var l = new instance.web.ListView({}, ds);
l.set_editable(true);
var l = new instance.web.ListView({}, ds, false, {editable: 'top'});
l.appendTo($fix)
.pipe(l.proxy('reload_content'))
@ -305,8 +304,7 @@ $(document).ready(function () {
counter: 0,
onEvent: function (e) { this.counter++; }
};
var l = new instance.web.ListView({}, ds);
l.set_editable(true);
var l = new instance.web.ListView({}, ds, false, {editable: 'top'});
l.on('edit:before edit:after', o, o.onEvent);
l.appendTo($fix)
.pipe(l.proxy('reload_content'))
@ -326,8 +324,7 @@ $(document).ready(function () {
asyncTest('edition events: cancelling', 3, function () {
var edit_after = false;
var ds = new instance.web.DataSetStatic(null, 'demo', null, [1]);
var l = new instance.web.ListView({}, ds);
l.set_editable(true);
var l = new instance.web.ListView({}, ds, false, {editable: 'top'});
l.on('edit:before', {}, function (e) {
e.cancel = true;
});

View File

@ -42,7 +42,7 @@
<script src="/web/static/test/testing.js"></script>
<script type="text/javascript">
QUnit.config.testTimeout = 500;
QUnit.config.testTimeout = 2000;
</script>
</head>
<body id="oe" class="openerp">
@ -61,5 +61,6 @@
<script type="text/javascript" src="/web/static/test/rpc.js"></script>
<script type="text/javascript" src="/web/static/test/evals.js"></script>
<script type="text/javascript" src="/web/static/test/search.js"></script>
<script type="text/javascript" src="/web/static/test/Widget.js"></script>
<script type="text/javascript" src="/web/static/test/list-editable.js"></script>
</html>

View File

@ -1,10 +1,7 @@
{
"name": "Web Calendar",
"category": "Hidden",
"description":
"""
OpenERP Web Calendar view.
""",
"description":"""OpenERP Web Calendar view.""",
"version": "2.0",
"depends": ['web'],
"js": [

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "التقويم"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
msgid "New event"
msgstr ""
msgstr "مرشّح"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Save"
msgstr ""
msgid "Today"
msgstr "اليوم"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Cancel"
msgstr ""
msgid "Day"
msgstr "اليوم"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Details"
msgstr ""
msgid "Week"
msgstr "الأسبوع"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Edit"
msgstr ""
msgid "Month"
msgstr "الشهر"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "Delete"
msgstr ""
msgid "New event"
msgstr "حدث جديد"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr "حفظ"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
msgid "Cancel"
msgstr "إلغاء"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Description"
msgstr ""
msgid "Details"
msgstr "التفاصيل"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Time period"
msgstr ""
msgid "Edit"
msgstr "تحرير"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Full day"
msgstr ""
msgid "Delete"
msgstr "حذف"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr "سيتم حذف هذا الحدث بشكل دائم، هل أنت متأكد؟"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr "الوصف"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Repeat event"
msgstr ""
msgid "Time period"
msgstr "الفترة الزمنية"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Disabled"
msgstr ""
msgid "Full day"
msgstr "يوم كامل"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
msgid "Enabled"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr "هل تريد تحرير مجموعة الأحداث المتكررة كاملة؟"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
msgid "Agenda"
msgstr ""
msgid "Repeat event"
msgstr "تكرار الحدث"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Date"
msgstr ""
msgid "Disabled"
msgstr "معطّل"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr "مُفعّل"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
msgid "Year"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr "جدول أعمال"
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr "التاريخ"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr "السنة"
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,131 +14,131 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Календар"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
msgid "New event"
msgstr ""
msgstr "Филтър"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Save"
msgstr ""
msgid "Today"
msgstr "Днес"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Cancel"
msgstr ""
msgid "Day"
msgstr "Ден"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Details"
msgstr ""
msgid "Week"
msgstr "Седмица"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Edit"
msgstr ""
msgid "Month"
msgstr "Месец"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "Delete"
msgstr ""
msgid "New event"
msgstr "Ново събитие"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr "Запис"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
msgid "Cancel"
msgstr "Отказ"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Description"
msgstr ""
msgid "Details"
msgstr "Детайли"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Time period"
msgstr ""
msgid "Edit"
msgstr "Редакция"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Full day"
msgstr ""
msgid "Delete"
msgstr "Изтриване"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr "Събитието ще бъде окончателно изтрито, сигурни ли сте?"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr "Описание"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Repeat event"
msgstr ""
msgid "Time period"
msgstr "Времеви период"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Disabled"
msgstr ""
msgid "Full day"
msgstr "Цял ден"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
msgid "Enabled"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr "Искатели да редактирате всички повтарящи се събития?"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
msgid "Agenda"
msgstr ""
msgid "Repeat event"
msgstr "Повтаряне на събитие"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Date"
msgstr ""
msgid "Disabled"
msgstr "Изключено"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr "Включено"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
msgid "Year"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr "Дневен ред"
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr "Дата"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr "Година"
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr ""
msgstr "&nbsp;"
#~ msgid "Navigator"
#~ msgstr "Навигатор"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "পুঞ্জিকা"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Kalendar"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,128 +14,128 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr ""

View File

@ -14,130 +14,130 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
"X-Poedit-Language: Czech\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Kalendář"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Kalender"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Kalender"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendar"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendar"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendario"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendario"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -15,130 +15,130 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n"
"X-Generator: Launchpad (build 15757)\n"
"Language: es\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendario"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendario"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,128 +14,128 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -9,134 +9,134 @@ msgstr ""
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-07-02 09:06+0200\n"
"PO-Revision-Date: 2012-02-08 07:27+0000\n"
"Last-Translator: Daniel Campos <Unknown>\n"
"Last-Translator: Daniel Campos (Avanzosc) <Unknown>\n"
"Language-Team: Basque <eu@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-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Egutegia"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "kalenteri"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendrier"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,128 +14,128 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-07 05:24+0000\n"
"X-Generator: Launchpad (build 15558)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr ""

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendario"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Kalendar"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Kalender"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Calendario"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -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-07-20 04:45+0000\n"
"X-Generator: Launchpad (build 15644)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "კალენდარი"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,129 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Календар"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

View File

@ -14,129 +14,130 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-08-08 04:45+0000\n"
"X-Generator: Launchpad (build 15757)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:12
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Цаглабар"
msgstr "Хуанли"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:73
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:139
msgid "Today"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:140
msgid "Day"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:141
msgid "Week"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:142
msgid "Month"
msgstr ""
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:143
msgid "New event"
msgstr ""
msgstr "Шүүлтүүр"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Save"
msgstr ""
msgid "Today"
msgstr "Өнөөдөр"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Cancel"
msgstr ""
msgid "Day"
msgstr "Өдөр"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Details"
msgstr ""
msgid "Week"
msgstr "7 хоног"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Edit"
msgstr ""
msgid "Month"
msgstr "Сар"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "Delete"
msgstr ""
msgid "New event"
msgstr "Шинэ үйл явдал"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr "Хадгалах"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
msgid "Cancel"
msgstr "Цуцлах"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Description"
msgstr ""
msgid "Details"
msgstr "Дэлгэрэнгүй"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Time period"
msgstr ""
msgid "Edit"
msgstr "Засах"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Full day"
msgid "Delete"
msgstr "Устгах"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr ""
"Үйл явдал эргэлт буцалтгүйгээр устгагдах болно, та итгэлтэй байна уу?"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
msgid "Do you want to edit the whole set of repeated events?"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr "Тайлбар"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Repeat event"
msgstr ""
msgid "Time period"
msgstr "Цагийн мөчлөг"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Disabled"
msgstr ""
msgid "Full day"
msgstr "Бүтэн өдөр"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:159
msgid "Enabled"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr "Та давтамжит үйл явдлуудыг багцаар нь засварлахыг хүсч байна уу?"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
#: addons/web_calendar/static/src/js/calendar.js:170
msgid "Agenda"
msgstr ""
msgid "Repeat event"
msgstr "Давтамжит үйл явдал"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Date"
msgstr ""
msgid "Disabled"
msgstr "Идэвхигүй"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr "Идэвхитэй"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
msgid "Year"
msgstr ""
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr "Төлөвлөгөө"
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:8
#: addons/web_calendar/static/src/xml/web_calendar.xml:9
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr "Огноо"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr "Жил"
#. openerp-web
#: addons/web_calendar/static/src/xml/web_calendar.xml:5
#: addons/web_calendar/static/src/xml/web_calendar.xml:6
msgid "&nbsp;"
msgstr "&nbsp;"

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