[MERGE] trunk

bzr revid: chm@openerp.com-20120914083540-t5bhzfksdxi2wqj5
This commit is contained in:
Christophe Matthieu 2012-09-14 10:35:40 +02:00
commit 5d25e1c109
439 changed files with 1583 additions and 27694 deletions

View File

@ -48,7 +48,6 @@ This module provides the core of the OpenERP Web Client.
"static/src/js/views.js", "static/src/js/views.js",
"static/src/js/data.js", "static/src/js/data.js",
"static/src/js/data_export.js", "static/src/js/data_export.js",
"static/src/js/data_import.js",
"static/src/js/search.js", "static/src/js/search.js",
"static/src/js/view_form.js", "static/src/js/view_form.js",
"static/src/js/view_list.js", "static/src/js/view_list.js",
@ -63,7 +62,6 @@ This module provides the core of the OpenERP Web Client.
"static/lib/jquery.textext/jquery.textext.css", "static/lib/jquery.textext/jquery.textext.css",
"static/src/css/base.css", "static/src/css/base.css",
"static/src/css/data_export.css", "static/src/css/data_export.css",
"static/src/css/data_import.css",
"static/lib/cleditor/jquery.cleditor.css", "static/lib/cleditor/jquery.cleditor.css",
], ],
'qweb' : [ 'qweb' : [

View File

@ -7,6 +7,7 @@ import cgi
import contextlib import contextlib
import functools import functools
import logging import logging
import mimetypes
import os import os
import pprint import pprint
import sys import sys
@ -420,6 +421,10 @@ def session_context(request, storage_path, session_cookie='httpsessionid'):
#---------------------------------------------------------- #----------------------------------------------------------
# OpenERP Web WSGI Application # OpenERP Web WSGI Application
#---------------------------------------------------------- #----------------------------------------------------------
# Add potentially missing (older ubuntu) font mime types
mimetypes.add_type('application/font-woff', '.woff')
mimetypes.add_type('application/vnd.ms-fontobject', '.eot')
mimetypes.add_type('application/x-font-ttf', '.ttf')
class DisableCacheMiddleware(object): class DisableCacheMiddleware(object):
def __init__(self, app): def __init__(self, app):
self.app = app self.app = app

View File

@ -484,15 +484,13 @@ def fix_view_modes(action):
if not action.get('views'): if not action.get('views'):
generate_views(action) generate_views(action)
id_form = None
for index, (id, mode) in enumerate(action['views']):
if mode == 'form':
id_form = id
break
if action.pop('view_type', 'form') != 'form': if action.pop('view_type', 'form') != 'form':
return action return action
if 'view_mode' in action:
action['view_mode'] = ','.join(
mode if mode != 'tree' else 'list'
for mode in action['view_mode'].split(','))
action['views'] = [ action['views'] = [
[id, mode if mode != 'tree' else 'list'] [id, mode if mode != 'tree' else 'list']
for id, mode in action['views'] for id, mode in action['views']
@ -1351,27 +1349,6 @@ class View(openerpweb.Controller):
def load(self, req, model, view_id, view_type, toolbar=False): def load(self, req, model, view_id, view_type, toolbar=False):
return self.fields_view_get(req, model, view_id, view_type, toolbar=toolbar) return self.fields_view_get(req, model, view_id, view_type, toolbar=toolbar)
class ListView(View):
_cp_path = "/web/listview"
def process_colors(self, view, row, context):
colors = view['arch']['attrs'].get('colors')
if not colors:
return None
color = [
pair.split(':')[0]
for pair in colors.split(';')
if eval(pair.split(':')[1], dict(context, **row))
]
if not color:
return None
elif len(color) == 1:
return color[0]
return 'maroon'
class TreeView(View): class TreeView(View):
_cp_path = "/web/treeview" _cp_path = "/web/treeview"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:54+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:54+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:54+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:54+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:54+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

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

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176
@ -243,17 +243,19 @@ msgid ""
"Destination fields should only be selected once, some fields are selected " "Destination fields should only be selected once, some fields are selected "
"more than once:" "more than once:"
msgstr "" msgstr ""
"Destination fields should only be selected once, some fields are selected "
"more than once:"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:386 #: addons/web/static/src/js/data_import.js:386
msgid "*Required Fields are not selected :" msgid "*Required Fields are not selected :"
msgstr "" msgstr "*Required Fields are not selected :"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/formats.js:139 #: addons/web/static/src/js/formats.js:139
#, python-format #, python-format
msgid "(%d records)" msgid "(%d records)"
msgstr "" msgstr "(%d records)"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/formats.js:325 #: addons/web/static/src/js/formats.js:325
@ -663,7 +665,7 @@ msgstr "Export"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_list.js:374 #: addons/web/static/src/js/view_list.js:374
msgid "Group" msgid "Group"
msgstr "" msgstr "Group"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_list.js:549 #: addons/web/static/src/js/view_list.js:549

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

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

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:54+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176
@ -35,18 +35,18 @@ msgstr ""
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:198 #: addons/web/static/src/js/chrome.js:198
msgid "Dont send" msgid "Dont send"
msgstr "" msgstr "Ne küldje"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:1119 #: addons/web/static/src/js/chrome.js:1119
msgid "Client Error" msgid "Client Error"
msgstr "" msgstr "Kliens hiba"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:260 #: addons/web/static/src/js/chrome.js:260
#, python-format #, python-format
msgid "Loading (%d)" msgid "Loading (%d)"
msgstr "" msgstr "Betöltés (%d)"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:292 #: addons/web/static/src/js/chrome.js:292
@ -66,12 +66,12 @@ msgstr "Az adatbázis mentése sikerült"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:499 #: addons/web/static/src/js/chrome.js:499
msgid "Restored" msgid "Restored"
msgstr "" msgstr "Visszaállítva"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:499 #: addons/web/static/src/js/chrome.js:499
msgid "Database restored successfully" msgid "Database restored successfully"
msgstr "" msgstr "Sikeres adatbázis visszaállítás"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:783 #: addons/web/static/src/js/chrome.js:783
@ -235,7 +235,7 @@ msgstr "Fájl importálása"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:108 #: addons/web/static/src/js/data_import.js:108
msgid "External ID" msgid "External ID"
msgstr "" msgstr "Külső azonosító"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:349 #: addons/web/static/src/js/data_import.js:349
@ -259,18 +259,18 @@ msgstr ""
#: addons/web/static/src/js/formats.js:325 #: addons/web/static/src/js/formats.js:325
#: addons/web/static/src/js/view_page.js:268 #: addons/web/static/src/js/view_page.js:268
msgid "Download" msgid "Download"
msgstr "" msgstr "Letöltés"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/formats.js:330 #: addons/web/static/src/js/formats.js:330
#, python-format #, python-format
msgid "Download \"%s\"" msgid "Download \"%s\""
msgstr "" msgstr "\"%s\" letöltése"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:437 #: addons/web/static/src/js/search.js:437
msgid "Invalid Search" msgid "Invalid Search"
msgstr "" msgstr "Helytelen keresés"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:437 #: addons/web/static/src/js/search.js:437
@ -325,12 +325,12 @@ msgstr ""
#: addons/web/static/src/js/search.js:962 #: addons/web/static/src/js/search.js:962
#: addons/web/static/src/xml/base.xml:973 #: addons/web/static/src/xml/base.xml:973
msgid "Yes" msgid "Yes"
msgstr "" msgstr "Igen"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:963 #: addons/web/static/src/js/search.js:963
msgid "No" msgid "No"
msgstr "" msgstr "Nem"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/search.js:1416 #: addons/web/static/src/js/search.js:1416
@ -487,7 +487,7 @@ msgstr ""
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:367 #: addons/web/static/src/js/view_editor.js:367
msgid "Inherited View" msgid "Inherited View"
msgstr "" msgstr "Örökölt Nézet"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:371 #: addons/web/static/src/js/view_editor.js:371
@ -497,7 +497,7 @@ msgstr "Biztos, hogy létre akar hozni egy származtatott nézetet ide?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:381 #: addons/web/static/src/js/view_editor.js:381
msgid "Preview" msgid "Preview"
msgstr "" msgstr "Előnézet"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:501 #: addons/web/static/src/js/view_editor.js:501
@ -508,19 +508,19 @@ msgstr "Biztos, hogy el akarja távolítani ezt a csomópontot?"
#: addons/web/static/src/js/view_editor.js:815 #: addons/web/static/src/js/view_editor.js:815
#: addons/web/static/src/js/view_editor.js:939 #: addons/web/static/src/js/view_editor.js:939
msgid "Properties" msgid "Properties"
msgstr "" msgstr "Tulajdonságok"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:818 #: addons/web/static/src/js/view_editor.js:818
#: addons/web/static/src/js/view_editor.js:942 #: addons/web/static/src/js/view_editor.js:942
msgid "Update" msgid "Update"
msgstr "" msgstr "Frissítés"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:16 #: addons/web/static/src/js/view_form.js:16
#: addons/web/static/src/js/view_form.js:210 #: addons/web/static/src/js/view_form.js:210
msgid "Form" msgid "Form"
msgstr "" msgstr "Űrlap"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:632 #: addons/web/static/src/xml/base.xml:632
@ -577,7 +577,7 @@ msgstr ""
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:1287 #: addons/web/static/src/js/view_form.js:1287
msgid "Confirm" msgid "Confirm"
msgstr "" msgstr "Jóváhagyás"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:2220 #: addons/web/static/src/js/view_form.js:2220
@ -1036,7 +1036,7 @@ msgstr ""
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:477 #: addons/web/static/src/xml/base.xml:477
msgid "Debug View#" msgid "Debug View#"
msgstr "" msgstr "Debug nézet#"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:478 #: addons/web/static/src/xml/base.xml:478
@ -1634,3 +1634,9 @@ msgstr "Itt van a fájlnak az előnézete, amit nem tudunk importálni:"
#~ msgid "Hide this tip" #~ msgid "Hide this tip"
#~ msgstr "Tii elrejtése" #~ msgstr "Tii elrejtése"
#~ msgid "OK"
#~ msgstr "OK"
#~ msgid "Filter Entry"
#~ msgstr "Szűrő bejegyzés"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -15,8 +15,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176
@ -256,7 +256,7 @@ msgstr "*Campos Obrigatórios não selecionados :"
#: addons/web/static/src/js/formats.js:139 #: addons/web/static/src/js/formats.js:139
#, python-format #, python-format
msgid "(%d records)" msgid "(%d records)"
msgstr "(%d registos)" msgstr "(%d registros)"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/formats.js:325 #: addons/web/static/src/js/formats.js:325
@ -500,7 +500,7 @@ msgstr "Quer realmente criar uma view herdada aqui?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:381 #: addons/web/static/src/js/view_editor.js:381
msgid "Preview" msgid "Preview"
msgstr "Pré-visualizar" msgstr "Visualizar"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:501 #: addons/web/static/src/js/view_editor.js:501
@ -541,7 +541,7 @@ msgstr "Duplicar"
#: addons/web/static/src/js/view_form.js:133 #: addons/web/static/src/js/view_form.js:133
#: addons/web/static/src/js/view_form.js:728 #: addons/web/static/src/js/view_form.js:728
msgid "Set Default" msgid "Set Default"
msgstr "Definir como Padrão" msgstr "Configurar Padrão"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_page.js:59 #: addons/web/static/src/js/view_page.js:59
@ -665,12 +665,12 @@ msgstr "Exportar"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_list.js:374 #: addons/web/static/src/js/view_list.js:374
msgid "Group" msgid "Group"
msgstr "Grupo" msgstr "Agrupar"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_list.js:549 #: addons/web/static/src/js/view_list.js:549
msgid "Do you really want to remove these records?" msgid "Do you really want to remove these records?"
msgstr "Deseja remover esse registro?" msgstr "Deseja remover estes registros?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:925 #: addons/web/static/src/js/views.js:925
@ -787,12 +787,12 @@ msgstr ""
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:251 #: addons/web/static/src/xml/base.xml:251
msgid "OpenERP Entreprise" msgid "OpenERP Entreprise"
msgstr "OpenERP Entreprise" msgstr "OpenERP Enterprise"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:256 #: addons/web/static/src/xml/base.xml:256
msgid "OpenERP Enterprise Contract." msgid "OpenERP Enterprise Contract."
msgstr "Contrato Corporativo OpenERP" msgstr "Contrato Enterprise do OpenERP"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:257 #: addons/web/static/src/xml/base.xml:257
@ -829,7 +829,7 @@ msgstr "Banco de Dados:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:306 #: addons/web/static/src/xml/base.xml:306
msgid "Username" msgid "Username"
msgstr "Nome do usuário" msgstr "Nome de usuário"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:308 #: addons/web/static/src/xml/base.xml:308
@ -840,7 +840,7 @@ msgstr "Senha"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:310 #: addons/web/static/src/xml/base.xml:310
msgid "Log in" msgid "Log in"
msgstr "Autenticar" msgstr "Acessar"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:314 #: addons/web/static/src/xml/base.xml:314
@ -850,7 +850,7 @@ msgstr "Administrar bancos de dados"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:44 addons/web/static/src/xml/base.xml:315 #: addons/web/static/src/xml/base.xml:44 addons/web/static/src/xml/base.xml:315
msgid "Powered by" msgid "Powered by"
msgstr "Desenvolvido Por" msgstr "Desenvolvido por"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:44 addons/web/static/src/xml/base.xml:315 #: addons/web/static/src/xml/base.xml:44 addons/web/static/src/xml/base.xml:315
@ -862,7 +862,7 @@ msgstr "OpenERP"
#: addons/web/static/src/xml/base.xml:132 #: addons/web/static/src/xml/base.xml:132
#: addons/web/static/src/xml/base.xml:328 #: addons/web/static/src/xml/base.xml:328
msgid "Drop" msgid "Drop"
msgstr "Soltar" msgstr "Excluir"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:166 #: addons/web/static/src/xml/base.xml:166
@ -981,7 +981,7 @@ msgstr "Versão"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1821 #: addons/web/static/src/xml/base.xml:1821
msgid "Copyright © 2004-TODAY OpenERP SA. All Rights Reserved." msgid "Copyright © 2004-TODAY OpenERP SA. All Rights Reserved."
msgstr "Copyright © 2004-HOJE OpenERP SA. Alguns Direitos Reservados." msgstr "Copyright © 2004-HOJE OpenERP SA. Todos os Direitos Reservados."
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1822 #: addons/web/static/src/xml/base.xml:1822
@ -991,12 +991,12 @@ msgstr "OpenERP é uma marca de"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1823 #: addons/web/static/src/xml/base.xml:1823
msgid "OpenERP SA Company" msgid "OpenERP SA Company"
msgstr "Empresa OpenERP SA" msgstr "OpenERP SA"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1825 #: addons/web/static/src/xml/base.xml:1825
msgid "Licenced under the terms of" msgid "Licenced under the terms of"
msgstr "Licenciado sobre os termos de" msgstr "Licenciado sob os termos de"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1826 #: addons/web/static/src/xml/base.xml:1826
@ -1152,7 +1152,7 @@ msgstr "Condição:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:842 #: addons/web/static/src/xml/base.xml:842
msgid "Only you" msgid "Only you"
msgstr "Somente voce" msgstr "Apenas eu"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:849 #: addons/web/static/src/xml/base.xml:849
@ -1167,7 +1167,7 @@ msgstr "Widget não utilizado"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:936 #: addons/web/static/src/xml/base.xml:936
msgid "(nolabel)" msgid "(nolabel)"
msgstr "(nolabel)" msgstr "(sem rótulo)"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:941 #: addons/web/static/src/xml/base.xml:941
@ -1213,7 +1213,7 @@ msgstr "Modificadores:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:973 #: addons/web/static/src/xml/base.xml:973
msgid "Change default:" msgid "Change default:"
msgstr "Trocar padrão" msgstr "Alterar padrão"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:977 #: addons/web/static/src/xml/base.xml:977
@ -1238,7 +1238,7 @@ msgstr "Abrir este recurso"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1063 #: addons/web/static/src/xml/base.xml:1063
msgid "Select date" msgid "Select date"
msgstr "Data selecionada" msgstr "Escolha a data"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:948 #: addons/web/static/src/xml/base.xml:948
@ -1511,12 +1511,12 @@ msgstr "Arquivo CSV:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1756 #: addons/web/static/src/xml/base.xml:1756
msgid "2. Check your file format" msgid "2. Check your file format"
msgstr "Verifique seu formato de arquivo" msgstr "2. Verifique seu formato de arquivo"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1759 #: addons/web/static/src/xml/base.xml:1759
msgid "Import Options" msgid "Import Options"
msgstr "Opções de importação" msgstr "Opções de Importação"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1763 #: addons/web/static/src/xml/base.xml:1763
@ -1577,9 +1577,6 @@ msgstr "A importação falhou devido a:"
msgid "Here is a preview of the file we could not import:" msgid "Here is a preview of the file we could not import:"
msgstr "Aqui está uma visualização do arquivo que não pode ser importado:" msgstr "Aqui está uma visualização do arquivo que não pode ser importado:"
#~ msgid "LOGOUT"
#~ msgstr "DESCONECTAR"
#~ msgid "Open..." #~ msgid "Open..."
#~ msgstr "Abrir..." #~ msgstr "Abrir..."
@ -1623,9 +1620,6 @@ msgstr "Aqui está uma visualização do arquivo que não pode ser importado:"
#~ msgid "Page" #~ msgid "Page"
#~ msgstr "Página" #~ msgstr "Página"
#~ msgid "Customize"
#~ msgstr "Customizar"
#~ msgid "Reports" #~ msgid "Reports"
#~ msgstr "Relatórios" #~ msgstr "Relatórios"
@ -1665,9 +1659,6 @@ msgstr "Aqui está uma visualização do arquivo que não pode ser importado:"
#~ msgid "Add / Remove Shortcut..." #~ msgid "Add / Remove Shortcut..."
#~ msgstr "Adicionar/Remover atalho..." #~ msgstr "Adicionar/Remover atalho..."
#~ msgid "Fold menu"
#~ msgstr "Abrir menu"
#~ msgid "Add attachment" #~ msgid "Add attachment"
#~ msgstr "Adicionar anexo" #~ msgstr "Adicionar anexo"
@ -1689,3 +1680,12 @@ msgstr "Aqui está uma visualização do arquivo que não pode ser importado:"
#~ msgid "Filter disabled due to invalid syntax" #~ msgid "Filter disabled due to invalid syntax"
#~ msgstr "Filtro desativado devido a sintaxe inválida" #~ msgstr "Filtro desativado devido a sintaxe inválida"
#~ msgid "Fold menu"
#~ msgstr "Fechar o menu"
#~ msgid "LOGOUT"
#~ msgstr "SAIR"
#~ msgid "Customize"
#~ msgstr "Personalizar"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176
@ -66,12 +66,12 @@ msgstr "База данных резервированна успешно"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:499 #: addons/web/static/src/js/chrome.js:499
msgid "Restored" msgid "Restored"
msgstr "Восстановленна" msgstr "Восстановлена"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:499 #: addons/web/static/src/js/chrome.js:499
msgid "Database restored successfully" msgid "Database restored successfully"
msgstr "База данных восстановленна успешно" msgstr "База данных восстановлена успешно"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:783 #: addons/web/static/src/js/chrome.js:783
@ -205,12 +205,12 @@ msgstr "Закрыть"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_export.js:20 #: addons/web/static/src/js/data_export.js:20
msgid "Export To File" msgid "Export To File"
msgstr "Экспортировать в файл" msgstr "Экспорт в файл"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_export.js:126 #: addons/web/static/src/js/data_export.js:126
msgid "Please enter save field list name" msgid "Please enter save field list name"
msgstr "Введите имя для сохраняемого списка полей" msgstr "Введите имя списка полей для сохранения"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_export.js:362 #: addons/web/static/src/js/data_export.js:362
@ -230,12 +230,12 @@ msgstr "Импорт данных"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:72 #: addons/web/static/src/js/data_import.js:72
msgid "Import File" msgid "Import File"
msgstr "Импортировать файл" msgstr "Импорт файла"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:108 #: addons/web/static/src/js/data_import.js:108
msgid "External ID" msgid "External ID"
msgstr "Внешний идентификатор" msgstr "Внешний ID"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:349 #: addons/web/static/src/js/data_import.js:349
@ -243,17 +243,19 @@ msgid ""
"Destination fields should only be selected once, some fields are selected " "Destination fields should only be selected once, some fields are selected "
"more than once:" "more than once:"
msgstr "" msgstr ""
"Конечные поля должны быть выбраны единожды, некоторые поля выбраны более "
"одного раза:"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/data_import.js:386 #: addons/web/static/src/js/data_import.js:386
msgid "*Required Fields are not selected :" msgid "*Required Fields are not selected :"
msgstr "" msgstr "*Требуемые поля не выбраны :"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/formats.js:139 #: addons/web/static/src/js/formats.js:139
#, python-format #, python-format
msgid "(%d records)" msgid "(%d records)"
msgstr "" msgstr "(%d записей)"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/formats.js:325 #: addons/web/static/src/js/formats.js:325
@ -444,7 +446,7 @@ msgstr "ложно"
#: addons/web/static/src/js/view_editor.js:20 #: addons/web/static/src/js/view_editor.js:20
#, python-format #, python-format
msgid "Manage Views (%s)" msgid "Manage Views (%s)"
msgstr "Управление макетами (%s)" msgstr "Управление видами (%s)"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:46 #: addons/web/static/src/js/view_editor.js:46
@ -477,18 +479,18 @@ msgstr "Создать вид (%s)"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:168 #: addons/web/static/src/js/view_editor.js:168
msgid "Do you really want to remove this view?" msgid "Do you really want to remove this view?"
msgstr "Вы действительно хотите удалить этот Вид?" msgstr "Вы действительно хотите удалить этот вид?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:364 #: addons/web/static/src/js/view_editor.js:364
#, python-format #, python-format
msgid "View Editor %d - %s" msgid "View Editor %d - %s"
msgstr "Редактор Вида %d - %s" msgstr "Редактор вида %d - %s"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:367 #: addons/web/static/src/js/view_editor.js:367
msgid "Inherited View" msgid "Inherited View"
msgstr "Унаследованный Вид" msgstr "Унаследованный вид"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:371 #: addons/web/static/src/js/view_editor.js:371
@ -503,7 +505,7 @@ msgstr "Предпросмотр"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:501 #: addons/web/static/src/js/view_editor.js:501
msgid "Do you really want to remove this node?" msgid "Do you really want to remove this node?"
msgstr "Вы действительно хотите удалить этот Узел?" msgstr "Вы действительно хотите удалить этот узел?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_editor.js:815 #: addons/web/static/src/js/view_editor.js:815
@ -544,18 +546,18 @@ msgstr "Установить по умолчанию"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_page.js:59 #: addons/web/static/src/js/view_page.js:59
msgid "Do you really want to delete this record?" msgid "Do you really want to delete this record?"
msgstr "Вы действительно хотите удалить эту Запись?" msgstr "Вы действительно хотите удалить эту запись?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:508 #: addons/web/static/src/js/view_form.js:508
msgid "" msgid ""
"Warning, the record has been modified, your changes will be discarded." "Warning, the record has been modified, your changes will be discarded."
msgstr "Внимание. Эта запись была изменена. Ваши изменения будут потеряны." msgstr "Внимание, запись была изменена. Ваши изменения будут потеряны."
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:735 #: addons/web/static/src/js/view_form.js:735
msgid "Save default" msgid "Save default"
msgstr "Сохранить как По Умолчанию" msgstr "Сохранить значения по умолчанию"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_form.js:870 #: addons/web/static/src/js/view_form.js:870
@ -663,12 +665,12 @@ msgstr "Экспорт"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_list.js:374 #: addons/web/static/src/js/view_list.js:374
msgid "Group" msgid "Group"
msgstr "" msgstr "Группа"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/view_list.js:549 #: addons/web/static/src/js/view_list.js:549
msgid "Do you really want to remove these records?" msgid "Do you really want to remove these records?"
msgstr "Вы действительно хотите удалить эту Запись?" msgstr "Вы действительно хотите удалить эти записи?"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:925 #: addons/web/static/src/js/views.js:925
@ -699,29 +701,29 @@ msgstr "Дерево"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:570 addons/web/static/src/xml/base.xml:480 #: addons/web/static/src/js/views.js:570 addons/web/static/src/xml/base.xml:480
msgid "Fields View Get" msgid "Fields View Get"
msgstr "Получить Поля Просмотра" msgstr "Получить поля вида"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:578 #: addons/web/static/src/js/views.js:578
#, python-format #, python-format
msgid "View Log (%s)" msgid "View Log (%s)"
msgstr "Просмотреть Протокол (%s)" msgstr "Показать отчет (%s)"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:605 #: addons/web/static/src/js/views.js:605
#, python-format #, python-format
msgid "Model %s fields" msgid "Model %s fields"
msgstr "Поля Модели %s" msgstr "Поля модели %s"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:615 addons/web/static/src/xml/base.xml:482 #: addons/web/static/src/js/views.js:615 addons/web/static/src/xml/base.xml:482
msgid "Manage Views" msgid "Manage Views"
msgstr "Управление Видами" msgstr "Управление видами"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:616 #: addons/web/static/src/js/views.js:616
msgid "Could not find current view declaration" msgid "Could not find current view declaration"
msgstr "Не могу найти объявление текущего макета" msgstr "Не удалось найти определение текущего вида"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:716 #: addons/web/static/src/js/views.js:716
@ -751,7 +753,7 @@ msgstr "Технический перевод"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:924 #: addons/web/static/src/js/views.js:924
msgid "You must choose at least one record." msgid "You must choose at least one record."
msgstr "Вы должны выбрать хотя-бы одну запись." msgstr "Вы должны выбрать хотя бы одну запись."
#. openerp-web #. openerp-web
#: addons/web/static/src/js/views.js:875 #: addons/web/static/src/js/views.js:875
@ -779,8 +781,7 @@ msgid ""
"Your version of OpenERP is unsupported. Support & maintenance services are " "Your version of OpenERP is unsupported. Support & maintenance services are "
"available here:" "available here:"
msgstr "" msgstr ""
"Ваша версия OpenERP не поддерживается. Службы Технической Поддержки доступны " "Ваша версия OpenERP не поддерживается. Услуги техподдержки доступны здесь:"
"тут:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:251 #: addons/web/static/src/xml/base.xml:251
@ -790,7 +791,7 @@ msgstr "OpenERP Entreprise"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:256 #: addons/web/static/src/xml/base.xml:256
msgid "OpenERP Enterprise Contract." msgid "OpenERP Enterprise Contract."
msgstr "OpenERP Enterprise Contract." msgstr "Контракт OpenERP Enterprise."
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:257 #: addons/web/static/src/xml/base.xml:257
@ -843,7 +844,7 @@ msgstr "Вход"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:314 #: addons/web/static/src/xml/base.xml:314
msgid "Manage Databases" msgid "Manage Databases"
msgstr "Управление Базами Данных" msgstr "Управление базами данных"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:44 addons/web/static/src/xml/base.xml:315 #: addons/web/static/src/xml/base.xml:44 addons/web/static/src/xml/base.xml:315
@ -866,7 +867,7 @@ msgstr "Удалить"
#: addons/web/static/src/xml/base.xml:166 #: addons/web/static/src/xml/base.xml:166
#: addons/web/static/src/xml/base.xml:329 #: addons/web/static/src/xml/base.xml:329
msgid "Backup" msgid "Backup"
msgstr "Создать Резервную Копию" msgstr "Резервное копирование"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:195 #: addons/web/static/src/xml/base.xml:195
@ -877,7 +878,7 @@ msgstr "Востановить"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:332 #: addons/web/static/src/xml/base.xml:332
msgid "Back to Login" msgid "Back to Login"
msgstr "Вернутся к Авторизации" msgstr "Войти"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:61 #: addons/web/static/src/xml/base.xml:61
@ -887,7 +888,7 @@ msgstr "СОЗДАТЬ БАЗУ ДАННЫХ"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:68 addons/web/static/src/xml/base.xml:211 #: addons/web/static/src/xml/base.xml:68 addons/web/static/src/xml/base.xml:211
msgid "Master password:" msgid "Master password:"
msgstr "Мастер пароль:" msgstr "Мастер-пароль:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:72 addons/web/static/src/xml/base.xml:191 #: addons/web/static/src/xml/base.xml:72 addons/web/static/src/xml/base.xml:191
@ -897,7 +898,7 @@ msgstr "Название новой базы данных:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:77 #: addons/web/static/src/xml/base.xml:77
msgid "Load Demonstration data:" msgid "Load Demonstration data:"
msgstr "Загрузить Демонстрационные данные:" msgstr "Загрузить демонстрационные данные:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:81 #: addons/web/static/src/xml/base.xml:81
@ -924,7 +925,7 @@ msgstr "УДАЛИТЬ БАЗУ ДАННЫХ"
#: addons/web/static/src/xml/base.xml:162 #: addons/web/static/src/xml/base.xml:162
#: addons/web/static/src/xml/base.xml:187 #: addons/web/static/src/xml/base.xml:187
msgid "Master Password:" msgid "Master Password:"
msgstr "Мастер Пароль:" msgstr "Мастер-пароль:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:143 #: addons/web/static/src/xml/base.xml:143
@ -944,17 +945,17 @@ msgstr "Файл:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:204 #: addons/web/static/src/xml/base.xml:204
msgid "CHANGE MASTER PASSWORD" msgid "CHANGE MASTER PASSWORD"
msgstr "ИЗМЕНИТЬ МАСТЕР ПАРОЛЬ" msgstr "ИЗМЕНИТЬ МАСТЕР-ПАРОЛЬ"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:216 #: addons/web/static/src/xml/base.xml:216
msgid "New master password:" msgid "New master password:"
msgstr "Новый Мастер Пароль:" msgstr "Новый мастер-пароль:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:221 #: addons/web/static/src/xml/base.xml:221
msgid "Confirm new master password:" msgid "Confirm new master password:"
msgstr "Подтверждение Мастер Пароля:" msgstr "Подтвердить мастер-пароль:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:325 #: addons/web/static/src/xml/base.xml:325
@ -1054,7 +1055,7 @@ msgstr ""
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:479 #: addons/web/static/src/xml/base.xml:479
msgid "View Fields" msgid "View Fields"
msgstr "Просмотр Полей" msgstr "Просмотр полей"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1300 #: addons/web/static/src/xml/base.xml:1300
@ -1069,7 +1070,7 @@ msgstr "Вид"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:484 #: addons/web/static/src/xml/base.xml:484
msgid "Edit SearchView" msgid "Edit SearchView"
msgstr "Изменить Вид Поиска" msgstr "Изменить вид поиска"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:485 #: addons/web/static/src/xml/base.xml:485
@ -1099,7 +1100,7 @@ msgstr "Создатель:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:500 #: addons/web/static/src/xml/base.xml:500
msgid "Creation Date:" msgid "Creation Date:"
msgstr "Дата Создания:" msgstr "Дата создания:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:503 #: addons/web/static/src/xml/base.xml:503
@ -1109,7 +1110,7 @@ msgstr "Изменялся:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:506 #: addons/web/static/src/xml/base.xml:506
msgid "Latest Modification Date:" msgid "Latest Modification Date:"
msgstr "Дата Изменения:" msgstr "Дата изменения:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:518 #: addons/web/static/src/xml/base.xml:518
@ -1299,7 +1300,7 @@ msgstr "Специальное:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1260 #: addons/web/static/src/xml/base.xml:1260
msgid "Button Type:" msgid "Button Type:"
msgstr "Тип Кнопки:" msgstr "Тип кнопки:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1264 #: addons/web/static/src/xml/base.xml:1264
@ -1309,7 +1310,7 @@ msgstr "Метод:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1268 #: addons/web/static/src/xml/base.xml:1268
msgid "Action ID:" msgid "Action ID:"
msgstr "ID Действия:" msgstr "ID действия:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:542 #: addons/web/static/src/xml/base.xml:542
@ -1334,7 +1335,7 @@ msgstr "-- Действия --"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1297 #: addons/web/static/src/xml/base.xml:1297
msgid "Add Advanced Filter" msgid "Add Advanced Filter"
msgstr "Добавить Расширенный Фильтр" msgstr "Добавить расширенный фильтр"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1298 #: addons/web/static/src/xml/base.xml:1298
@ -1344,12 +1345,12 @@ msgstr "Сохранить фильтр"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1305 #: addons/web/static/src/xml/base.xml:1305
msgid "Filter Name:" msgid "Filter Name:"
msgstr "Название Фильтра:" msgstr "Название фильтра:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1307 #: addons/web/static/src/xml/base.xml:1307
msgid "(Any existing filter with the same name will be replaced)" msgid "(Any existing filter with the same name will be replaced)"
msgstr "(Существующий фильтр с таким же именени будет замещен)" msgstr "(Имеющийся фильтр с таким же имененем будет заменен)"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1376 #: addons/web/static/src/xml/base.xml:1376
@ -1437,7 +1438,7 @@ msgstr "Тип экспорта:"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1626 #: addons/web/static/src/xml/base.xml:1626
msgid "Import Compatible Export" msgid "Import Compatible Export"
msgstr "Импорт совместимого Экспорта" msgstr "Экспорт, совместимый с импортом"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1627 #: addons/web/static/src/xml/base.xml:1627
@ -1447,7 +1448,7 @@ msgstr "Экспортировать все данные"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1630 #: addons/web/static/src/xml/base.xml:1630
msgid "Export Formats" msgid "Export Formats"
msgstr "Форматы Экспорта" msgstr "Форматы экспорта"
#. openerp-web #. openerp-web
#: addons/web/static/src/xml/base.xml:1636 #: addons/web/static/src/xml/base.xml:1636
@ -1620,9 +1621,6 @@ msgstr "Предпросмотр файла, который система не
#~ msgid "[%(first_record)d to %(last_record)d] of %(records_count)d" #~ msgid "[%(first_record)d to %(last_record)d] of %(records_count)d"
#~ msgstr "[%(first_record)d до %(last_record)d] из %(records_count)d" #~ msgstr "[%(first_record)d до %(last_record)d] из %(records_count)d"
#~ msgid "Filter disabled due to invalid syntax"
#~ msgstr "Фильтр отключен так-как имеет неверный синтаксис"
#~ msgid "Add / Remove Shortcut..." #~ msgid "Add / Remove Shortcut..."
#~ msgstr "Добавить / Удалить ярлык..." #~ msgstr "Добавить / Удалить ярлык..."
@ -1641,9 +1639,6 @@ msgstr "Предпросмотр файла, который система не
#~ msgid "Open..." #~ msgid "Open..."
#~ msgstr "Открыть..." #~ msgstr "Открыть..."
#~ msgid "Send an e-mail with your default e-mail client"
#~ msgstr "Отправлять имейл вашим почтовым клиентом"
#~ msgid "Search..." #~ msgid "Search..."
#~ msgstr "Поиск…" #~ msgstr "Поиск…"
@ -1671,17 +1666,23 @@ msgstr "Предпросмотр файла, который система не
#~ msgid "None of the following conditions must match" #~ msgid "None of the following conditions must match"
#~ msgstr "Ни одно из следующих условий не должно соответствовать" #~ msgstr "Ни одно из следующих условий не должно соответствовать"
#~ msgid "Advanced Filters"
#~ msgstr "Расширенные Фильтры"
#~ msgid "Activate the developper mode" #~ msgid "Activate the developper mode"
#~ msgstr "Активировать режим разработчика" #~ msgstr "Активировать режим разработчика"
#~ msgid "Title of new Dashboard item:"
#~ msgstr "Заголовок нового Дашбоарда:"
#~ msgid "Notebook Page \"" #~ msgid "Notebook Page \""
#~ msgstr "Страница Блокнота \"" #~ msgstr "Страница Блокнота \""
#~ msgid "Filter disabled due to invalid syntax"
#~ msgstr "Фильтр отключен из-за неверного синтаксиса"
#~ msgid "Send an e-mail with your default e-mail client"
#~ msgstr "Отправлять e-mail вашим почтовым клиентом"
#~ msgid "Select Dashboard to add this filter to:" #~ msgid "Select Dashboard to add this filter to:"
#~ msgstr "Выберите Дашбоард, к которому добавить этот фильтр:" #~ msgstr "Выберите панель для добавления этого фильтра:"
#~ msgid "Title of new Dashboard item:"
#~ msgstr "Заголовок новой панели:"
#~ msgid "Advanced Filters"
#~ msgstr "Расширенные фильтры"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:54+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:04+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:55+0000\n" "X-Launchpad-Export-Date: 2012-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15944)\n"
#. openerp-web #. openerp-web
#: addons/web/static/src/js/chrome.js:176 #: addons/web/static/src/js/chrome.js:176

View File

@ -25,6 +25,7 @@
display: none !important; display: none !important;
} }
} }
.openerp.openerp_webclient_container { .openerp.openerp_webclient_container {
height: 100%; height: 100%;
position: relative; position: relative;
@ -40,7 +41,7 @@
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
/* http://www.quirksmode.org/dom/inputfile.html /* http://www.quirksmode.org/dom/inputfile.html
* http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image * http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image
*/ */ */
} }
.openerp :-moz-placeholder { .openerp :-moz-placeholder {
color: #afafb6 !important; color: #afafb6 !important;
@ -111,28 +112,6 @@
.openerp h4 { .openerp h4 {
margin: 4px 0; margin: 4px 0;
} }
.openerp .oe_semantic_html_override ul, .openerp .oe_semantic_html_override ol {
margin: 0;
padding: 0;
}
.openerp .oe_semantic_html_override ul ul, .openerp .oe_semantic_html_override ul ol, .openerp .oe_semantic_html_override ul li, .openerp .oe_semantic_html_override ol ul, .openerp .oe_semantic_html_override ol ol, .openerp .oe_semantic_html_override ol li {
margin: 0;
padding: 0;
}
.openerp .oe_semantic_html_override ul li, .openerp .oe_semantic_html_override ol li {
list-style-type: none;
}
.openerp ul.oe_semantic_html_override {
margin: 0;
padding: 0;
}
.openerp ul.oe_semantic_html_override ul, .openerp ul.oe_semantic_html_override ol, .openerp ul.oe_semantic_html_override li {
margin: 0;
padding: 0;
}
.openerp ul.oe_semantic_html_override li {
list-style-type: none;
}
.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button { .openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
display: inline-block; display: inline-block;
border: 1px solid #ababab; border: 1px solid #ababab;
@ -265,7 +244,7 @@
border-radius: 0 0 2px 2px; border-radius: 0 0 2px 2px;
} }
.openerp.ui-dialog .ui-dialog-buttonpane button { .openerp.ui-dialog .ui-dialog-buttonpane button {
margin: 0; margin: 0 4px 0 0;
} }
.openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { .openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
float: left; float: left;
@ -393,40 +372,38 @@
background: #dc5f59; background: #dc5f59;
} }
.openerp button.oe_highlight { .openerp button.oe_highlight {
background-color: #dc5f59; border: 1px solid #795151;
background-image: -webkit-gradient(linear, left top, left bottom, from(#dc5f59), to(#b33630)); background-color: #df3f3f;
background-image: -webkit-linear-gradient(top, #dc5f59, #b33630); background-image: -webkit-gradient(linear, left top, left bottom, from(#df3f3f), to(#a21a1a));
background-image: -moz-linear-gradient(top, #dc5f59, #b33630); background-image: -webkit-linear-gradient(top, #df3f3f, #a21a1a);
background-image: -ms-linear-gradient(top, #dc5f59, #b33630); background-image: -moz-linear-gradient(top, #df3f3f, #a21a1a);
background-image: -o-linear-gradient(top, #dc5f59, #b33630); background-image: -ms-linear-gradient(top, #df3f3f, #a21a1a);
background-image: linear-gradient(to bottom, #dc5f59, #b33630); background-image: -o-linear-gradient(top, #df3f3f, #a21a1a);
-moz-box-shadow: none; background-image: linear-gradient(to bottom, #df3f3f, #a21a1a);
-webkit-box-shadow: none; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset;
box-shadow: none; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset;
} box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset;
.openerp button.oe_highlight:active {
background-color: #b33630;
background-image: -webkit-gradient(linear, left top, left bottom, from(#b33630), to(#dc5f59));
background-image: -webkit-linear-gradient(top, #b33630, #dc5f59);
background-image: -moz-linear-gradient(top, #b33630, #dc5f59);
background-image: -ms-linear-gradient(top, #b33630, #dc5f59);
background-image: -o-linear-gradient(top, #b33630, #dc5f59);
background-image: linear-gradient(to bottom, #b33630, #dc5f59);
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
} }
.openerp button.oe_highlight:hover { .openerp button.oe_highlight:hover {
background-color: #df6b66; background-color: #e25858;
background-image: -webkit-gradient(linear, left top, left bottom, from(#df6b66), to(#bf3a33)); background-image: -webkit-gradient(linear, left top, left bottom, from(#e25858), to(#ab1b1b));
background-image: -webkit-linear-gradient(top, #df6b66, #bf3a33); background-image: -webkit-linear-gradient(top, #e25858, #ab1b1b);
background-image: -moz-linear-gradient(top, #df6b66, #bf3a33); background-image: -moz-linear-gradient(top, #e25858, #ab1b1b);
background-image: -ms-linear-gradient(top, #df6b66, #bf3a33); background-image: -ms-linear-gradient(top, #e25858, #ab1b1b);
background-image: -o-linear-gradient(top, #df6b66, #bf3a33); background-image: -o-linear-gradient(top, #e25858, #ab1b1b);
background-image: linear-gradient(to bottom, #df6b66, #bf3a33); background-image: linear-gradient(to bottom, #e25858, #ab1b1b);
-moz-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); }
-webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); .openerp button.oe_highlight:active {
box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); background-color: #c52020;
background-image: -webkit-gradient(linear, left top, left bottom, from(#c52020), to(#d22323));
background-image: -webkit-linear-gradient(top, #c52020, #d22323);
background-image: -moz-linear-gradient(top, #c52020, #d22323);
background-image: -ms-linear-gradient(top, #c52020, #d22323);
background-image: -o-linear-gradient(top, #c52020, #d22323);
background-image: linear-gradient(to bottom, #c52020, #d22323);
}
.openerp .oe_background_grey {
background: #eeeeee !important;
} }
.openerp .oe_form_dirty .oe_highlight_on_dirty { .openerp .oe_form_dirty .oe_highlight_on_dirty {
color: white; color: white;
@ -472,9 +449,9 @@
-moz-border-radius: 3px; -moz-border-radius: 3px;
-webkit-border-radius: 3px; -webkit-border-radius: 3px;
border-radius: 3px; border-radius: 3px;
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
border: none; border: none;
margin-bottom: 10px; margin-bottom: 10px;
} }
@ -604,26 +581,6 @@
padding: 0 16px; padding: 0 16px;
list-style: none; list-style: none;
zoom: 1; zoom: 1;
margin: 0;
padding: 0;
}
.openerp .oe_notebook ul, .openerp .oe_notebook ol, .openerp .oe_notebook li {
margin: 0;
padding: 0;
}
.openerp .oe_notebook li {
list-style-type: none;
}
.openerp .oe_notebook ul, .openerp .oe_notebook ol {
margin: 0;
padding: 0;
}
.openerp .oe_notebook ul ul, .openerp .oe_notebook ul ol, .openerp .oe_notebook ul li, .openerp .oe_notebook ol ul, .openerp .oe_notebook ol ol, .openerp .oe_notebook ol li {
margin: 0;
padding: 0;
}
.openerp .oe_notebook ul li, .openerp .oe_notebook ol li {
list-style-type: none;
} }
.openerp .oe_notebook.ui-corner-all { .openerp .oe_notebook.ui-corner-all {
-moz-border-radius: 0; -moz-border-radius: 0;
@ -700,6 +657,8 @@
top: 26px; top: 26px;
left: 0; left: 0;
z-index: 1; z-index: 1;
margin: 0;
padding: 0;
border: 1px solid #afafb6; border: 1px solid #afafb6;
background: white; background: white;
padding: 4px 0; padding: 4px 0;
@ -717,6 +676,7 @@
float: none; float: none;
display: block; display: block;
position: relative; position: relative;
margin: 0;
padding: 2px 8px; padding: 2px 8px;
} }
.openerp .oe_dropdown_menu > li:hover { .openerp .oe_dropdown_menu > li:hover {
@ -834,9 +794,10 @@
font-size: 14px; font-size: 14px;
height: 100%; height: 100%;
} }
.openerp .oe_login li { .openerp .oe_login ul, .openerp .oe_login li {
margin: 0;
list-style-type: none; list-style-type: none;
padding-bottom: 4px; padding: 0 0 4px 0;
} }
.openerp .oe_login button { .openerp .oe_login button {
float: right; float: right;
@ -865,9 +826,9 @@
font-family: "Lucida Grande", Helvetica, Verdana, Arial; font-family: "Lucida Grande", Helvetica, Verdana, Arial;
border: 1px solid #999999; border: 1px solid #999999;
background: whitesmoke; background: whitesmoke;
-moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4);
-webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4);
box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4);
-moz-border-radius: 3px; -moz-border-radius: 3px;
-webkit-border-radius: 3px; -webkit-border-radius: 3px;
border-radius: 3px; border-radius: 3px;
@ -929,17 +890,6 @@
-webkit-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); -webkit-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9);
box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); box-shadow: 0 0 18px rgba(0, 0, 0, 0.9);
} }
.openerp .oe_login .oe_login_pane ul, .openerp .oe_login .oe_login_pane ol {
margin: 0;
padding: 0;
}
.openerp .oe_login .oe_login_pane ul ul, .openerp .oe_login .oe_login_pane ul ol, .openerp .oe_login .oe_login_pane ul li, .openerp .oe_login .oe_login_pane ol ul, .openerp .oe_login .oe_login_pane ol ol, .openerp .oe_login .oe_login_pane ol li {
margin: 0;
padding: 0;
}
.openerp .oe_login .oe_login_pane ul li, .openerp .oe_login .oe_login_pane ol li {
list-style-type: none;
}
.openerp .oe_login .oe_login_pane h2 { .openerp .oe_login .oe_login_pane h2 {
margin-top: 0; margin-top: 0;
font-size: 18px; font-size: 18px;
@ -1010,7 +960,6 @@
.openerp .oe_topbar { .openerp .oe_topbar {
width: 100%; width: 100%;
height: 31px; height: 31px;
border-top: solid 1px #d3d3d3;
background-color: #646060; background-color: #646060;
background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626)); background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626));
background-image: -webkit-linear-gradient(top, #646060, #262626); background-image: -webkit-linear-gradient(top, #646060, #262626);
@ -1019,17 +968,6 @@
background-image: -o-linear-gradient(top, #646060, #262626); background-image: -o-linear-gradient(top, #646060, #262626);
background-image: linear-gradient(to bottom, #646060, #262626); background-image: linear-gradient(to bottom, #646060, #262626);
} }
.openerp .oe_topbar ul, .openerp .oe_topbar ol {
margin: 0;
padding: 0;
}
.openerp .oe_topbar ul ul, .openerp .oe_topbar ul ol, .openerp .oe_topbar ul li, .openerp .oe_topbar ol ul, .openerp .oe_topbar ol ol, .openerp .oe_topbar ol li {
margin: 0;
padding: 0;
}
.openerp .oe_topbar ul li, .openerp .oe_topbar ol li {
list-style-type: none;
}
.openerp .oe_topbar .oe_topbar_item { .openerp .oe_topbar .oe_topbar_item {
display: block; display: block;
padding: 5px 10px 7px; padding: 5px 10px 7px;
@ -1102,17 +1040,6 @@
text-shadow: 0 1px 1px white; text-shadow: 0 1px 1px white;
padding-bottom: 16px; padding-bottom: 16px;
} }
.openerp .oe_leftbar ul, .openerp .oe_leftbar ol {
margin: 0;
padding: 0;
}
.openerp .oe_leftbar ul ul, .openerp .oe_leftbar ul ol, .openerp .oe_leftbar ul li, .openerp .oe_leftbar ol ul, .openerp .oe_leftbar ol ol, .openerp .oe_leftbar ol li {
margin: 0;
padding: 0;
}
.openerp .oe_leftbar ul li, .openerp .oe_leftbar ol li {
list-style-type: none;
}
.openerp a.oe_logo { .openerp a.oe_logo {
width: 220px; width: 220px;
display: block; display: block;
@ -1168,6 +1095,9 @@
margin: 0; margin: 0;
} }
.openerp .oe_menu > li { .openerp .oe_menu > li {
list-style-type: none;
padding: 0;
margin: 0;
float: left; float: left;
} }
.openerp .oe_menu > li > a { .openerp .oe_menu > li > a {
@ -1207,7 +1137,9 @@
} }
.openerp .oe_secondary_submenu li { .openerp .oe_secondary_submenu li {
position: relative; position: relative;
margin: 0;
padding: 1px 0 1px 20px !important; padding: 1px 0 1px 20px !important;
list-style-type: none;
} }
.openerp .oe_secondary_submenu li a { .openerp .oe_secondary_submenu li a {
display: block; display: block;
@ -1235,24 +1167,26 @@
.openerp .oe_secondary_submenu .oe_menu_counter { .openerp .oe_secondary_submenu .oe_menu_counter {
float: right; float: right;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
margin: 0px; margin: 1px;
padding: 1px 4px; padding: 1px 4px;
border: none;
} }
.openerp .oe_secondary_submenu .oe_menu_counter:hover { .openerp .oe_secondary_submenu .oe_menu_counter:hover {
cursor: pointer; cursor: pointer;
border: 1px solid #c81010; -webkit-transform: scale(1.1);
-moz-box-shadow: 0 0 2px #c81010; -moz-transform: scale(1.1);
-webkit-box-shadow: 0 0 2px #c81010; -ms-transform: scale(1.1);
box-shadow: 0 0 2px #c81010; -o-transform: scale(1.1);
transform: scale(1.1);
} }
.openerp .oe_secondary_submenu .oe_active { .openerp .oe_secondary_submenu .oe_active {
background: #7c7bad;
border-top: 1px solid lightGray; border-top: 1px solid lightGray;
border-bottom: 1px solid lightGray; border-bottom: 1px solid #dedede;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2);
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2);
background: #7c7bad;
} }
.openerp .oe_secondary_submenu .oe_active a { .openerp .oe_secondary_submenu .oe_active a {
color: white; color: white;
@ -1268,6 +1202,9 @@
.openerp .oe_secondary_submenu .oe_active .oe_menu_counter { .openerp .oe_secondary_submenu .oe_active .oe_menu_counter {
background: #eeeeee; background: #eeeeee;
color: #7c7bad; color: #7c7bad;
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);
} }
.openerp .oe_secondary_submenu .oe_menu_toggler:before { .openerp .oe_secondary_submenu .oe_menu_toggler:before {
width: 0; width: 0;
@ -1305,6 +1242,13 @@
.openerp .oe_application > div { .openerp .oe_application > div {
height: 100%; height: 100%;
} }
.openerp .oe_application .oe_breadcrumb_item:not(:last-child) {
display: inline-block;
max-width: 7em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.openerp .oe_view_manager .oe_view_manager_body { .openerp .oe_view_manager .oe_view_manager_body {
height: inherit; height: inherit;
} }
@ -1315,16 +1259,6 @@
width: 100%; width: 100%;
table-layout: fixed; table-layout: fixed;
} }
.openerp .oe_view_manager table.oe_view_manager_header ul {
padding: 0;
margin-right: 0;
margin-top: 0;
margin-bottom: 0;
}
.openerp .oe_view_manager table.oe_view_manager_header ul li {
list-style-type: none;
margin: 0;
}
.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row { .openerp .oe_view_manager table.oe_view_manager_header .oe_header_row {
clear: both; clear: both;
text-shadow: 0 1px 1px white; text-shadow: 0 1px 1px white;
@ -1396,6 +1330,10 @@
float: left; float: left;
margin-right: 8px; margin-right: 8px;
} }
.openerp .oe_view_manager ul.oe_pager_group {
padding: 0;
margin: 0;
}
.openerp .oe_view_manager .oe_pager_group { .openerp .oe_view_manager .oe_pager_group {
float: left; float: left;
height: 24px; height: 24px;
@ -1411,6 +1349,8 @@
height: 24px; height: 24px;
line-height: 24px; line-height: 24px;
padding: 0; padding: 0;
margin: 0;
list-style-type: none;
float: left; float: left;
border-right: 1px solid #ababab; border-right: 1px solid #ababab;
} }
@ -1435,14 +1375,17 @@
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
} }
.openerp .oe_view_manager .oe_view_manager_switch { .openerp .oe_view_manager .oe_view_manager_switch {
margin-left: 8px; padding: 0;
margin: 0 0 0 8px;
} }
.openerp .oe_view_manager .oe_view_manager_switch li { .openerp .oe_view_manager .oe_view_manager_switch li {
text-align: center; margin: 0;
width: 24px; width: 24px;
height: 24px; height: 24px;
line-height: 16px; line-height: 16px;
padding: 0; padding: 0;
text-align: center;
list-style-type: none;
} }
.openerp .oe_view_manager .oe_view_manager_switch li a { .openerp .oe_view_manager .oe_view_manager_switch li a {
position: relative; position: relative;
@ -1502,10 +1445,10 @@
.openerp .oe_view_manager_current > .oe_view_manager_header .oe_header_row:first-child td { .openerp .oe_view_manager_current > .oe_view_manager_header .oe_header_row:first-child td {
padding-top: 8px; padding-top: 8px;
} }
.openerp .oe_view_manager_inline { .openerp .oe_view_manager_inline, .openerp .oe_view_manager_inlineview {
height: 100%; height: 100%;
} }
.openerp .oe_view_manager_inline > .oe_view_manager_header { .openerp .oe_view_manager_inline > .oe_view_manager_header, .openerp .oe_view_manager_inlineview > .oe_view_manager_header {
display: none; display: none;
} }
.openerp .oe_popup_form > .oe_formview > .oe_form_pager { .openerp .oe_popup_form > .oe_formview > .oe_form_pager {
@ -2006,6 +1949,7 @@
.openerp .oe_form header { .openerp .oe_form header {
position: relative; position: relative;
border-bottom: 1px solid #cacaca; border-bottom: 1px solid #cacaca;
padding-left: 2px;
background-color: #fcfcfc; background-color: #fcfcfc;
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede));
background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede);
@ -2018,6 +1962,9 @@
display: inline-block; display: inline-block;
float: right; float: right;
} }
.openerp .oe_form header .oe_form_button {
margin: 3px 2px 1px;
}
.openerp .oe_form div.oe_chatter { .openerp .oe_form div.oe_chatter {
min-width: 650px; min-width: 650px;
max-width: 860px; max-width: 860px;
@ -2037,140 +1984,11 @@
min-width: 150px; min-width: 150px;
} }
.openerp .oe_form div.oe_form_configuration .oe_form_group_cell_label { .openerp .oe_form div.oe_form_configuration .oe_form_group_cell_label {
padding: 2px 0; padding: 1px 0;
} }
.openerp .oe_form div.oe_form_configuration .oe_form_group_cell div div { .openerp .oe_form div.oe_form_configuration .oe_form_group_cell div div {
padding: 1px 0; padding: 1px 0;
} }
.openerp .oe_form ul.oe_form_steps, .openerp .oe_form ul.oe_form_steps_clickable {
display: inline-block;
padding-right: 18px;
}
.openerp .oe_form ul.oe_form_steps li, .openerp .oe_form ul.oe_form_steps_clickable li {
display: inline-block;
margin-right: -20px;
background-color: #fcfcfc;
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede));
background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede);
background-image: -moz-linear-gradient(top, #fcfcfc, #dedede);
background-image: -ms-linear-gradient(top, #fcfcfc, #dedede);
background-image: -o-linear-gradient(top, #fcfcfc, #dedede);
background-image: linear-gradient(to bottom, #fcfcfc, #dedede);
}
.openerp .oe_form ul.oe_form_steps li:first-child .label, .openerp .oe_form ul.oe_form_steps_clickable li:first-child .label {
border-left: 1px solid #cacaca;
padding-left: 14px;
}
.openerp .oe_form ul.oe_form_steps li:last-child, .openerp .oe_form ul.oe_form_steps_clickable li:last-child {
border-right: 1px solid #cacaca;
}
.openerp .oe_form ul.oe_form_steps li:last-child .label, .openerp .oe_form ul.oe_form_steps_clickable li:last-child .label {
padding-right: 14px;
}
.openerp .oe_form ul.oe_form_steps li:last-child .arrow, .openerp .oe_form ul.oe_form_steps_clickable li:last-child .arrow {
display: none;
}
.openerp .oe_form ul.oe_form_steps li .label, .openerp .oe_form ul.oe_form_steps_clickable li .label {
color: #4c4c4c;
text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede;
padding: 7px;
display: inline-block;
padding-left: 24px;
margin: 0;
position: relative;
}
.openerp .oe_form ul.oe_form_steps li .arrow, .openerp .oe_form ul.oe_form_steps_clickable li .arrow {
width: 17px;
display: inline-block;
vertical-align: top;
overflow: hidden;
margin-left: -5px;
}
.openerp .oe_form ul.oe_form_steps li .arrow span, .openerp .oe_form ul.oe_form_steps_clickable li .arrow span {
position: relative;
width: 24px;
height: 24px;
display: inline-block;
margin-left: -12px;
margin-top: 3px;
box-shadow: -1px 1px 2px rgba(255, 255, 255, 0.2), inset -1px 1px 1px rgba(0, 0, 0, 0.2);
background-color: #dedede;
background: -moz-linear-gradient(135deg, #dedede, #fcfcfc);
background: -o-linear-gradient(135deg, #fcfcfc, #dedede);
background: -webkit-gradient(linear, left top, right bottom, from(#fcfcfc), to(#dedede));
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
.openerp .oe_form ul.oe_form_steps li.oe_active, .openerp .oe_form ul.oe_form_steps_clickable li.oe_active {
background-color: #729fcf;
background-image: -webkit-gradient(linear, left top, left bottom, from(#729fcf), to(#3465a4));
background-image: -webkit-linear-gradient(top, #729fcf, #3465a4);
background-image: -moz-linear-gradient(top, #729fcf, #3465a4);
background-image: -ms-linear-gradient(top, #729fcf, #3465a4);
background-image: -o-linear-gradient(top, #729fcf, #3465a4);
background-image: linear-gradient(to bottom, #729fcf, #3465a4);
}
.openerp .oe_form ul.oe_form_steps li.oe_active .arrow span, .openerp .oe_form ul.oe_form_steps_clickable li.oe_active .arrow span {
background-color: #3465a4;
background: -moz-linear-gradient(135deg, #3465a4, #729fcf);
background: -o-linear-gradient(135deg, #729fcf, #3465a4);
background: -webkit-gradient(linear, left top, right bottom, from(#729fcf), to(#3465a4));
}
.openerp .oe_form ul.oe_form_steps li.oe_active .label, .openerp .oe_form ul.oe_form_steps_clickable li.oe_active .label {
color: white;
text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4;
}
.openerp .oe_form ul.oe_form_steps_clickable li {
cursor: pointer;
}
.openerp .oe_form ul.oe_form_steps_clickable li:hover {
background-color: #e8e8e8;
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca));
background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -moz-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -ms-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -o-linear-gradient(top, #e8e8e8, #cacaca);
background-image: linear-gradient(to bottom, #e8e8e8, #cacaca);
}
.openerp .oe_form ul.oe_form_steps_clickable li:hover .label {
text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede;
}
.openerp .oe_form ul.oe_form_steps_clickable li:hover .arrow span {
background-color: #e8e8e8;
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca));
background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -moz-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -ms-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -o-linear-gradient(top, #e8e8e8, #cacaca);
background-image: linear-gradient(to bottom, #e8e8e8, #cacaca);
}
.openerp .oe_form ul.oe_form_steps_clickable li .label {
color: #7c7bad;
}
.openerp .oe_form ul.oe_form_steps_clickable li.oe_active:hover {
background-color: #4c85c2;
background-image: -webkit-gradient(linear, left top, left bottom, from(#4c85c2), to(#284d7d));
background-image: -webkit-linear-gradient(top, #4c85c2, #284d7d);
background-image: -moz-linear-gradient(top, #4c85c2, #284d7d);
background-image: -ms-linear-gradient(top, #4c85c2, #284d7d);
background-image: -o-linear-gradient(top, #4c85c2, #284d7d);
background-image: linear-gradient(to bottom, #4c85c2, #284d7d);
}
.openerp .oe_form ul.oe_form_steps_clickable li.oe_active:hover .label {
text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4;
}
.openerp .oe_form ul.oe_form_steps_clickable li.oe_active:hover .arrow span {
background-color: #284d7d;
background: -moz-linear-gradient(135deg, #284d7d, #4c85c2);
background: -o-linear-gradient(135deg, #4c85c2, #284d7d);
background: -webkit-gradient(linear, left top, right bottom, from(#4c85c2), to(#284d7d));
}
.openerp .oe_form .oe_subtotal_footer { .openerp .oe_form .oe_subtotal_footer {
width: 1% !important; width: 1% !important;
} }
@ -2202,7 +2020,7 @@
} }
.openerp .oe_form td.oe_form_group_cell_label { .openerp .oe_form td.oe_form_group_cell_label {
border-right: 1px solid #dddddd; border-right: 1px solid #dddddd;
padding: 4px 0px 4px 0px; padding: 2px 0px;
} }
.openerp .oe_form td.oe_form_group_cell_label label { .openerp .oe_form td.oe_form_group_cell_label label {
line-height: 18px; line-height: 18px;
@ -2210,7 +2028,7 @@
min-width: 140px; min-width: 140px;
} }
.openerp .oe_form td.oe_form_group_cell + .oe_form_group_cell { .openerp .oe_form td.oe_form_group_cell + .oe_form_group_cell {
padding-left: 6px; padding: 2px 0 2px 8px;
} }
.openerp .oe_form .oe_form_group { .openerp .oe_form .oe_form_group {
width: 100%; width: 100%;
@ -2222,7 +2040,7 @@
.openerp .oe_form .oe_form_label_help[for], .openerp .oe_form .oe_form_label[for] { .openerp .oe_form .oe_form_label_help[for], .openerp .oe_form .oe_form_label[for] {
font-weight: bold; font-weight: bold;
white-space: nowrap; white-space: nowrap;
padding-right: 6px; padding-right: 8px;
} }
.openerp .oe_form .oe_form_label_help[for] span, .openerp .oe_form .oe_form_label[for] span { .openerp .oe_form .oe_form_label_help[for] span, .openerp .oe_form .oe_form_label[for] span {
font-size: 80%; font-size: 80%;
@ -2298,7 +2116,6 @@
width: 100%; width: 100%;
display: inline-block; display: inline-block;
padding: 2px 2px 2px 0px; padding: 2px 2px 2px 0px;
line-height: 1em;
} }
.openerp .oe_form .oe_form_field input { .openerp .oe_form .oe_form_field input {
margin: 0px; margin: 0px;
@ -2459,27 +2276,137 @@
.openerp.ui-autocomplete li:not(.oe_m2o_dropdown_option) + li.oe_m2o_dropdown_option { .openerp.ui-autocomplete li:not(.oe_m2o_dropdown_option) + li.oe_m2o_dropdown_option {
margin-top: 10px; margin-top: 10px;
} }
.openerp .oe_form_field_status { .openerp ul.oe_form_status, .openerp ul.oe_form_status_clickable {
display: inline-block;
margin: 0; margin: 0;
padding: 0; padding: 0 18px 0 0;
} }
.openerp .oe_form_field_status ul, .openerp .oe_form_field_status ol { .openerp ul.oe_form_status li, .openerp ul.oe_form_status_clickable li {
margin: 0; display: inline-block;
padding: 0;
}
.openerp .oe_form_field_status ul ul, .openerp .oe_form_field_status ul ol, .openerp .oe_form_field_status ul li, .openerp .oe_form_field_status ol ul, .openerp .oe_form_field_status ol ol, .openerp .oe_form_field_status ol li {
margin: 0;
padding: 0;
}
.openerp .oe_form_field_status ul li, .openerp .oe_form_field_status ol li {
list-style-type: none; list-style-type: none;
} margin: 0 -20px 0 0;
.openerp .oe_form_field_status ul, .openerp .oe_form_field_status ol, .openerp .oe_form_field_status li {
margin: 0;
padding: 0; padding: 0;
background-color: #fcfcfc;
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede));
background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede);
background-image: -moz-linear-gradient(top, #fcfcfc, #dedede);
background-image: -ms-linear-gradient(top, #fcfcfc, #dedede);
background-image: -o-linear-gradient(top, #fcfcfc, #dedede);
background-image: linear-gradient(to bottom, #fcfcfc, #dedede);
} }
.openerp .oe_form_field_status li { .openerp ul.oe_form_status li:first-child .label, .openerp ul.oe_form_status_clickable li:first-child .label {
list-style-type: none; border-left: 1px solid #cacaca;
padding-left: 14px;
}
.openerp ul.oe_form_status li:last-child, .openerp ul.oe_form_status_clickable li:last-child {
border-right: 1px solid #cacaca;
}
.openerp ul.oe_form_status li:last-child .label, .openerp ul.oe_form_status_clickable li:last-child .label {
padding-right: 14px;
}
.openerp ul.oe_form_status li:last-child .arrow, .openerp ul.oe_form_status_clickable li:last-child .arrow {
display: none;
}
.openerp ul.oe_form_status li .label, .openerp ul.oe_form_status_clickable li .label {
color: #4c4c4c;
text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede;
padding: 7px;
display: inline-block;
padding-left: 24px;
margin: 0;
position: relative;
}
.openerp ul.oe_form_status li .arrow, .openerp ul.oe_form_status_clickable li .arrow {
width: 17px;
display: inline-block;
vertical-align: top;
overflow: hidden;
margin-left: -5px;
}
.openerp ul.oe_form_status li .arrow span, .openerp ul.oe_form_status_clickable li .arrow span {
position: relative;
width: 24px;
height: 24px;
display: inline-block;
margin-left: -12px;
margin-top: 3px;
box-shadow: -1px 1px 2px rgba(255, 255, 255, 0.2), inset -1px 1px 1px rgba(0, 0, 0, 0.2);
background-color: #dedede;
background: -moz-linear-gradient(135deg, #dedede, #fcfcfc);
background: -o-linear-gradient(135deg, #fcfcfc, #dedede);
background: -webkit-gradient(linear, left top, right bottom, from(#fcfcfc), to(#dedede));
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
.openerp ul.oe_form_status li.oe_active, .openerp ul.oe_form_status_clickable li.oe_active {
background-color: #729fcf;
background-image: -webkit-gradient(linear, left top, left bottom, from(#729fcf), to(#3465a4));
background-image: -webkit-linear-gradient(top, #729fcf, #3465a4);
background-image: -moz-linear-gradient(top, #729fcf, #3465a4);
background-image: -ms-linear-gradient(top, #729fcf, #3465a4);
background-image: -o-linear-gradient(top, #729fcf, #3465a4);
background-image: linear-gradient(to bottom, #729fcf, #3465a4);
}
.openerp ul.oe_form_status li.oe_active .arrow span, .openerp ul.oe_form_status_clickable li.oe_active .arrow span {
background-color: #3465a4;
background: -moz-linear-gradient(135deg, #3465a4, #729fcf);
background: -o-linear-gradient(135deg, #729fcf, #3465a4);
background: -webkit-gradient(linear, left top, right bottom, from(#729fcf), to(#3465a4));
}
.openerp ul.oe_form_status li.oe_active .label, .openerp ul.oe_form_status_clickable li.oe_active .label {
color: white;
text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4;
}
.openerp ul.oe_form_status_clickable li {
cursor: pointer;
}
.openerp ul.oe_form_status_clickable li:hover {
background-color: #e8e8e8;
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca));
background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -moz-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -ms-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -o-linear-gradient(top, #e8e8e8, #cacaca);
background-image: linear-gradient(to bottom, #e8e8e8, #cacaca);
}
.openerp ul.oe_form_status_clickable li:hover .label {
text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede;
}
.openerp ul.oe_form_status_clickable li:hover .arrow span {
background-color: #e8e8e8;
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca));
background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -moz-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -ms-linear-gradient(top, #e8e8e8, #cacaca);
background-image: -o-linear-gradient(top, #e8e8e8, #cacaca);
background-image: linear-gradient(to bottom, #e8e8e8, #cacaca);
}
.openerp ul.oe_form_status_clickable li .label {
color: #7c7bad;
}
.openerp ul.oe_form_status_clickable li.oe_active:hover {
background-color: #4c85c2;
background-image: -webkit-gradient(linear, left top, left bottom, from(#4c85c2), to(#284d7d));
background-image: -webkit-linear-gradient(top, #4c85c2, #284d7d);
background-image: -moz-linear-gradient(top, #4c85c2, #284d7d);
background-image: -ms-linear-gradient(top, #4c85c2, #284d7d);
background-image: -o-linear-gradient(top, #4c85c2, #284d7d);
background-image: linear-gradient(to bottom, #4c85c2, #284d7d);
}
.openerp ul.oe_form_status_clickable li.oe_active:hover .label {
text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4;
}
.openerp ul.oe_form_status_clickable li.oe_active:hover .arrow span {
background-color: #284d7d;
background: -moz-linear-gradient(135deg, #284d7d, #4c85c2);
background: -o-linear-gradient(135deg, #4c85c2, #284d7d);
background: -webkit-gradient(linear, left top, right bottom, from(#4c85c2), to(#284d7d));
} }
.openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page { .openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page {
display: none; display: none;
@ -2541,7 +2468,7 @@
.openerp .oe_list.oe_list_editable.oe_editing .oe_m2o_cm_button { .openerp .oe_list.oe_list_editable.oe_editing .oe_m2o_cm_button {
display: none; display: none;
} }
.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input { .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea {
height: 27px; height: 27px;
} }
.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea {
@ -2551,9 +2478,6 @@
border: 1px solid #aaaaff; border: 1px solid #aaaaff;
margin: 0; margin: 0;
} }
.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea {
height: 60px;
}
.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_float input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_view_integer input { .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_float input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_view_integer input {
text-align: right; text-align: right;
} }
@ -2570,10 +2494,13 @@
.openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { .openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page {
display: none; display: none;
} }
.openerp .oe_list_buttons .oe_alternative {
visibility: hidden;
}
.openerp .oe_list_buttons .oe_list_save, .openerp .oe_list_buttons .oe_list_discard { .openerp .oe_list_buttons .oe_list_save, .openerp .oe_list_buttons .oe_list_discard {
display: none; display: none;
} }
.openerp .oe_list_buttons.oe_editing .oe_list_add, .openerp .oe_list_buttons.oe_editing .oe_list_button_import { .openerp .oe_list_buttons.oe_editing .oe_list_add {
display: none; display: none;
} }
.openerp .oe_list_buttons.oe_editing .oe_list_save { .openerp .oe_list_buttons.oe_editing .oe_list_save {
@ -2582,6 +2509,9 @@
.openerp .oe_list_buttons.oe_editing .oe_list_discard { .openerp .oe_list_buttons.oe_editing .oe_list_discard {
display: inline; display: inline;
} }
.openerp .oe_list_buttons.oe_editing .oe_alternative {
visibility: visible;
}
.openerp .oe_list { .openerp .oe_list {
position: relative; position: relative;
} }
@ -2596,6 +2526,15 @@
margin: 0 !important; margin: 0 !important;
padding: 0; padding: 0;
} }
.openerp .oe_list .oe_list_content .oe_group_header {
background-color: #fcfcfc;
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede));
background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede);
background-image: -moz-linear-gradient(top, #fcfcfc, #dedede);
background-image: -ms-linear-gradient(top, #fcfcfc, #dedede);
background-image: -o-linear-gradient(top, #fcfcfc, #dedede);
background-image: linear-gradient(to bottom, #fcfcfc, #dedede);
}
.openerp .oe_list_content { .openerp .oe_list_content {
width: 100%; width: 100%;
} }
@ -2813,16 +2752,6 @@
float: right; float: right;
color: #333333; color: #333333;
} }
.openerp .oe_semantic_html li {
list-style-type: disc;
display: list-item;
}
.openerp .oe_semantic_html ul {
padding-left: 1em;
}
.openerp .oe_semantic_html p {
color: #4c4c4c !important;
}
.kitten-mode-activated { .kitten-mode-activated {
background-image: url(http://placekitten.com/g/1365/769); background-image: url(http://placekitten.com/g/1365/769);

View File

@ -124,19 +124,6 @@ $sheet-max-width: 860px
content: $icon-name content: $icon-name
color: $color color: $color
@mixin ul-html-override()
margin: 0
padding: 0
ul, ol, li
margin: 0
padding: 0
li
list-style-type: none
@mixin semantic-html-override()
ul, ol
@include ul-html-override()
// }}} // }}}
@media print @media print
@ -200,10 +187,6 @@ $sheet-max-width: 860px
vertical-align: middle vertical-align: middle
h4 h4
margin: 4px 0 margin: 4px 0
.oe_semantic_html_override
@include semantic-html-override
ul.oe_semantic_html_override
@include ul-html-override
// }}} // }}}
// Button style {{{ // Button style {{{
a.button:link, a.button:visited, button, input[type='submit'], .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button a.button:link, a.button:visited, button, input[type='submit'], .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button
@ -283,7 +266,7 @@ $sheet-max-width: 860px
margin: 0 margin: 0
@include radius(0 0 2px 2px) @include radius(0 0 2px 2px)
button button
margin: 0 margin: 0 4px 0 0
.ui-dialog-buttonset .ui-dialog-buttonset
float: left float: left
.ui-button .ui-button
@ -379,15 +362,15 @@ $sheet-max-width: 860px
color: white color: white
background: #DC5F59 background: #DC5F59
button.oe_highlight button.oe_highlight
@include vertical-gradient(#dc5f59, #b33630) border: 1px solid #795151
@include box-shadow(none) @include vertical-gradient(#df3f3f, #a21a1a)
button.oe_highlight:active @include box-shadow((0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset))
@include vertical-gradient(#b33630, #dc5f59)
@include box-shadow(none)
button.oe_highlight:hover button.oe_highlight:hover
@include vertical-gradient(#DF6B66, #BF3A33) @include vertical-gradient(lighten(#e04f4f, 2%), lighten(#a21a1a, 2%))
//@include vertical-gradient(lighten(#dc5f59, 3%), lighten(#b33630, 3%)) button.oe_highlight:active
@include box-shadow(0 0 1px rgba(0, 0, 0, 0.2)) @include vertical-gradient(lighten(#a21a1a, 8%), darken(#df3f3f, 8%))
.oe_background_grey
background: #eee !important
.oe_form_dirty .oe_form_dirty
.oe_highlight_on_dirty .oe_highlight_on_dirty
@ -418,7 +401,7 @@ $sheet-max-width: 860px
max-height: 90px max-height: 90px
max-width: 90px max-width: 90px
@include radius(3px) @include radius(3px)
@include box-shadow(0 1px 3px rgba(0, 0, 0, 0.3)) @include box-shadow(0 1px 4px rgba(0, 0, 0, 0.4))
border: none border: none
margin-bottom: 10px margin-bottom: 10px
.oe_avatar + div .oe_avatar + div
@ -509,8 +492,6 @@ $sheet-max-width: 860px
padding: 0 16px padding: 0 16px
list-style: none list-style: none
zoom: 1 zoom: 1
@include ul-html-override
@include semantic-html-override
.oe_notebook.ui-corner-all .oe_notebook.ui-corner-all
@include radius(0) @include radius(0)
.oe_notebook:before, .oe_notebook:after .oe_notebook:before, .oe_notebook:after
@ -568,6 +549,8 @@ $sheet-max-width: 860px
top: 26px top: 26px
left: 0 left: 0
z-index: 1 z-index: 1
margin: 0
padding: 0
border: 1px solid $tag-border border: 1px solid $tag-border
background: white background: white
padding: 4px 0 padding: 4px 0
@ -583,6 +566,7 @@ $sheet-max-width: 860px
float: none float: none
display: block display: block
position: relative position: relative
margin: 0
padding: 2px 8px padding: 2px 8px
> a > a
white-space: nowrap white-space: nowrap
@ -671,9 +655,10 @@ $sheet-max-width: 860px
text-align: center text-align: center
font-size: 14px font-size: 14px
height: 100% height: 100%
li ul, li
margin: 0
list-style-type: none list-style-type: none
padding-bottom: 4px padding: 0 0 4px 0
button button
float: right float: right
display: inline-block display: inline-block
@ -690,7 +675,7 @@ $sheet-max-width: 860px
font-family: "Lucida Grande", Helvetica, Verdana, Arial font-family: "Lucida Grande", Helvetica, Verdana, Arial
border: 1px solid #999999 border: 1px solid #999999
background: whitesmoke background: whitesmoke
@include box-shadow(inset 0 1px 4px rgba(0, 0, 0, 0.3)) @include box-shadow(inset 0 1px 4px rgba(0, 0, 0, 0.4))
@include radius(3px) @include radius(3px)
input input
margin-bottom: 9px margin-bottom: 9px
@ -731,7 +716,6 @@ $sheet-max-width: 860px
text-align: left text-align: left
@include radius(8px) @include radius(8px)
@include box-shadow(0 0 18px rgba(0, 0, 0, 0.9)) @include box-shadow(0 0 18px rgba(0, 0, 0, 0.9))
@include semantic-html-override
h2 h2
margin-top: 0 margin-top: 0
font-size: 18px font-size: 18px
@ -795,9 +779,7 @@ $sheet-max-width: 860px
.oe_topbar .oe_topbar
width: 100% width: 100%
height: 31px height: 31px
border-top: solid 1px #d3d3d3
@include vertical-gradient(#646060, #262626) @include vertical-gradient(#646060, #262626)
@include semantic-html-override
.oe_topbar_item .oe_topbar_item
display: block display: block
padding: 5px 10px 7px padding: 5px 10px 7px
@ -848,7 +830,6 @@ $sheet-max-width: 860px
border-right: 1px solid $tag-border border-right: 1px solid $tag-border
text-shadow: 0 1px 1px white text-shadow: 0 1px 1px white
padding-bottom: 16px padding-bottom: 16px
@include semantic-html-override
a.oe_logo a.oe_logo
width: 220px width: 220px
display: block display: block
@ -899,6 +880,9 @@ $sheet-max-width: 860px
padding: 0 padding: 0
margin: 0 margin: 0
> li > li
list-style-type: none
padding: 0
margin: 0
float: left float: left
> a > a
display: block display: block
@ -928,7 +912,9 @@ $sheet-max-width: 860px
display: inline-block display: inline-block
li li
position: relative position: relative
margin: 0
padding: 1px 0 1px 20px !important padding: 1px 0 1px 20px !important
list-style-type: none
a a
display: block display: block
color: #4c4c4c color: #4c4c4c
@ -949,18 +935,18 @@ $sheet-max-width: 860px
.oe_menu_counter .oe_menu_counter
float: right float: right
text-shadow: 0 1px 1px rgba(0,0,0,0.2) text-shadow: 0 1px 1px rgba(0,0,0,0.2)
margin: 0px margin: 1px
padding: 1px 4px padding: 1px 4px
border: none
&:hover &:hover
cursor: pointer cursor: pointer
border: 1px solid #C81010 @include transform(scale(1.1))
@include box-shadow(0 0 2px #C81010)
.oe_active .oe_active
background: $link-color
border-top: 1px solid lightGray border-top: 1px solid lightGray
border-bottom: 1px solid lightGray border-bottom: 1px solid #dedede
text-shadow: 0 1px 1px rgba(0,0,0,0.2) text-shadow: 0 1px 1px rgba(0,0,0,0.2)
@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, 0.2)) @include box-shadow((inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2)))
background: $link-color
a a
color: white color: white
.oe_menu_label .oe_menu_label
@ -971,6 +957,7 @@ $sheet-max-width: 860px
.oe_menu_counter .oe_menu_counter
background: #eee background: #eee
color: $link-color color: $link-color
@include box-shadow(inset 0 1px 2px rgba(0, 0, 0, 0.2))
.oe_menu_toggler:before .oe_menu_toggler:before
width: 0 width: 0
height: 0 height: 0
@ -1002,6 +989,12 @@ $sheet-max-width: 860px
text-decoration: underline text-decoration: underline
> div > div
height: 100% height: 100%
.oe_breadcrumb_item:not(:last-child)
display: inline-block
max-width: 7em
white-space: nowrap
overflow: hidden
text-overflow: ellipsis
// }}} // }}}
// ViewManager common {{{ // ViewManager common {{{
.oe_view_manager .oe_view_manager
@ -1013,14 +1006,6 @@ $sheet-max-width: 860px
table.oe_view_manager_header table.oe_view_manager_header
width: 100% width: 100%
table-layout: fixed table-layout: fixed
ul
padding: 0
margin-right: 0
margin-top: 0
margin-bottom: 0
li
list-style-type: none
margin: 0
.oe_header_row .oe_header_row
//min-height: 26px //min-height: 26px
//line-height: 26px //line-height: 26px
@ -1075,6 +1060,9 @@ $sheet-max-width: 860px
.oe_pager_value .oe_pager_value
float: left float: left
margin-right: 8px margin-right: 8px
ul.oe_pager_group
padding: 0
margin: 0
.oe_pager_group .oe_pager_group
float: left float: left
height: 24px height: 24px
@ -1087,6 +1075,8 @@ $sheet-max-width: 860px
height: 24px height: 24px
line-height: 24px line-height: 24px
padding: 0 padding: 0
margin: 0
list-style-type: none
float: left float: left
border-right: 1px solid #ababab border-right: 1px solid #ababab
&:last-child &:last-child
@ -1105,13 +1095,16 @@ $sheet-max-width: 860px
// }}} // }}}
// ViewManager.switches {{{ // ViewManager.switches {{{
.oe_view_manager_switch .oe_view_manager_switch
margin-left: 8px padding: 0
margin: 0 0 0 8px
li li
text-align: center margin: 0
width: 24px width: 24px
height: 24px height: 24px
line-height: 16px line-height: 16px
padding: 0 padding: 0
text-align: center
list-style-type: none
a a
position: relative position: relative
.oe_vm_switch_list:after, .oe_vm_switch_tree:after .oe_vm_switch_list:after, .oe_vm_switch_tree:after
@ -1156,7 +1149,7 @@ $sheet-max-width: 860px
padding-top: 8px padding-top: 8px
// }}} // }}}
// ViewManager inline {{{ // ViewManager inline {{{
.oe_view_manager_inline .oe_view_manager_inline, .oe_view_manager_inlineview
height: 100% height: 100%
> .oe_view_manager_header > .oe_view_manager_header
display: none display: none
@ -1546,10 +1539,13 @@ $sheet-max-width: 860px
header header
position: relative position: relative
border-bottom: 1px solid #cacaca border-bottom: 1px solid #cacaca
padding-left: 2px
@include vertical-gradient(#fcfcfc, #dedede) @include vertical-gradient(#fcfcfc, #dedede)
ul ul
display: inline-block display: inline-block
float: right float: right
.oe_form_button
margin: 3px 2px 1px
div.oe_chatter div.oe_chatter
min-width: 650px min-width: 650px
max-width: $sheet-max-width max-width: $sheet-max-width
@ -1566,75 +1562,9 @@ $sheet-max-width: 860px
label label
min-width: 150px min-width: 150px
.oe_form_group_cell_label .oe_form_group_cell_label
padding: 2px 0 padding: 1px 0
.oe_form_group_cell div div .oe_form_group_cell div div
padding: 1px 0 padding: 1px 0
ul.oe_form_steps, ul.oe_form_steps_clickable
display: inline-block
padding-right: 18px
li
display: inline-block
margin-right: -20px
@include vertical-gradient(#fcfcfc, #dedede)
&:first-child .label
border-left: 1px solid #cacaca
padding-left: 14px
&:last-child
border-right: 1px solid #cacaca
.label
padding-right: 14px
.arrow
display: none
.label
color: #4c4c4c
text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede
padding: 7px
display: inline-block
padding-left: 24px
margin: 0
position: relative
.arrow
width: 17px
display: inline-block
vertical-align: top
overflow: hidden
margin-left: -5px
span
position: relative
width: 24px
height: 24px
display: inline-block
margin-left: -12px
margin-top: 3px
box-shadow: -1px 1px 2px rgba(255,255,255,0.2), inset -1px 1px 1px rgba(0,0,0,0.2)
@include skew-gradient(#fcfcfc, #dedede)
@include radius(3px)
@include transform(rotate(45deg))
li.oe_active
@include vertical-gradient(#729fcf, #3465a4)
.arrow span
@include skew-gradient(#729fcf, #3465a4)
.label
color: white
text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4
ul.oe_form_steps_clickable
li
cursor: pointer
&:hover
@include vertical-gradient(darken(#fcfcfc, 8%), darken(#dedede, 8%))
.label
text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede
.arrow span
@include vertical-gradient(darken(#fcfcfc, 8%), darken(#dedede, 8%))
.label
color: $link-color
li.oe_active
&:hover
@include vertical-gradient(darken(#729fcf, 10%), darken(#3465a4, 10%))
.label
text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4
.arrow span
@include skew-gradient(darken(#729fcf, 10%), darken(#3465a4, 10%))
.oe_subtotal_footer .oe_subtotal_footer
width: 1% !important width: 1% !important
td.oe_form_group_cell td.oe_form_group_cell
@ -1662,13 +1592,13 @@ $sheet-max-width: 860px
margin: 2px margin: 2px
td.oe_form_group_cell_label td.oe_form_group_cell_label
border-right: 1px solid #ddd border-right: 1px solid #ddd
padding: 4px 0px 4px 0px padding: 2px 0px
label label
line-height: 18px line-height: 18px
display: block display: block
min-width: 140px min-width: 140px
td.oe_form_group_cell + .oe_form_group_cell td.oe_form_group_cell + .oe_form_group_cell
padding-left: 6px padding: 2px 0 2px 8px
.oe_form_group .oe_form_group
width: 100% width: 100%
margin: 9px 0 9px 0 margin: 9px 0 9px 0
@ -1680,7 +1610,7 @@ $sheet-max-width: 860px
.oe_form_label_help[for], .oe_form_label[for] .oe_form_label_help[for], .oe_form_label[for]
font-weight: bold font-weight: bold
white-space: nowrap white-space: nowrap
padding-right: 6px padding-right: 8px
span span
font-size: 80% font-size: 80%
color: darkGreen color: darkGreen
@ -1743,7 +1673,6 @@ $sheet-max-width: 860px
width: 100% width: 100%
display: inline-block display: inline-block
padding: 2px 2px 2px 0px padding: 2px 2px 2px 0px
line-height: 1em
input input
margin: 0px margin: 0px
input[type="text"], input[type="password"], input[type="file"], select input[type="text"], input[type="password"], input[type="file"], select
@ -1877,9 +1806,75 @@ $sheet-max-width: 860px
margin-top: 10px margin-top: 10px
// }}} // }}}
// FormView.fieldstatus {{{ // FormView.fieldstatus {{{
.oe_form_field_status ul.oe_form_status, ul.oe_form_status_clickable
@include semantic-html-override display: inline-block
@include ul-html-override margin: 0
padding: 0 18px 0 0
li
display: inline-block
list-style-type: none
margin: 0 -20px 0 0
padding: 0
@include vertical-gradient(#fcfcfc, #dedede)
&:first-child .label
border-left: 1px solid #cacaca
padding-left: 14px
&:last-child
border-right: 1px solid #cacaca
.label
padding-right: 14px
.arrow
display: none
.label
color: #4c4c4c
text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede
padding: 7px
display: inline-block
padding-left: 24px
margin: 0
position: relative
.arrow
width: 17px
display: inline-block
vertical-align: top
overflow: hidden
margin-left: -5px
span
position: relative
width: 24px
height: 24px
display: inline-block
margin-left: -12px
margin-top: 3px
box-shadow: -1px 1px 2px rgba(255,255,255,0.2), inset -1px 1px 1px rgba(0,0,0,0.2)
@include skew-gradient(#fcfcfc, #dedede)
@include radius(3px)
@include transform(rotate(45deg))
li.oe_active
@include vertical-gradient(#729fcf, #3465a4)
.arrow span
@include skew-gradient(#729fcf, #3465a4)
.label
color: white
text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4
ul.oe_form_status_clickable
li
cursor: pointer
&:hover
@include vertical-gradient(darken(#fcfcfc, 8%), darken(#dedede, 8%))
.label
text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede
.arrow span
@include vertical-gradient(darken(#fcfcfc, 8%), darken(#dedede, 8%))
.label
color: $link-color
li.oe_active
&:hover
@include vertical-gradient(darken(#729fcf, 10%), darken(#3465a4, 10%))
.label
text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4
.arrow span
@include skew-gradient(darken(#729fcf, 10%), darken(#3465a4, 10%))
// }}} // }}}
// FormView.one2many {{{ // FormView.one2many {{{
.oe_form .oe_form_field_one2many > .oe_view_manager .oe_form .oe_form_field_one2many > .oe_view_manager
@ -1943,14 +1938,12 @@ $sheet-max-width: 860px
.oe_m2o_cm_button .oe_m2o_cm_button
display: none display: none
.oe_form_field .oe_form_field
input input, textarea
height: $row-height height: $row-height
input, textarea input, textarea
@include radius(0) @include radius(0)
border: 1px solid #aaf border: 1px solid #aaf
margin: 0 margin: 0
textarea
height: 60px
&.oe_form_field_float,&.oe_form_view_integer &.oe_form_field_float,&.oe_form_view_integer
input input
text-align: right text-align: right
@ -1970,15 +1963,19 @@ $sheet-max-width: 860px
// }}} // }}}
// ListView {{{ // ListView {{{
.oe_list_buttons .oe_list_buttons
.oe_alternative
visibility: hidden
.oe_list_save, .oe_list_discard .oe_list_save, .oe_list_discard
display: none display: none
&.oe_editing &.oe_editing
.oe_list_add, .oe_list_button_import .oe_list_add
display: none display: none
.oe_list_save .oe_list_save
display: inline-block display: inline-block
.oe_list_discard .oe_list_discard
display: inline display: inline
.oe_alternative
visibility: visible
.oe_list .oe_list
position: relative position: relative
@ -1992,6 +1989,8 @@ $sheet-max-width: 860px
position: absolute position: absolute
margin: 0 !important // dammit margin: 0 !important // dammit
padding: 0 padding: 0
.oe_list_content .oe_group_header
@include vertical-gradient(#fcfcfc, #dedede)
.oe_list_content .oe_list_content
width: 100% width: 100%
@ -2051,6 +2050,7 @@ $sheet-max-width: 860px
> tr:nth-child(odd) > tr:nth-child(odd)
background-color: #f0f0fa background-color: #f0f0fa
@include vertical-gradient(#f0f0fa, #eeeef6) @include vertical-gradient(#f0f0fa, #eeeef6)
> tfoot > tfoot
border-top: 2px solid #cacaca border-top: 2px solid #cacaca
border-bottom: 1px solid #cacaca border-bottom: 1px solid #cacaca
@ -2162,15 +2162,6 @@ $sheet-max-width: 860px
float: right float: right
color: #333 color: #333
// }}} // }}}
.oe_semantic_html // a style to use normal html
li
list-style-type: disc
display: list-item
ul
padding-left: 1em
p
color: #4C4C4C !important
// Kitten Mode {{{ // Kitten Mode {{{
.kitten-mode-activated .kitten-mode-activated
background-image: url(http://placekitten.com/g/1365/769) background-image: url(http://placekitten.com/g/1365/769)

View File

@ -1,46 +0,0 @@
.openerp .oe_import_grid {
border: none;
border-collapse: collapse;
}
.openerp .oe_import_grid-header .oe_import_grid-cell {
background: url(../img/gradientlinebg.gif) repeat-x #CCCCCC;
border-bottom: 1px solid #E3E3E3;
font-weight: bold;
text-align: left;
}
.openerp .oe_import_grid-row .oe_import_grid-cell {
border-bottom: 1px solid #E3E3E3;
}
.openerp .oe_import_no_result .oe_import_result {
display: none;
}
.openerp .oe_import fieldset {
cursor: pointer;
}
.openerp .oe_import fieldset legend:before {
content: '\25BC ';
}
.openerp .oe_import fieldset.oe_closed legend:before {
content: '\25B6 ';
}
.openerp .oe_import fieldset.oe_closed table {
display: none;
}
.openerp .oe_import .separator.horizontal {
font-weight: bold;
border-bottom-width: 1px;
margin: 6px 4px 6px 1px;
height: 20px;
}
.openerp .duplicate_fld{
background-color:#FF6666;
}
.openerp .select_fld{
background: none repeat scroll 0 0 white;
}
.openerp .ui-autocomplete {
max-height: 300px;
overflow-y: auto;
padding-right: 20px;
}

View File

@ -731,6 +731,8 @@ instance.web.Menu = instance.web.Widget.extend({
* @param {Number} id database id of the terminal menu to select * @param {Number} id database id of the terminal menu to select
*/ */
open_menu: function (id) { open_menu: function (id) {
this.current_menu = id;
this.session.active_id = id;
var $clicked_menu, $sub_menu, $main_menu; var $clicked_menu, $sub_menu, $main_menu;
$clicked_menu = this.$el.add(this.$secondary_menus).find('a[data-menu=' + id + ']'); $clicked_menu = this.$el.add(this.$secondary_menus).find('a[data-menu=' + id + ']');
this.trigger('open_menu', id, $clicked_menu); this.trigger('open_menu', id, $clicked_menu);
@ -803,16 +805,15 @@ instance.web.Menu = instance.web.Widget.extend({
} }
} }
} }
this.open_menu(id);
this.current_menu = id;
this.session.active_id = id;
if (action_id) { if (action_id) {
this.trigger('menu_click', { this.trigger('menu_click', {
action_id: action_id, action_id: action_id,
needaction: needaction, needaction: needaction,
id: id id: id,
previous_menu_id: this.current_menu // Here we don't know if action will fail (in which case we have to revert menu)
}, $item); }, $item);
} }
this.open_menu(id);
}, },
/** /**
* Jquery event handler for menu click * Jquery event handler for menu click
@ -870,10 +871,12 @@ instance.web.UserMenu = instance.web.Widget.extend({
}, },
on_menu_settings: function() { on_menu_settings: function() {
var self = this; var self = this;
if (!this.getParent().has_uncommitted_changes()) {
self.rpc("/web/action/load", { action_id: "base.action_res_users_my" }, function(result) { self.rpc("/web/action/load", { action_id: "base.action_res_users_my" }, function(result) {
result.result.res_id = instance.session.uid; result.result.res_id = instance.session.uid;
self.getParent().action_manager.do_action(result.result); self.getParent().action_manager.do_action(result.result);
}); });
}
}, },
on_menu_about: function() { on_menu_about: function() {
var self = this; var self = this;
@ -951,7 +954,10 @@ instance.web.Client = instance.web.Widget.extend({
}, },
toggle_bars: function(value) { toggle_bars: function(value) {
this.$('tr:has(td.oe_topbar),.oe_leftbar').toggle(value); this.$('tr:has(td.oe_topbar),.oe_leftbar').toggle(value);
} },
has_uncommitted_changes: function() {
return false;
},
}); });
instance.web.WebClient = instance.web.Client.extend({ instance.web.WebClient = instance.web.Client.extend({
@ -963,6 +969,9 @@ instance.web.WebClient = instance.web.Client.extend({
start: function() { start: function() {
var self = this; var self = this;
return $.when(this._super()).pipe(function() { return $.when(this._super()).pipe(function() {
self.$el.on('click', '.oe_logo', function() {
self.action_manager.do_action('home');
});
if (jQuery.param !== undefined && jQuery.deparam(jQuery.param.querystring()).kitten !== undefined) { if (jQuery.param !== undefined && jQuery.deparam(jQuery.param.querystring()).kitten !== undefined) {
$("body").addClass("kitten-mode-activated"); $("body").addClass("kitten-mode-activated");
if ($.blockUI) { if ($.blockUI) {
@ -1048,11 +1057,13 @@ instance.web.WebClient = instance.web.Client.extend({
}, },
on_logout: function() { on_logout: function() {
var self = this; var self = this;
if (!this.has_uncommitted_changes()) {
this.session.session_logout().then(function () { this.session.session_logout().then(function () {
$(window).unbind('hashchange', self.on_hashchange); $(window).unbind('hashchange', self.on_hashchange);
self.do_push_state({}); self.do_push_state({});
window.location.reload(); window.location.reload();
}); });
}
}, },
bind_hashchange: function() { bind_hashchange: function() {
var self = this; var self = this;
@ -1095,14 +1106,15 @@ instance.web.WebClient = instance.web.Client.extend({
}, },
on_menu_action: function(options) { on_menu_action: function(options) {
var self = this; var self = this;
this.rpc("/web/action/load", { action_id: options.action_id }) return this.rpc("/web/action/load", { action_id: options.action_id })
.then(function (result) { .pipe(function (result) {
var action = result.result; var action = result.result;
if (options.needaction) { if (options.needaction) {
action.context.search_default_needaction_pending = true; action.context.search_default_needaction_pending = true;
} }
self.action_manager.clear_breadcrumbs(); return $.when(self.action_manager.do_action(action, null, true)).fail(function() {
self.action_manager.do_action(action); self.menu.open_menu(options.previous_menu_id);
});
}); });
}, },
do_action: function(action) { do_action: function(action) {
@ -1122,7 +1134,16 @@ instance.web.WebClient = instance.web.Client.extend({
$(".oe_webclient", this.$el).removeClass("oe_content_full_screen"); $(".oe_webclient", this.$el).removeClass("oe_content_full_screen");
$("body").css({'overflow-y':'scroll'}); $("body").css({'overflow-y':'scroll'});
} }
},
has_uncommitted_changes: function() {
var $e = $.Event('clear_uncommitted_changes');
instance.web.bus.trigger('clear_uncommitted_changes', $e);
if ($e.isDefaultPrevented()) {
return true;
} else {
return this._super.apply(this, arguments);
} }
},
}); });
instance.web.EmbeddedClient = instance.web.Client.extend({ instance.web.EmbeddedClient = instance.web.Client.extend({

View File

@ -585,7 +585,7 @@ instance.session.on('module_loaded', this, function () {
/** Setup blockui */ /** Setup blockui */
if ($.blockUI) { if ($.blockUI) {
$.blockUI.defaults.baseZ = 1100; $.blockUI.defaults.baseZ = 1100;
$.blockUI.defaults.message = '<div class="oe_blockui_spin_container">'; $.blockUI.defaults.message = '<div class="openerp oe_blockui_spin_container" style="background-color: transparent;">';
$.blockUI.defaults.css.border = '0'; $.blockUI.defaults.css.border = '0';
$.blockUI.defaults.css["background-color"] = ''; $.blockUI.defaults.css["background-color"] = '';
} }
@ -597,7 +597,8 @@ var messages_by_seconds = function() {
[60, _t("Still loading...<br />Please be patient.")], [60, _t("Still loading...<br />Please be patient.")],
[120, _t("Don't leave yet,<br />it's still loading...")], [120, _t("Don't leave yet,<br />it's still loading...")],
[300, _t("You may not believe it,<br />but the application is actually loading...")], [300, _t("You may not believe it,<br />but the application is actually loading...")],
[600, _t("Take a minute to get a coffee,<br />because it's loading...")], [420, _t("Take a minute to get a coffee,<br />because it's loading...")],
[600, _t("It's loading...<br />By the way, did you tried the kitten mode?")],
[3600, _t("Maybe you should consider pressing F5...")], [3600, _t("Maybe you should consider pressing F5...")],
]; ];
}; };

View File

@ -417,6 +417,7 @@ instance.web.data = {
var group_size = fixed_group[grouping_field + '_count'] || fixed_group.__count || 0; var group_size = fixed_group[grouping_field + '_count'] || fixed_group.__count || 0;
var leaf_group = fixed_group.__context.group_by.length === 0; var leaf_group = fixed_group.__context.group_by.length === 0;
this.attributes = { this.attributes = {
folded: !!(fixed_group.__fold),
grouped_on: grouping_field, grouped_on: grouping_field,
// if terminal group (or no group) and group_by_no_leaf => use group.__count // if terminal group (or no group) and group_by_no_leaf => use group.__count
length: group_size, length: group_size,
@ -494,6 +495,7 @@ instance.web.DataGroup = instance.web.CallbackEnabled.extend( /** @lends opener
{ {
__context: child_context, __context: child_context,
__domain: group.model.domain(), __domain: group.model.domain(),
folded: group.get('folded'),
grouped_on: group.get('grouped_on'), grouped_on: group.get('grouped_on'),
length: group.get('length'), length: group.get('length'),
value: group.get('value'), value: group.get('value'),

View File

@ -1,393 +0,0 @@
openerp.web.data_import = function(instance) {
var QWeb = instance.web.qweb,
_t = instance.web._t;
/**
* Safari does not deal well at all with raw JSON data being returned. As a
* result, we're going to cheat by using a pseudo-jsonp: instead of getting
* JSON data in the iframe, we're getting a ``script`` tag which consists of a
* function call and the returned data (the json dump).
*
* The function is an auto-generated name bound to ``window``, which calls
* back into the callback provided here.
*
* @param {Object} form the form element (DOM or jQuery) to use in the call
* @param {Object} attributes jquery.form attributes object
* @param {Function} callback function to call with the returned data
*/
function jsonp(form, attributes, callback) {
attributes = attributes || {};
var options = {jsonp: _.uniqueId('import_callback_')};
window[options.jsonp] = function () {
delete window[options.jsonp];
callback.apply(null, arguments);
};
if ('data' in attributes) {
_.extend(attributes.data, options);
} else {
_.extend(attributes, {data: options});
}
$(form).ajaxSubmit(attributes);
}
instance.web.DataImport = instance.web.Dialog.extend({
template: 'ImportDataView',
dialog_title: {toString: function () { return _t("Import Data"); }},
init: function(parent, dataset){
var self = this;
this._super(parent, {});
this.model = parent.model;
this.fields = [];
this.all_fields = [];
this.fields_with_defaults = [];
this.required_fields = null;
var convert_fields = function (root, prefix) {
prefix = prefix || '';
_(root.fields).each(function (f) {
self.all_fields.push(prefix + f.name);
if (f.fields) {
convert_fields(f, prefix + f.id + '/');
}
});
};
this.ready = $.Deferred.queue().then(function () {
self.required_fields = _(self.fields).chain()
.filter(function (field) {
return field.required &&
!_.include(self.fields_with_defaults, field.id); })
.pluck('id')
.uniq()
.value();
convert_fields(self);
self.all_fields.sort();
});
},
start: function() {
var self = this;
this._super();
this.open({
buttons: [
{text: _t("Close"), click: function() { self.destroy(); }},
{text: _t("Import File"), click: function() { self.do_import(); }, 'class': 'oe_import_dialog_button'}
],
close: function(event, ui) {
self.destroy();
}
});
this.toggle_import_button(false);
this.$el.find('#csvfile').change(this.on_autodetect_data);
this.$el.find('fieldset').change(this.on_autodetect_data);
this.$el.delegate('fieldset legend', 'click', function() {
$(this).parent().toggleClass('oe_closed');
});
this.ready.push(new instance.web.DataSet(this, this.model).call(
'fields_get', [], function (fields) {
self.graft_fields(fields);
self.ready.push(new instance.web.DataSet(self, self.model)
.default_get(_.pluck(self.fields, 'id')).then(function (fields) {
_.each(fields, function(val, key) {
if (val) {
self.fields_with_defaults.push(key);
}
});
})
)
}));
},
graft_fields: function (fields, parent, level) {
parent = parent || this;
level = level || 0;
var self = this;
if (level === 0) {
parent.fields.push({
id: 'id',
name: 'id',
string: _t('External ID'),
required: false
});
}
_(fields).each(function (field, field_name) {
// Ignore spec for id field
// Don't import function fields (function and related)
if (field_name === 'id') {
return;
}
// Skip if there's no state which could disable @readonly,
// if a field is ever always readonly we can't import it
if (field.readonly) {
// no states at all
if (_.isEmpty(field.states)) { return; }
// no state altering @readonly
if (!_.any(field.states, function (modifiers) {
return _(modifiers).chain().pluck(0).contains('readonly').value();
})) { return; }
}
var f = {
id: field_name,
name: field_name,
string: field.string,
required: field.required
};
switch (field.type) {
case 'many2many':
case 'many2one':
// push a copy for the bare many2one field, to allow importing
// using name_search too - even if we default to exporting the XML ID
var many2one_field = _.extend({}, f)
parent.fields.push(many2one_field);
f.name += '/id';
break;
case 'one2many':
f.name += '/id';
f.fields = [];
// only fetch sub-fields to a depth of 2 levels
if (level < 2) {
self.ready.push(new instance.web.DataSet(self, field.relation).call(
'fields_get', [], function (fields) {
self.graft_fields(fields, f, level+1);
}));
}
break;
}
parent.fields.push(f);
});
},
toggle_import_button: function (newstate) {
instance.web.dialog(this.$el, 'widget')
.find('.oe_import_dialog_button')
.button('option', 'disabled', !newstate);
},
do_import: function() {
if(!this.$el.find('#csvfile').val()) { return; }
var lines_to_skip = parseInt(this.$el.find('#csv_skip').val(), 10);
var with_headers = this.$el.find('#file_has_headers').prop('checked');
if (!lines_to_skip && with_headers) {
lines_to_skip = 1;
}
var indices = [], fields = [];
this.$el.find(".sel_fields").each(function(index, element) {
var val = element.value;
if (!val) {
return;
}
indices.push(index);
fields.push(val);
});
jsonp(this.$el.find('#import_data'), {
url: '/web/import/import_data',
data: {
model: this.model,
meta: JSON.stringify({
skip: lines_to_skip,
indices: indices,
fields: fields
})
}
}, this.on_import_results);
},
on_autodetect_data: function() {
if(!this.$el.find('#csvfile').val()) { return; }
jsonp(this.$el.find('#import_data'), {
url: '/web/import/detect_data'
}, this.on_import_results);
},
on_import_results: function(results) {
this.$el.find('#result').empty();
var headers, result_node = this.$el.find("#result");
if (results['error']) {
result_node.append(QWeb.render('ImportView.error', {
'error': results['error']}));
this.$el.find('fieldset').removeClass('oe_closed');
return;
}
if (results['success']) {
if (this.getParent().getParent().active_view == "list") {
this.getParent().reload_content();
}
this.destroy();
return;
}
if (results['records']) {
var lines_to_skip = parseInt(this.$el.find('#csv_skip').val(), 10),
with_headers = this.$el.find('#file_has_headers').prop('checked');
headers = with_headers ? results.records[0] : null;
result_node.append(QWeb.render('ImportView.result', {
'headers': headers,
'records': lines_to_skip ? results.records.slice(lines_to_skip)
: with_headers ? results.records.slice(1)
: results.records
}));
this.$el.find('fieldset').addClass('oe_closed');
}
this.$el.find('form').removeClass('oe_import_no_result');
this.$el.delegate('.oe_m2o_drop_down_button', 'click', function () {
$(this).prev('input').focus();
});
var self = this;
this.ready.then(function () {
var $fields = self.$el.find('.sel_fields').bind('blur', function () {
if (this.value && !_(self.all_fields).contains(this.value)) {
this.value = '';
}
}).autocomplete({
minLength: 0,
source: self.all_fields,
change: self.on_check_field_values
}).focus(function () {
$(this).autocomplete('search');
});
// Column auto-detection
_(headers).each(function (header, index) {
var field_name = self.match_column_to_field(header);
if (field_name) {
$fields.eq(index).val(field_name);
}
});
self.on_check_field_values();
});
},
/**
* Returns the name of the field (nested) matching the provided column name
*
* @param {String} name column name to look for
* @param {Array} [fields] fields to look into for the provided name
* @returns {String|undefined}
*/
match_column_to_field: function (name, fields) {
fields = fields || this.fields;
var f;
f = _(fields).detect(function (field) {
return field.name === name
});
if (!f) {
f = _(fields).detect(function (field) {
// TODO: levenshtein between header and field.string
return field.string.toLowerCase() === name.toLowerCase();
});
}
if (f) { return f.name; }
// if ``name`` is a path (o2m), we need to recurse through its .fields
var index = name.indexOf('/');
if (index === -1) { return undefined; }
// Get the first path section, try to find the matching field
var column_name = name.substring(0, index);
f = _(fields).detect(function (field) {
// field.name for o2m is $foo/id, so we want to match on id
return field.id === column_name;
});
if (!f) {
f = _(fields).detect(function (field) {
return field.string.toLowerCase() === column_name.toLowerCase();
});
}
if (!f) { return undefined; }
// if we found a matching field for the first path section, recurse in
// its own .fields to try and get the rest of the path matched
var rest = this.match_column_to_field(
name.substring(index+1), f.fields);
if (!rest) { return undefined; }
return f.id + '/' + rest;
},
/**
* Looks through all the field selections, and tries to find if two
* (or more) columns were matched to the same model field.
*
* Returns a map of the multiply-mapped fields to an array of offending
* columns (not actually columns, but the inputs containing the same field
* names).
*
* Also has the side-effect of marking the discovered inputs with the class
* ``duplicate_fld``.
*
* @returns {Object<String, Array<String>>} map of duplicate field matches to same-valued inputs
*/
find_duplicate_fields: function() {
// Maps values to DOM nodes, in order to discover duplicates
var values = {}, duplicates = {};
this.$el.find(".sel_fields").each(function(index, element) {
var value = element.value;
var $el = $(element).removeClass('duplicate_fld');
if (!value) { return; }
if (!(value in values)) {
values[value] = element;
} else {
var same_valued_field = values[value];
if (value in duplicates) {
duplicates[value].push(element);
} else {
duplicates[value] = [same_valued_field, element];
}
$el.add(same_valued_field).addClass('duplicate_fld');
}
});
return duplicates;
},
on_check_field_values: function () {
this.$el.find("#message, #msg").remove();
var required_valid = this.check_required();
var duplicates = this.find_duplicate_fields();
if (_.isEmpty(duplicates)) {
this.toggle_import_button(required_valid);
} else {
var $err = $('<div id="msg" style="color: red;">'+_t("Destination fields should only be selected once, some fields are selected more than once:")+'</div>').insertBefore(this.$el.find('#result'));
var $dupes = $('<dl>').appendTo($err);
_(duplicates).each(function(elements, value) {
$('<dt>').text(value).appendTo($dupes);
_(elements).each(function(element) {
var cell = $(element).closest('td');
$('<dd>').text(cell.parent().children().index(cell)).appendTo($dupes);
});
});
this.toggle_import_button(false);
}
},
check_required: function() {
var self = this;
if (!self.required_fields.length) { return true; }
// Resolve field id based on column name, as there may be
// several ways to provide the value for a given field and
// thus satisfy the requirement.
// (e.g. m2o_id or m2o_id/id columns may be provided)
var resolve_field_id = function(column_name) {
var f = _.detect(self.fields, function(field) {
return field.name === column_name;
});
if (!f) { return column_name; };
return f.id;
};
var selected_fields = _(this.$el.find('.sel_fields').get()).chain()
.pluck('value')
.compact()
.map(resolve_field_id)
.value();
var missing_fields = _.difference(this.required_fields, selected_fields);
if (missing_fields.length) {
this.$el.find("#result").before('<div id="message" style="color:red">' + _t("*Required Fields are not selected :") + missing_fields + '.</div>');
return false;
}
return true;
},
destroy: function() {
this.$el.remove();
this._super();
}
});
};

View File

@ -92,6 +92,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
self.on("change:actual_mode", self, self.init_pager); self.on("change:actual_mode", self, self.init_pager);
self.init_pager(); self.init_pager();
}); });
instance.web.bus.on('clear_uncommitted_changes', this, function(e) {
if (!this.can_be_discarded()) {
e.preventDefault();
}
});
}, },
destroy: function() { destroy: function() {
_.each(this.get_widgets(), function(w) { _.each(this.get_widgets(), function(w) {
@ -316,7 +321,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
} }
this.datarecord = record; this.datarecord = record;
this._actualize_mode(); this._actualize_mode();
this.set({ 'title' : record.id ? record.display_name : "New record" }); this.set({ 'title' : record.id ? record.display_name : "New" });
if (this.qweb) { if (this.qweb) {
this.kill_current_form(); this.kill_current_form();
@ -748,7 +753,13 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
return def.promise(); return def.promise();
}, },
can_be_discarded: function() { can_be_discarded: function() {
return !this.$el.is('.oe_form_dirty') || confirm(_t("Warning, the record has been modified, your changes will be discarded.")); if (this.$el.is('.oe_form_dirty')) {
if (!confirm(_t("Warning, the record has been modified, your changes will be discarded.\n\nAre you sure you want to leave this page ?"))) {
return false;
}
this.$el.removeClass('oe_form_dirty');
}
return true;
}, },
/** /**
* Triggers saving the form's record. Chooses between creating a new * Triggers saving the form's record. Chooses between creating a new
@ -1388,6 +1399,10 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
if (! page.__ic) if (! page.__ic)
return; return;
page.__ic.on("change:effective_invisible", null, function() { page.__ic.on("change:effective_invisible", null, function() {
if (!page.__ic.get('effective_invisible')) {
$new_notebook.tabs('select', i);
return;
}
var current = $new_notebook.tabs("option", "selected"); var current = $new_notebook.tabs("option", "selected");
if (! pages[current].__ic || ! pages[current].__ic.get("effective_invisible")) if (! pages[current].__ic || ! pages[current].__ic.get("effective_invisible"))
return; return;
@ -2387,6 +2402,9 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we
*/ */
instance.web.form.FieldTextHtml = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeFieldMixin, { instance.web.form.FieldTextHtml = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeFieldMixin, {
template: 'FieldTextHtml', template: 'FieldTextHtml',
init: function() {
this._super.apply(this, arguments);
},
initialize_content: function() { initialize_content: function() {
var self = this; var self = this;
if (! this.get("effective_readonly")) { if (! this.get("effective_readonly")) {
@ -2419,7 +2437,7 @@ instance.web.form.FieldTextHtml = instance.web.form.AbstractField.extend(instanc
}, },
render_value: function() { render_value: function() {
if (! this.get("effective_readonly")) { if (! this.get("effective_readonly")) {
this.$textarea.val(this.get('value')); this.$textarea.val(this.get('value') || '');
this._updating_editor = true; this._updating_editor = true;
this.$cleditor.updateFrame(); this.$cleditor.updateFrame();
this._updating_editor = false; this._updating_editor = false;
@ -2694,8 +2712,10 @@ instance.web.form.CompletionFieldMixin = {
_create_context: function(name) { _create_context: function(name) {
var tmp = {}; var tmp = {};
var field = (this.options || {}).create_name_field; var field = (this.options || {}).create_name_field;
if (field !== false && (this.options || {}).quick_create !== false) if (field === undefined)
tmp["default_" + field] = name || "name"; field = "name";
if (field !== false && name && (this.options || {}).quick_create !== false)
tmp["default_" + field] = name;
return tmp; return tmp;
}, },
}; };
@ -2755,7 +2775,8 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
this.$drop_down = this.$el.find(".oe_m2o_drop_down_button"); this.$drop_down = this.$el.find(".oe_m2o_drop_down_button");
this.$follow_button = $(".oe_m2o_cm_button", this.$el); this.$follow_button = $(".oe_m2o_cm_button", this.$el);
this.$follow_button.click(function() { this.$follow_button.click(function(ev) {
ev.preventDefault();
if (!self.get('value')) { if (!self.get('value')) {
self.focus(); self.focus();
return; return;
@ -2933,14 +2954,10 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
var lines = _.escape(str).split("\n"); var lines = _.escape(str).split("\n");
var link = ""; var link = "";
var follow = ""; var follow = "";
if (! this.options.highlight_first_line) {
link = lines.join("<br />");
} else {
link = lines[0]; link = lines[0];
follow = _.rest(lines).join("<br />"); follow = _.rest(lines).join("<br />");
if (follow) if (follow)
link += "<br />"; link += "<br />";
}
var $link = this.$el.find('.oe_form_uri') var $link = this.$el.find('.oe_form_uri')
.unbind('click') .unbind('click')
.html(link); .html(link);

View File

@ -21,8 +21,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
// whether the view rows can be reordered (via vertical drag & drop) // whether the view rows can be reordered (via vertical drag & drop)
'reorderable': true, 'reorderable': true,
'action_buttons': true, 'action_buttons': true,
// if true, the 'Import', 'Export', etc... buttons will be shown
'import_enabled': true,
}, },
/** /**
* Core class for list-type displays. * Core class for list-type displays.
@ -281,7 +279,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
self.reload_content(); self.reload_content();
}); });
// Add button and Import link // Add button
if (!this.$buttons) { if (!this.$buttons) {
this.$buttons = $(QWeb.render("ListView.buttons", {'widget':self})); this.$buttons = $(QWeb.render("ListView.buttons", {'widget':self}));
if (this.options.$buttons) { if (this.options.$buttons) {
@ -292,10 +290,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
this.$buttons.find('.oe_list_add') this.$buttons.find('.oe_list_add')
.click(this.proxy('do_add_record')) .click(this.proxy('do_add_record'))
.prop('disabled', grouped); .prop('disabled', grouped);
this.$buttons.on('click', '.oe_list_button_import', function() {
self.on_sidebar_import();
return false;
});
} }
// Pager // Pager
@ -358,7 +352,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
this.sidebar = new instance.web.Sidebar(this); this.sidebar = new instance.web.Sidebar(this);
this.sidebar.appendTo(this.options.$sidebar); this.sidebar.appendTo(this.options.$sidebar);
this.sidebar.add_items('other', _.compact([ this.sidebar.add_items('other', _.compact([
self.is_action_enabled('create') && { label: _t("Import"), callback: this.on_sidebar_import },
{ label: _t("Export"), callback: this.on_sidebar_export }, { label: _t("Export"), callback: this.on_sidebar_export },
self.is_action_enabled('delete') && { label: _t('Delete'), callback: this.do_delete_selected } self.is_action_enabled('delete') && { label: _t('Delete'), callback: this.do_delete_selected }
])); ]));
@ -480,7 +473,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
if (this.embedded_view) { if (this.embedded_view) {
return $.Deferred().then(callback).resolve(this.embedded_view); return $.Deferred().then(callback).resolve(this.embedded_view);
} else { } else {
return this.rpc('/web/listview/load', { return this.rpc('/web/view/load', {
model: this.model, model: this.model,
view_id: this.view_id, view_id: this.view_id,
view_type: "tree", view_type: "tree",
@ -1265,7 +1258,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
self.bind_child_events(child); self.bind_child_events(child);
child.datagroup = group; child.datagroup = group;
var $row = child.$row = $('<tr>'); var $row = child.$row = $('<tr class="oe_group_header">');
if (group.openable && group.length) { if (group.openable && group.length) {
$row.click(function (e) { $row.click(function (e) {
if (!$row.data('open')) { if (!$row.data('open')) {

View File

@ -20,7 +20,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
}, },
start: function() { start: function() {
this._super.apply(this, arguments); this._super.apply(this, arguments);
this.$el.on('click', '.oe_breadcrumb_item', this.on_breadcrumb_clicked); this.$el.on('click', 'a.oe_breadcrumb_item', this.on_breadcrumb_clicked);
}, },
dialog_stop: function () { dialog_stop: function () {
if (this.dialog) { if (this.dialog) {
@ -95,13 +95,15 @@ instance.web.ActionManager = instance.web.Widget.extend({
break; break;
} }
} }
var subindex = $e.parent().find('.oe_breadcrumb_item[data-id=' + $e.data('id') + ']').index($e); var subindex = $e.parent().find('a.oe_breadcrumb_item[data-id=' + $e.data('id') + ']').index($e);
this.select_breadcrumb(index, subindex); this.select_breadcrumb(index, subindex);
}, },
select_breadcrumb: function(index, subindex) { select_breadcrumb: function(index, subindex) {
for (var i = this.breadcrumbs.length - 1; i >= 0; i--) { for (var i = this.breadcrumbs.length - 1; i >= 0; i--) {
if (i > index) { if (i > index) {
this.remove_breadcrumb(i); if (this.remove_breadcrumb(i) === false) {
return false;
}
} }
} }
var item = this.breadcrumbs[index]; var item = this.breadcrumbs[index];
@ -110,8 +112,10 @@ instance.web.ActionManager = instance.web.Widget.extend({
return true; return true;
}, },
clear_breadcrumbs: function() { clear_breadcrumbs: function() {
while (this.breadcrumbs.length) { for (var i = this.breadcrumbs.length - 1; i >= 0; i--) {
this.remove_breadcrumb(0); if (this.remove_breadcrumb(0) === false) {
break;
}
} }
}, },
remove_breadcrumb: function(index) { remove_breadcrumb: function(index) {
@ -121,9 +125,17 @@ instance.web.ActionManager = instance.web.Widget.extend({
return item.widget === it.widget; return item.widget === it.widget;
}); });
if (!dups.length) { if (!dups.length) {
if (this.getParent().has_uncommitted_changes()) {
this.inner_widget = item.widget;
this.breadcrumbs.splice(index, 0, item);
return false;
} else {
item.destroy(); item.destroy();
} }
} }
}
var last_widget = this.breadcrumbs.slice(-1)[0];
this.inner_widget = last_widget && last_widget.widget;
}, },
get_title: function() { get_title: function() {
var titles = []; var titles = [];
@ -136,7 +148,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
for (var j = 0; j < tit.length; j += 1) { for (var j = 0; j < tit.length; j += 1) {
var label = _.escape(tit[j]); var label = _.escape(tit[j]);
if (i === this.breadcrumbs.length - 1 && j === tit.length - 1) { if (i === this.breadcrumbs.length - 1 && j === tit.length - 1) {
titles.push(label); titles.push(_.str.sprintf('<span class="oe_breadcrumb_item">%s</span>', label));
} else { } else {
titles.push(_.str.sprintf('<a href="#" class="oe_breadcrumb_item" data-id="%s">%s</a>', item.id, label)); titles.push(_.str.sprintf('<a href="#" class="oe_breadcrumb_item" data-id="%s">%s</a>', item.id, label));
} }
@ -208,19 +220,19 @@ instance.web.ActionManager = instance.web.Widget.extend({
} }
}); });
}, },
do_action: function(action, on_close) { do_action: function(action, on_close, clear_breadcrumbs) {
if (_.isString(action) && instance.web.client_actions.contains(action)) { if (_.isString(action) && instance.web.client_actions.contains(action)) {
var action_client = { type: "ir.actions.client", tag: action }; var action_client = { type: "ir.actions.client", tag: action };
return this.do_action(action_client); return this.do_action(action_client, on_close, clear_breadcrumbs);
} else if (_.isNumber(action) || _.isString(action)) { } else if (_.isNumber(action) || _.isString(action)) {
var self = this; var self = this;
return self.rpc("/web/action/load", { action_id: action }, function(result) { return self.rpc("/web/action/load", { action_id: action }).pipe(function(result) {
self.do_action(result.result, on_close); return self.do_action(result.result, on_close, clear_breadcrumbs);
}); });
} }
if (!action.type) { if (!action.type) {
console.error("No type for action", action); console.error("No type for action", action);
return null; return $.Deferred().reject();
} }
var type = action.type.replace(/\./g,'_'); var type = action.type.replace(/\./g,'_');
var popup = action.target === 'new'; var popup = action.target === 'new';
@ -235,16 +247,23 @@ instance.web.ActionManager = instance.web.Widget.extend({
}, action.flags || {}); }, action.flags || {});
if (!(type in this)) { if (!(type in this)) {
console.error("Action manager can't handle action of type " + action.type, action); console.error("Action manager can't handle action of type " + action.type, action);
return null; return $.Deferred().reject();
} }
return this[type](action, on_close); return this[type](action, on_close, clear_breadcrumbs);
}, },
null_action: function() { null_action: function() {
this.dialog_stop(); this.dialog_stop();
this.clear_breadcrumbs(); this.clear_breadcrumbs();
}, },
ir_actions_common: function(action, on_close) { ir_actions_common: function(action, on_close, clear_breadcrumbs) {
var self = this, klass, widget, post_process; var self = this, klass, widget, post_process;
if (this.inner_widget && (action.type === 'ir.actions.client' || action.target !== 'new')) {
if (this.getParent().has_uncommitted_changes()) {
return $.Deferred().reject();
} else if (clear_breadcrumbs) {
this.clear_breadcrumbs();
}
}
if (action.type === 'ir.actions.client') { if (action.type === 'ir.actions.client') {
var ClientWidget = instance.web.client_actions.get_object(action.tag); var ClientWidget = instance.web.client_actions.get_object(action.tag);
widget = new ClientWidget(this, action.params); widget = new ClientWidget(this, action.params);
@ -287,17 +306,17 @@ instance.web.ActionManager = instance.web.Widget.extend({
this.inner_widget.appendTo(this.$el); this.inner_widget.appendTo(this.$el);
} }
}, },
ir_actions_act_window: function (action, on_close) { ir_actions_act_window: function (action, on_close, clear_breadcrumbs) {
var self = this; var self = this;
if (action.target !== 'new') { if (action.target !== 'new') {
if(action.menu_id) { if(action.menu_id) {
this.dialog_stop(); this.dialog_stop();
return this.getParent().do_action(action, function () { return this.getParent().do_action(action, function () {
instance.webclient.menu.open_menu(action.menu_id); instance.webclient.menu.open_menu(action.menu_id);
}); }, clear_breadcrumbs);
} }
} }
return this.ir_actions_common(action, on_close); return this.ir_actions_common(action, on_close, clear_breadcrumbs);
}, },
ir_actions_client: function (action, on_close) { ir_actions_client: function (action, on_close) {
return this.ir_actions_common(action, on_close); return this.ir_actions_common(action, on_close);
@ -314,7 +333,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
action_id: action.id, action_id: action.id,
context: action.context || {} context: action.context || {}
}).then(function (action) { }).then(function (action) {
self.do_action(action, on_closed) self.do_action(action, on_closed, clear_breadcrumbs)
}); });
}, },
ir_actions_report_xml: function(action, on_closed) { ir_actions_report_xml: function(action, on_closed) {
@ -412,8 +431,10 @@ instance.web.ViewManager = instance.web.Widget.extend({
var self = this; var self = this;
var view = this.views[view_type]; var view = this.views[view_type];
var view_promise; var view_promise;
if(!view) var form = this.views['form'];
if (!view || (form && form.controller && !form.controller.can_be_discarded())) {
return $.Deferred().reject(); return $.Deferred().reject();
}
if (!no_store) { if (!no_store) {
this.views_history.push(view_type); this.views_history.push(view_type);
@ -545,7 +566,8 @@ instance.web.ViewManager = instance.web.Widget.extend({
} }
return controller.get('title'); 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 (next && next.action && next.action.res_id && self.dataset &&
self.active_view === 'form' && self.dataset.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 // 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 // is an action on same object (model / res_id), then we omit the current formview's title
titles.pop(); titles.pop();
@ -732,6 +754,14 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
var dialog = new instance.web.Dialog(this, { title: _t("Fields View Get"), width: '95%' }).open(); var dialog = new instance.web.Dialog(this, { title: _t("Fields View Get"), width: '95%' }).open();
$('<pre>').text(instance.web.json_node_to_xml(current_view.fields_view.arch, true)).appendTo(dialog.$el); $('<pre>').text(instance.web.json_node_to_xml(current_view.fields_view.arch, true)).appendTo(dialog.$el);
break; break;
case 'tests':
this.do_action({
name: "JS Tests",
target: 'new',
type : 'ir.actions.act_url',
url: '/web/static/test/test.html'
})
break;
case 'perm_read': case 'perm_read':
var ids = current_view.get_selected_ids(); var ids = current_view.get_selected_ids();
if (ids.length === 1) { if (ids.length === 1) {
@ -807,6 +837,21 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
} }
}); });
break; break;
case 'print_workflow':
if (current_view.get_selected_ids && current_view.get_selected_ids().length == 1) {
instance.web.blockUI();
var action = {
context: { active_ids: current_view.get_selected_ids() },
report_name: "workflow.instance.graph",
datas: {
model: this.dataset.model,
id: current_view.get_selected_ids()[0],
nested: true,
}
};
this.session.get_file({ url: '/web/report', data: {action: JSON.stringify(action)}, complete: instance.web.unblockUI });
}
break;
default: default:
if (val) { if (val) {
console.log("No debug handler for ", val); console.log("No debug handler for ", val);
@ -1220,9 +1265,6 @@ instance.web.View = instance.web.Widget.extend({
}, },
do_search: function(view) { do_search: function(view) {
}, },
on_sidebar_import: function() {
new instance.web.DataImport(this, this.dataset).open();
},
on_sidebar_export: function() { on_sidebar_export: function() {
new instance.web.DataExport(this, this.dataset).open(); new instance.web.DataExport(this, this.dataset).open();
}, },

View File

@ -79,7 +79,7 @@
</form> </form>
<div class="oe_login_footer"> <div class="oe_login_footer">
<a href="#" class="oe_login_manage_db">Manage Databases</a> | <a href="#" class="oe_login_manage_db">Manage Databases</a> |
<a href="http://www.openerp.com">Powered by <span>OpenERP</span></a> <a href="http://www.openerp.com" target="_blank">Powered by <span>OpenERP</span></a>
</div> </div>
</div> </div>
</div> </div>
@ -404,13 +404,10 @@
</tr> </tr>
<tr> <tr>
<td class="oe_leftbar" valign="top"> <td class="oe_leftbar" valign="top">
<t t-js="d"> <a class="oe_logo" href="#"><img t-att-src='_s + "/web/static/src/img/logo.png"'/></a>
d.url = '/' + (window.location.search || '');
</t>
<a t-att-href="url" class="oe_logo"><img t-att-src='_s + "/web/static/src/img/logo.png"'/></a>
<div class="oe_secondary_menus_container"/> <div class="oe_secondary_menus_container"/>
<div class="oe_footer"> <div class="oe_footer">
Powered by <a href="http://www.openerp.com"><span>Open</span>ERP</a> Powered by <a href="http://www.openerp.com" target="_blank"><span>Open</span>ERP</a>
</div> </div>
</td> </td>
<td class="oe_application"> <td class="oe_application">
@ -429,10 +426,10 @@
<t t-name="ViewManager"> <t t-name="ViewManager">
<div class="oe_view_manager"> <div class="oe_view_manager">
<table class="oe_view_manager_header"> <table class="oe_view_manager_header">
<col width="20%"/>
<col width="25%"/>
<col width="20%"/> <col width="20%"/>
<col width="35%"/> <col width="35%"/>
<col width="15%"/>
<col width="30%"/>
<tr class="oe_header_row oe_header_row_top"> <tr class="oe_header_row oe_header_row_top">
<td colspan="2"> <td colspan="2">
<h2 class="oe_view_title" t-if="widget.flags.display_title !== false"> <h2 class="oe_view_title" t-if="widget.flags.display_title !== false">
@ -479,6 +476,7 @@
<option value="">Debug View#<t t-esc="view.fields_view.view_id"/></option> <option value="">Debug View#<t t-esc="view.fields_view.view_id"/></option>
<option t-if="view_manager.active_view === 'form'" value="perm_read" data-views="form,page">View Log (perm_read)</option> <option t-if="view_manager.active_view === 'form'" value="perm_read" data-views="form,page">View Log (perm_read)</option>
<option t-if="view_manager.active_view === 'form'" value="toggle_layout_outline">Toggle Form Layout Outline</option> <option t-if="view_manager.active_view === 'form'" value="toggle_layout_outline">Toggle Form Layout Outline</option>
<option value="tests">JS Tests</option>
<option value="fields">View Fields</option> <option value="fields">View Fields</option>
<option value="fvg">Fields View Get</option> <option value="fvg">Fields View Get</option>
<option value="manage_filters">Manage Filters</option> <option value="manage_filters">Manage Filters</option>
@ -489,6 +487,7 @@
<option t-if="view_manager.searchview" value="edit" data-model="ir.ui.view" t-att-data-id="view_manager.searchview.view_id">Edit SearchView</option> <option t-if="view_manager.searchview" value="edit" data-model="ir.ui.view" t-att-data-id="view_manager.searchview.view_id">Edit SearchView</option>
<option t-if="view_manager.action" value="edit" t-att-data-model="view_manager.action.type" t-att-data-id="view_manager.action.id">Edit Action</option> <option t-if="view_manager.action" value="edit" t-att-data-model="view_manager.action.type" t-att-data-id="view_manager.action.id">Edit Action</option>
<option value="edit_workflow">Edit Workflow</option> <option value="edit_workflow">Edit Workflow</option>
<option value="print_workflow">Print Workflow</option>
</t> </t>
</t> </t>
<t t-name="ViewManagerDebugViewLog"> <t t-name="ViewManagerDebugViewLog">
@ -654,9 +653,6 @@
<button type="button" class="oe_button oe_list_add oe_highlight"> <button type="button" class="oe_button oe_list_add oe_highlight">
<t t-esc="widget.options.addable"/> <t t-esc="widget.options.addable"/>
</button> </button>
<span class="oe_alternative" t-if="widget.options.import_enabled">
<span class="oe_fade">or</span> <a href="#" class="oe_bold oe_list_button_import">Import</a>
</span>
</t> </t>
</div> </div>
<t t-name="ListView.pager"> <t t-name="ListView.pager">
@ -700,9 +696,10 @@
<t t-jquery="button.oe_list_add" t-operation="after"> <t t-jquery="button.oe_list_add" t-operation="after">
<button class="oe_button oe_list_save oe_highlight" <button class="oe_button oe_list_save oe_highlight"
type="button">Save</button> type="button">Save</button>
</t> <span class="oe_alternative">
<t t-jquery="a.oe_list_button_import" t-operation="after"> <span class="oe_fade">or</span>
<a href="#" class="oe_bold oe_list_discard">Discard</a> <a href="#" class="oe_bold oe_list_discard">Discard</a>
</span>
</t> </t>
</t> </t>
<t t-extend="ListView.row"> <t t-extend="ListView.row">
@ -1066,7 +1063,7 @@
</span> </span>
</t> </t>
<t t-name="FieldStatus"> <t t-name="FieldStatus">
<ul t-att-class="'oe_form_field_status ' + (widget.options.clickable ? 'oe_form_steps_clickable' : 'oe_form_steps')" t-att-style="widget.node.attrs.style"/> <ul t-att-class="'oe_form_field_status ' + (widget.options.clickable ? 'oe_form_status_clickable' : 'oe_form_status')" t-att-style="widget.node.attrs.style"/>
</t> </t>
<t t-name="FieldStatus.content"> <t t-name="FieldStatus.content">
<t t-foreach="widget.selection" t-as="i"> <t t-foreach="widget.selection" t-as="i">

View File

@ -192,7 +192,7 @@ $(document).ready(function () {
var records = {}; var records = {};
_.extend(instance.session.responses, { _.extend(instance.session.responses, {
'/web/listview/load': function () { '/web/view/load': function () {
return {result: { return {result: {
type: 'tree', type: 'tree',
fields: { fields: {
@ -268,7 +268,7 @@ $(document).ready(function () {
setup: function () { setup: function () {
baseSetup(); baseSetup();
_.extend(instance.session.responses, { _.extend(instance.session.responses, {
'/web/listview/load': function () { '/web/view/load': function () {
return {result: { return {result: {
type: 'tree', type: 'tree',
fields: { fields: {

View File

@ -1 +0,0 @@
# -*- coding: utf-8 -*-

View File

@ -1,81 +0,0 @@
# -*- coding: utf-8 -*-
import mock
import unittest2
import web.controllers.main
class TestDataSetController(unittest2.TestCase):
def setUp(self):
self.dataset = web.controllers.main.DataSet()
self.request = mock.Mock()
self.read = self.request.session.model().read
self.search = self.request.session.model().search
@unittest2.skip
def test_empty_find(self):
self.search.return_value = []
self.read.return_value = []
self.assertFalse(self.dataset.do_search_read(self.request, 'fake.model'))
self.read.assert_called_once_with([], False, self.request.context)
@unittest2.skip
def test_regular_find(self):
self.search.return_value = [1, 2, 3]
self.dataset.do_search_read(self.request, 'fake.model')
self.read.assert_called_once_with([1, 2, 3], False,
self.request.context)
@unittest2.skip
def test_ids_shortcut(self):
self.search.return_value = [1, 2, 3]
self.read.return_value = [
{'id': 1, 'name': 'foo'},
{'id': 2, 'name': 'bar'},
{'id': 3, 'name': 'qux'}
]
self.assertEqual(
self.dataset.do_search_read(self.request, 'fake.model', ['id']),
[{'id': 1}, {'id': 2}, {'id': 3}])
self.assertFalse(self.read.called)
@unittest2.skip
def test_get(self):
self.read.return_value = [
{'id': 1, 'name': 'baz'},
{'id': 3, 'name': 'foo'},
{'id': 2, 'name': 'bar'}
]
result = self.dataset.do_get(
self.request, 'fake.model', [3, 2, 1])
self.read.assert_called_once_with(
[3, 2, 1], False)
self.assertFalse(self.search.called)
self.assertEqual(
result,
[
{'id': 3, 'name': 'foo'},
{'id': 2, 'name': 'bar'},
{'id': 1, 'name': 'baz'}
]
)
def test_get_missing_result(self):
self.read.return_value = [
{'id': 1, 'name': 'baz'},
{'id': 2, 'name': 'bar'}
]
result = self.dataset.do_get(
self.request, 'fake.model', [3, 2, 1])
self.assertEqual(
result,
[
{'id': 2, 'name': 'bar'},
{'id': 1, 'name': 'baz'}
]
)

View File

@ -1,248 +0,0 @@
import copy
import xml.etree.ElementTree
import mock
import unittest2
import simplejson
import web.controllers.main
from ..common import nonliterals, session as s
def field_attrs(fields_view_get, fieldname):
(field,) = filter(lambda f: f['attrs'].get('name') == fieldname,
fields_view_get['arch']['children'])
return field['attrs']
#noinspection PyCompatibility
class DomainsAndContextsTest(unittest2.TestCase):
def setUp(self):
self.view = web.controllers.main.View()
def test_convert_literal_domain(self):
e = xml.etree.ElementTree.Element(
'field', domain=" [('somefield', '=', 3)] ")
self.view.parse_domains_and_contexts(e, None)
self.assertEqual(
e.get('domain'),
[('somefield', '=', 3)])
def test_convert_complex_domain(self):
e = xml.etree.ElementTree.Element(
'field',
domain="[('account_id.type','in',['receivable','payable']),"
"('reconcile_id','=',False),"
"('reconcile_partial_id','=',False),"
"('state', '=', 'valid')]"
)
self.view.parse_domains_and_contexts(e, None)
self.assertEqual(
e.get('domain'),
[('account_id.type', 'in', ['receivable', 'payable']),
('reconcile_id', '=', False),
('reconcile_partial_id', '=', False),
('state', '=', 'valid')]
)
def test_retrieve_nonliteral_domain(self):
session = mock.Mock(spec=s.OpenERPSession)
session.domains_store = {}
domain_string = ("[('month','=',(datetime.date.today() - "
"datetime.timedelta(365/12)).strftime('%%m'))]")
e = xml.etree.ElementTree.Element(
'field', domain=domain_string)
self.view.parse_domains_and_contexts(e, session)
self.assertIsInstance(e.get('domain'), nonliterals.Domain)
self.assertEqual(
nonliterals.Domain(
session, key=e.get('domain').key).get_domain_string(),
domain_string)
def test_convert_literal_context(self):
e = xml.etree.ElementTree.Element(
'field', context=" {'some_prop': 3} ")
self.view.parse_domains_and_contexts(e, None)
self.assertEqual(
e.get('context'),
{'some_prop': 3})
def test_convert_complex_context(self):
e = xml.etree.ElementTree.Element(
'field',
context="{'account_id.type': ['receivable','payable'],"
"'reconcile_id': False,"
"'reconcile_partial_id': False,"
"'state': 'valid'}"
)
self.view.parse_domains_and_contexts(e, None)
self.assertEqual(
e.get('context'),
{'account_id.type': ['receivable', 'payable'],
'reconcile_id': False,
'reconcile_partial_id': False,
'state': 'valid'}
)
def test_retrieve_nonliteral_context(self):
session = mock.Mock(spec=s.OpenERPSession)
session.contexts_store = {}
context_string = ("{'month': (datetime.date.today() - "
"datetime.timedelta(365/12)).strftime('%%m')}")
e = xml.etree.ElementTree.Element(
'field', context=context_string)
self.view.parse_domains_and_contexts(e, session)
self.assertIsInstance(e.get('context'), nonliterals.Context)
self.assertEqual(
nonliterals.Context(
session, key=e.get('context').key).get_context_string(),
context_string)
class AttrsNormalizationTest(unittest2.TestCase):
def setUp(self):
self.view = web.controllers.main.View()
def test_identity(self):
web_view = """
<form string="Title">
<group>
<field name="some_field"/>
<field name="some_other_field"/>
</group>
<field name="stuff"/>
</form>
"""
pristine = xml.etree.ElementTree.fromstring(web_view)
transformed = self.view.transform_view(web_view, None)
self.assertEqual(
xml.etree.ElementTree.tostring(transformed),
xml.etree.ElementTree.tostring(pristine)
)
@unittest2.skip
def test_transform_states(self):
element = xml.etree.ElementTree.Element(
'field', states="open,closed")
self.view.normalize_attrs(element, {})
self.assertIsNone(element.get('states'))
self.assertEqual(
simplejson.loads(element.get('attrs')),
{'invisible': [['state', 'not in', ['open', 'closed']]]})
@unittest2.skip
def test_transform_invisible(self):
element = xml.etree.ElementTree.Element(
'field', invisible="context.get('invisible_country', False)")
empty_context = copy.deepcopy(element)
self.view.normalize_attrs(empty_context, {})
self.assertEqual(empty_context.get('invisible'), None)
full_context = copy.deepcopy(element)
self.view.normalize_attrs(full_context, {'invisible_country': True})
self.assertEqual(full_context.get('invisible'), '1')
@unittest2.skip
def test_transform_invisible_list_column(self):
req = mock.Mock()
req.context = {'set_editable':True, 'set_visible':True,
'gtd_visible':True, 'user_invisible':True}
req.session.evaluation_context = \
s.OpenERPSession().evaluation_context
req.session.model('project.task').fields_view_get.return_value = {
'arch': '''
<tree colors="grey:state in ('cancelled','done');blue:state == 'pending';red:date_deadline and (date_deadline&lt;current_date) and (state in ('draft','pending','open'))" string="Tasks">
<field name="sequence" invisible="not context.get('seq_visible', False)"/>
<field name="user_id" invisible="context.get('user_invisible', False)"/>
<field name="delegated_user_id" invisible="context.get('show_delegated', True)"/>
<field name="total_hours" invisible="1"/>
<field name="date_deadline" invisible="context.get('deadline_visible',True)"/>
<field name="type_id" invisible="context.get('set_visible',False)"/>
</tree>
'''}
parsed_view = web.controllers.main.View().fields_view_get(
req, 'project.task', 42, 'tree')
self.assertTrue(field_attrs(parsed_view, 'sequence')['invisible'])
self.assertTrue(field_attrs(parsed_view, 'user_id')['invisible'])
self.assertTrue(
field_attrs(parsed_view, 'delegated_user_id')['invisible'])
self.assertTrue(field_attrs(parsed_view, 'total_hours')['invisible'])
self.assertTrue(
field_attrs(parsed_view, 'date_deadline')['invisible'])
self.assertTrue(field_attrs(parsed_view, 'type_id')['invisible'])
class ListViewTest(unittest2.TestCase):
def setUp(self):
self.view = web.controllers.main.ListView()
self.request = mock.Mock()
self.request.context = {'set_editable': True}
@unittest2.skip
def test_no_editable_editable_context(self):
self.request.session.model('fake').fields_view_get.return_value = \
{'arch': '<tree><field name="foo"/></tree>'}
view = self.view.fields_view_get(self.request, 'fake', False, False)
self.assertEqual(view['arch']['attrs']['editable'],
'bottom')
@unittest2.skip
def test_editable_top_editable_context(self):
self.request.session.model('fake').fields_view_get.return_value = \
{'arch': '<tree editable="top"><field name="foo"/></tree>'}
view = self.view.fields_view_get(self.request, 'fake', False)
self.assertEqual(view['arch']['attrs']['editable'],
'top')
@unittest2.skip
def test_editable_bottom_editable_context(self):
self.request.session.model('fake').fields_view_get.return_value = \
{'arch': '<tree editable="bottom"><field name="foo"/></tree>'}
view = self.view.fields_view_get(self.request, 'fake', False)
self.assertEqual(view['arch']['attrs']['editable'],
'bottom')
def test_color_nocolor(self):
self.assertEqual(
self.view.process_colors(
{'arch': {'attrs': {}, 'children': []}}, {}, {}),
None)
def test_color_literal(self):
self.assertEqual(
self.view.process_colors(
{'arch': {'attrs': {'colors': 'black:1'}}, 'children': []},
{}, {}),
'black')
def test_color_miss(self):
self.assertEqual(
self.view.process_colors(
{'arch': {'attrs': {'colors': "grey:state in ('cancelled','done');blue:state in ('pending')"}},
'children': []
}, {'state': 'open'}, {}),
None)
def test_color_compute(self):
self.assertEqual(
self.view.process_colors(
{'arch': {'attrs': {'colors': "grey:state in ('cancelled','done');blue:state in ('pending')"}},
'children': []
}, {'state': 'done'}, {}),
'grey')
def test_color_multiple(self):
self.assertEqual(
self.view.process_colors(
{'arch': {'attrs': {'colors': "grey:state in ('cancelled','done');blue:state in ('done')"}},
'children': []
}, {'state': 'done'}, {}),
'maroon')

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
from . import test_dataset, test_menu, test_serving_base, test_view
fast_suite = []
checks = [
test_dataset,
test_menu,
test_serving_base,
test_view,
]

View File

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
import mock
import unittest2
import web.controllers.main
class TestDataSetController(unittest2.TestCase):
def setUp(self):
self.dataset = web.controllers.main.DataSet()
self.request = mock.Mock()
self.read = self.request.session.model().read
self.search = self.request.session.model().search
def test_empty_find(self):
self.search.return_value = []
self.read.return_value = []
self.assertEqual(
self.dataset.do_search_read(self.request, 'fake.model'),
{'records': [], 'length': 0})
self.read.assert_called_once_with(
[], False, self.request.session.eval_context())
def test_regular_find(self):
self.search.return_value = [1, 2, 3]
self.dataset.do_search_read(self.request, 'fake.model')
self.read.assert_called_once_with(
[1, 2, 3], False,self.request.session.eval_context())
def test_ids_shortcut(self):
self.search.return_value = [1, 2, 3]
self.read.return_value = [
{'id': 1, 'name': 'foo'},
{'id': 2, 'name': 'bar'},
{'id': 3, 'name': 'qux'}
]
self.assertEqual(
self.dataset.do_search_read(self.request, 'fake.model', ['id']),
{'records': [{'id': 1}, {'id': 2}, {'id': 3}], 'length': 3})
self.assertFalse(self.read.called)

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import collections
import mock import mock
import unittest2 import unittest2
@ -13,42 +14,56 @@ class Placeholder(object):
class LoadTest(unittest2.TestCase): class LoadTest(unittest2.TestCase):
def setUp(self): def setUp(self):
self.menu = main.Menu() self.menu = main.Menu()
self.menus_mock = mock.Mock() self.request = mock.Mock()
self.request = Placeholder(session=OpenERPSession())
# Have self.request.session.model() return a different mock object for
# each model (but always the same mock for a given model name)
models = collections.defaultdict(mock.Mock)
model = self.request.session.model.side_effect = \
lambda model_name: models[model_name]
self.MockMenus = model('ir.ui.menu')
# Mock the absence of custom menu
model('res.users').read.return_value = [{
'menu_id': False
}]
def tearDown(self): def tearDown(self):
del self.request del self.request
del self.menus_mock del self.MockMenus
del self.menu del self.menu
@unittest2.skip
def test_empty(self): def test_empty(self):
self.menus_mock.search = mock.Mock(return_value=[]) self.MockMenus.search.return_value = []
self.menus_mock.read = mock.Mock(return_value=[]) self.MockMenus.read.return_value = []
root = self.menu.do_load(self.request) root = self.menu.do_load(self.request)
self.menus_mock.search.assert_called_with([]) self.MockMenus.search.assert_called_with(
self.menus_mock.read.assert_called_with( [], 0, False, False, self.request.session.eval_context())
[], ['name', 'sequence', 'parent_id']) self.MockMenus.read.assert_called_with(
[], ['name', 'sequence', 'parent_id',
'action', 'needaction_enabled', 'needaction_counter'],
self.request.session.eval_context())
self.assertListEqual( self.assertListEqual(
root['children'], root['children'],
[]) [])
@unittest2.skip
def test_applications_sort(self): def test_applications_sort(self):
self.menus_mock.search = mock.Mock(return_value=[1, 2, 3]) self.MockMenus.search.return_value = [1, 2, 3]
self.menus_mock.read = mock.Mock(return_value=[ self.MockMenus.read.side_effect = lambda *args: [
{'id': 2, 'sequence': 3, 'parent_id': False},
{'id': 3, 'sequence': 2, 'parent_id': False},
{'id': 1, 'sequence': 1, 'parent_id': False}, {'id': 1, 'sequence': 1, 'parent_id': False},
]) {'id': 3, 'sequence': 2, 'parent_id': False},
{'id': 2, 'sequence': 3, 'parent_id': False},
]
root = self.menu.do_load(self.request) root = self.menu.do_load(self.request)
self.menus_mock.read.assert_called_with( self.MockMenus.read.assert_called_with(
[1, 2, 3], ['name', 'sequence', 'parent_id']) [1, 2, 3], ['name', 'sequence', 'parent_id',
'action', 'needaction_enabled', 'needaction_counter'],
self.request.session.eval_context())
self.assertEqual( self.assertEqual(
root['children'], root['children'],
@ -63,10 +78,13 @@ class LoadTest(unittest2.TestCase):
'parent_id': False, 'children': [] 'parent_id': False, 'children': []
}]) }])
@unittest2.skip
def test_deep(self): def test_deep(self):
self.menus_mock.search = mock.Mock(return_value=[1, 2, 3, 4]) self.MockMenus.search.side_effect = lambda domain, *args: (
self.menus_mock.read = mock.Mock(return_value=[ [1] if domain == [('parent_id', '=', False)] else [1, 2, 3, 4])
root = {'id': 1, 'sequence': 1, 'parent_id': False}
self.MockMenus.read.side_effect = lambda ids, *args: (
[root] if ids == [1] else [
{'id': 1, 'sequence': 1, 'parent_id': False}, {'id': 1, 'sequence': 1, 'parent_id': False},
{'id': 2, 'sequence': 2, 'parent_id': [1, '']}, {'id': 2, 'sequence': 2, 'parent_id': [1, '']},
{'id': 3, 'sequence': 1, 'parent_id': [2, '']}, {'id': 3, 'sequence': 1, 'parent_id': [2, '']},
@ -117,7 +135,6 @@ class ActionMungerTest(unittest2.TestCase):
self.assertEqual(changed, action) self.assertEqual(changed, action)
@unittest2.skip
def test_list_view(self): def test_list_view(self):
action = { action = {
"views": [[False, "tree"], [False, "form"], "views": [[False, "tree"], [False, "form"],
@ -135,7 +152,6 @@ class ActionMungerTest(unittest2.TestCase):
"view_mode": "list,form,calendar" "view_mode": "list,form,calendar"
}) })
@unittest2.skip
def test_redundant_views(self): def test_redundant_views(self):
action = { action = {

View File

@ -3,7 +3,7 @@
import random import random
import unittest2 import unittest2
from ..controllers.main import topological_sort from ..controllers.main import module_topological_sort as sort
def sample(population): def sample(population):
return random.sample( return random.sample(
@ -22,7 +22,7 @@ class TestModulesLoading(unittest2.TestCase):
ms = dict(modules) ms = dict(modules)
seen = set() seen = set()
sorted_modules = topological_sort(ms) sorted_modules = sort(ms)
for module in sorted_modules: for module in sorted_modules:
deps = ms[module] deps = ms[module]
self.assertGreaterEqual( self.assertGreaterEqual(

View File

@ -0,0 +1,128 @@
import copy
import xml.etree.ElementTree
import mock
import unittest2
import simplejson
import web.controllers.main
from ..common import nonliterals, session as s
def field_attrs(fields_view_get, fieldname):
(field,) = filter(lambda f: f['attrs'].get('name') == fieldname,
fields_view_get['arch']['children'])
return field['attrs']
#noinspection PyCompatibility
class DomainsAndContextsTest(unittest2.TestCase):
def setUp(self):
self.view = web.controllers.main.View()
def test_convert_literal_domain(self):
e = xml.etree.ElementTree.Element(
'field', domain=" [('somefield', '=', 3)] ")
self.view.parse_domains_and_contexts(e, None)
self.assertEqual(
e.get('domain'),
[('somefield', '=', 3)])
def test_convert_complex_domain(self):
e = xml.etree.ElementTree.Element(
'field',
domain="[('account_id.type','in',['receivable','payable']),"
"('reconcile_id','=',False),"
"('reconcile_partial_id','=',False),"
"('state', '=', 'valid')]"
)
self.view.parse_domains_and_contexts(e, None)
self.assertEqual(
e.get('domain'),
[('account_id.type', 'in', ['receivable', 'payable']),
('reconcile_id', '=', False),
('reconcile_partial_id', '=', False),
('state', '=', 'valid')]
)
def test_retrieve_nonliteral_domain(self):
session = mock.Mock(spec=s.OpenERPSession)
session.domains_store = {}
domain_string = ("[('month','=',(datetime.date.today() - "
"datetime.timedelta(365/12)).strftime('%%m'))]")
e = xml.etree.ElementTree.Element(
'field', domain=domain_string)
self.view.parse_domains_and_contexts(e, session)
self.assertIsInstance(e.get('domain'), nonliterals.Domain)
self.assertEqual(
nonliterals.Domain(
session, key=e.get('domain').key).get_domain_string(),
domain_string)
def test_convert_literal_context(self):
e = xml.etree.ElementTree.Element(
'field', context=" {'some_prop': 3} ")
self.view.parse_domains_and_contexts(e, None)
self.assertEqual(
e.get('context'),
{'some_prop': 3})
def test_convert_complex_context(self):
e = xml.etree.ElementTree.Element(
'field',
context="{'account_id.type': ['receivable','payable'],"
"'reconcile_id': False,"
"'reconcile_partial_id': False,"
"'state': 'valid'}"
)
self.view.parse_domains_and_contexts(e, None)
self.assertEqual(
e.get('context'),
{'account_id.type': ['receivable', 'payable'],
'reconcile_id': False,
'reconcile_partial_id': False,
'state': 'valid'}
)
def test_retrieve_nonliteral_context(self):
session = mock.Mock(spec=s.OpenERPSession)
session.contexts_store = {}
context_string = ("{'month': (datetime.date.today() - "
"datetime.timedelta(365/12)).strftime('%%m')}")
e = xml.etree.ElementTree.Element(
'field', context=context_string)
self.view.parse_domains_and_contexts(e, session)
self.assertIsInstance(e.get('context'), nonliterals.Context)
self.assertEqual(
nonliterals.Context(
session, key=e.get('context').key).get_context_string(),
context_string)
class AttrsNormalizationTest(unittest2.TestCase):
def setUp(self):
self.view = web.controllers.main.View()
def test_identity(self):
web_view = """
<form string="Title">
<group>
<field name="some_field"/>
<field name="some_other_field"/>
</group>
<field name="stuff"/>
</form>
"""
pristine = xml.etree.ElementTree.fromstring(web_view)
transformed = self.view.transform_view(web_view, None)
self.assertEqual(
xml.etree.ElementTree.tostring(transformed),
xml.etree.ElementTree.tostring(pristine)
)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,144 @@
# Hungarian translation for openerp-web
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openerp-web package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-web\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-07-02 09:06+0200\n"
"PO-Revision-Date: 2012-09-06 08:35+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian <hu@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-09-14 05:05+0000\n"
"X-Generator: Launchpad (build 15944)\n"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:11
msgid "Calendar"
msgstr "Naptár"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:70
msgid "Filter"
msgstr "Szűrő"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:144
msgid "Today"
msgstr "Ma"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:145
msgid "Day"
msgstr "Nap"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:146
msgid "Week"
msgstr "Hét"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:147
msgid "Month"
msgstr "Hó"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:148
msgid "New event"
msgstr "Új esemény"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:149
msgid "Save"
msgstr "Mentés"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:150
msgid "Cancel"
msgstr "Mégsem"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:151
msgid "Details"
msgstr "Részletek"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:152
msgid "Edit"
msgstr "Szerkesztés"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:153
msgid "Delete"
msgstr "Törlés"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:155
msgid "Event will be deleted permanently, are you sure?"
msgstr "Az esemény véglegesen törlődik, biztos benne?"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:156
#: addons/web_calendar/static/src/js/calendar.js:169
msgid "Description"
msgstr "Leírás"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:157
msgid "Time period"
msgstr "Időintervallum"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:158
msgid "Full day"
msgstr "Egész nap"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:161
msgid "Do you want to edit the whole set of repeated events?"
msgstr "Az összes ismétlődő eseményt szerkeszteni akarja?"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:162
msgid "Repeat event"
msgstr "Esemény ismétlése"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:163
msgid "Disabled"
msgstr "Tiltva"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:164
msgid "Enabled"
msgstr "Engedélyezve"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:167
#: addons/web_calendar/static/src/js/calendar.js:175
msgid "Agenda"
msgstr "Napirend"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:168
msgid "Date"
msgstr "Dátum"
#. openerp-web
#: addons/web_calendar/static/src/js/calendar.js:172
msgid "Year"
msgstr "Év"
#. 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;"
#~ msgid "Navigator"
#~ msgstr "Navigátor"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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