merge upstream
bzr revid: chs@openerp.com-20111103111333-93bu8xdgs30ry5ig bzr revid: chs@openerp.com-20111108154541-dsz5sjnf7xwihg06
This commit is contained in:
commit
6e735ccbbe
|
@ -43,6 +43,7 @@
|
||||||
"static/src/js/view_list.js",
|
"static/src/js/view_list.js",
|
||||||
"static/src/js/view_list_editable.js",
|
"static/src/js/view_list_editable.js",
|
||||||
"static/src/js/view_tree.js",
|
"static/src/js/view_tree.js",
|
||||||
|
"static/src/js/view_editor.js"
|
||||||
],
|
],
|
||||||
'css' : [
|
'css' : [
|
||||||
"static/lib/jquery.superfish/css/superfish.css",
|
"static/lib/jquery.superfish/css/superfish.css",
|
||||||
|
|
|
@ -129,6 +129,18 @@ class XmlRPCConnector(Connector):
|
||||||
# TODO should try except and wrap exception into LibException
|
# TODO should try except and wrap exception into LibException
|
||||||
return getattr(service, method)(*args)
|
return getattr(service, method)(*args)
|
||||||
|
|
||||||
|
class XmlRPCSConnector(XmlRPCConnector):
|
||||||
|
"""
|
||||||
|
A type of connector that uses the secured XMLRPC protocol.
|
||||||
|
"""
|
||||||
|
PROTOCOL = 'xmlrpcs'
|
||||||
|
|
||||||
|
__logger = _getChildLogger(_logger, 'connector.xmlrpcs')
|
||||||
|
|
||||||
|
def __init__(self, hostname, port=8071):
|
||||||
|
super(XmlRPCSConnector, self).__init__(hostname, port)
|
||||||
|
self.url = 'https://%s:%d/xmlrpc' % (self.hostname, self.port)
|
||||||
|
|
||||||
class NetRPC_Exception(Exception):
|
class NetRPC_Exception(Exception):
|
||||||
"""
|
"""
|
||||||
Exception for NetRPC errors.
|
Exception for NetRPC errors.
|
||||||
|
@ -438,6 +450,7 @@ class Model(object):
|
||||||
:return: A list of dictionaries containing all the specified fields.
|
:return: A list of dictionaries containing all the specified fields.
|
||||||
"""
|
"""
|
||||||
record_ids = self.search(domain or [], offset, limit or False, order or False, context or {})
|
record_ids = self.search(domain or [], offset, limit or False, order or False, context or {})
|
||||||
|
if not record_ids: return []
|
||||||
records = self.read(record_ids, fields or [], context or {})
|
records = self.read(record_ids, fields or [], context or {})
|
||||||
return records
|
return records
|
||||||
|
|
||||||
|
@ -450,15 +463,17 @@ def get_connector(hostname=None, protocol="xmlrpc", port="auto"):
|
||||||
:param port: The number of the port. Defaults to auto.
|
:param port: The number of the port. Defaults to auto.
|
||||||
"""
|
"""
|
||||||
if port == 'auto':
|
if port == 'auto':
|
||||||
port = 8069 if protocol=="xmlrpc" else 8070
|
port = 8069 if protocol=="xmlrpc" else (8070 if protocol == "netrpc" else 8071)
|
||||||
if protocol == "xmlrpc":
|
if protocol == "xmlrpc":
|
||||||
return XmlRPCConnector(hostname, port)
|
return XmlRPCConnector(hostname, port)
|
||||||
|
elif protocol == "xmlrpcs":
|
||||||
|
return XmlRPCSConnector(hostname, port)
|
||||||
elif protocol == "netrpc":
|
elif protocol == "netrpc":
|
||||||
return NetRPCConnector(hostname, port)
|
return NetRPCConnector(hostname, port)
|
||||||
elif protocol == "local":
|
elif protocol == "local":
|
||||||
return LocalConnector()
|
return LocalConnector()
|
||||||
else:
|
else:
|
||||||
raise ValueError("You must choose xmlrpc or netrpc or local")
|
raise ValueError("You must choose xmlrpc(s), netrpc or local")
|
||||||
|
|
||||||
def get_connection(hostname=None, protocol="xmlrpc", port='auto', database=None,
|
def get_connection(hostname=None, protocol="xmlrpc", port='auto', database=None,
|
||||||
login=None, password=None, user_id=None):
|
login=None, password=None, user_id=None):
|
||||||
|
|
|
@ -50,19 +50,25 @@ def concat_xml(file_list):
|
||||||
return ElementTree.tostring(root, 'utf-8'), files_timestamp
|
return ElementTree.tostring(root, 'utf-8'), files_timestamp
|
||||||
|
|
||||||
|
|
||||||
def concat_files(file_list):
|
def concat_files(file_list, reader=None):
|
||||||
""" Concatenate file content
|
""" Concatenate file content
|
||||||
return (concat,timestamp)
|
return (concat,timestamp)
|
||||||
concat: concatenation of file content
|
concat: concatenation of file content, read by `reader`
|
||||||
timestamp: max(os.path.getmtime of file_list)
|
timestamp: max(os.path.getmtime of file_list)
|
||||||
"""
|
"""
|
||||||
|
if reader is None:
|
||||||
|
def reader(f):
|
||||||
|
with open(f) as fp:
|
||||||
|
return fp.read()
|
||||||
|
|
||||||
files_content = []
|
files_content = []
|
||||||
files_timestamp = 0
|
files_timestamp = 0
|
||||||
for fname in file_list:
|
for fname in file_list:
|
||||||
ftime = os.path.getmtime(fname)
|
ftime = os.path.getmtime(fname)
|
||||||
if ftime > files_timestamp:
|
if ftime > files_timestamp:
|
||||||
files_timestamp = ftime
|
files_timestamp = ftime
|
||||||
files_content.append(open(fname).read())
|
|
||||||
|
files_content.append(reader(fname))
|
||||||
files_concat = "".join(files_content)
|
files_concat = "".join(files_content)
|
||||||
return files_concat,files_timestamp
|
return files_concat,files_timestamp
|
||||||
|
|
||||||
|
@ -130,8 +136,36 @@ class WebClient(openerpweb.Controller):
|
||||||
|
|
||||||
@openerpweb.httprequest
|
@openerpweb.httprequest
|
||||||
def css(self, req, mods=None):
|
def css(self, req, mods=None):
|
||||||
files = [f[0] for f in self.manifest_glob(req, mods, 'css')]
|
|
||||||
content,timestamp = concat_files(files)
|
files = list(self.manifest_glob(req, mods, 'css'))
|
||||||
|
file_map = dict(files)
|
||||||
|
|
||||||
|
rx_import = re.compile(r"""@import\s+('|")(?!'|"|/|https?://)""", re.U)
|
||||||
|
rx_url = re.compile(r"""url\s*\(\s*('|"|)(?!'|"|/|https?://)""", re.U)
|
||||||
|
|
||||||
|
|
||||||
|
def reader(f):
|
||||||
|
"""read the a css file and absolutify all relative uris"""
|
||||||
|
with open(f) as fp:
|
||||||
|
data = fp.read()
|
||||||
|
|
||||||
|
web_path = file_map[f]
|
||||||
|
web_dir = os.path.dirname(web_path)
|
||||||
|
|
||||||
|
data = re.sub(
|
||||||
|
rx_import,
|
||||||
|
r"""@import \1%s/""" % (web_dir,),
|
||||||
|
data,
|
||||||
|
)
|
||||||
|
|
||||||
|
data = re.sub(
|
||||||
|
rx_url,
|
||||||
|
r"""url(\1%s/""" % (web_dir,),
|
||||||
|
data,
|
||||||
|
)
|
||||||
|
return data
|
||||||
|
|
||||||
|
content,timestamp = concat_files((f[0] for f in files), reader)
|
||||||
# TODO use timestamp to set Last mofified date and E-tag
|
# TODO use timestamp to set Last mofified date and E-tag
|
||||||
return req.make_response(content, [('Content-Type', 'text/css')])
|
return req.make_response(content, [('Content-Type', 'text/css')])
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,699 @@
|
||||||
|
# Arabic translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:38+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-08 05:44+0000\n"
|
||||||
|
"Last-Translator: Ahmad Khayyat <Unknown>\n"
|
||||||
|
"Language-Team: Arabic <ar@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: 2011-11-08 06:12+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
|
msgid ""
|
||||||
|
"Warning, the record has been modified, your changes will be discarded."
|
||||||
|
msgstr "تحذير، تم تحرير السجل، تعديلاتك سيتم تجاهلها"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/view_form.js:1659
|
||||||
|
msgid "<em> Search More...</em>"
|
||||||
|
msgstr "<em> مزيداً من البحث...</em>"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/view_form.js:1672
|
||||||
|
#, python-format
|
||||||
|
msgid "<em> Create \"<strong>%s</strong>\"</em>"
|
||||||
|
msgstr "<em> إنشاء \"<strong>%s</strong>\"</em>"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/view_form.js:1678
|
||||||
|
msgid "<em> Create and Edit...</em>"
|
||||||
|
msgstr "<em> إنشاء و تحرير...</em>"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:568
|
||||||
|
msgid "You must choose at least one record."
|
||||||
|
msgstr "عليك إختيار سجل واحد علي الأقل."
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:569
|
||||||
|
msgid "Warning"
|
||||||
|
msgstr "تحذير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:609
|
||||||
|
msgid "Translations"
|
||||||
|
msgstr "ترجمات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save"
|
||||||
|
msgstr "حفظ"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:615
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "إغلاق"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "x"
|
||||||
|
msgstr "x"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "#{title}"
|
||||||
|
msgstr "#{لقب}"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "#{text}"
|
||||||
|
msgstr "#{text}"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Powered by"
|
||||||
|
msgstr "مدعوم من kifcaliph و"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "openerp.com"
|
||||||
|
msgstr "openerp.com"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "."
|
||||||
|
msgstr "."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "جاري التحميل..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "إنشاء"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Drop"
|
||||||
|
msgstr "إزالة"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Backup"
|
||||||
|
msgstr "نسخة إحتياطية"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Restore"
|
||||||
|
msgstr "استرجاع"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "كلمة المرور"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Back to Login"
|
||||||
|
msgstr "العودة للدخول"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "CREATE DATABASE"
|
||||||
|
msgstr "إنشاء قاعدة بيانات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Master password:"
|
||||||
|
msgstr "كلمة المرور الرئيسية:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "New database name:"
|
||||||
|
msgstr "اسم قاعدة البيانات الجديدة:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Load Demonstration data:"
|
||||||
|
msgstr "تحميل البيانات الوهمية:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Default language:"
|
||||||
|
msgstr "اللغة الافتراضية:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Admin password:"
|
||||||
|
msgstr "كلمة مرور المشرف العام:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Confirm password:"
|
||||||
|
msgstr "تأكيد كلمة المرور:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "DROP DATABASE"
|
||||||
|
msgstr "إسقاط قاعدة البيانات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Database:"
|
||||||
|
msgstr "قاعدة البيانات:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Master Password:"
|
||||||
|
msgstr "كلمة المرور الرئيسية:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "BACKUP DATABASE"
|
||||||
|
msgstr "نسخ إحتياطي لقاعدة البيانات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "RESTORE DATABASE"
|
||||||
|
msgstr "إسترجاع قاعدة بيانات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "File:"
|
||||||
|
msgstr "ملف:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "CHANGE MASTER PASSWORD"
|
||||||
|
msgstr "تغيير كلمة المرور الرئيسية"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "New master password:"
|
||||||
|
msgstr "كلمة مرور رئيسية جديدة:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Confirm new master password:"
|
||||||
|
msgstr "تأكيد كلمة المرور الرئيسية الجديدة:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "User:"
|
||||||
|
msgstr "مستخدم:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "كلمة المرور:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Database"
|
||||||
|
msgstr "قاعدة بيانات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Login"
|
||||||
|
msgstr "تسجيل الدخول"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Bad username or password"
|
||||||
|
msgstr "اسم مستخدم او كلمة مرور خاطئة"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"We think that daily job activities can be more intuitive, efficient, "
|
||||||
|
"automated, .. and even fun."
|
||||||
|
msgstr "نؤمن بأن نشاط العمل اليومي يمكن أن يكون بديهي، فعال، سريع و ممتع"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP's vision to be:"
|
||||||
|
msgstr "رؤي برنامج OpenERP هي:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Full featured"
|
||||||
|
msgstr "كامل الأوصاف"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"Today's enterprise challenges are multiple. We provide one module for each "
|
||||||
|
"need."
|
||||||
|
msgstr ""
|
||||||
|
"تتعدد تحديات المنشآت اليوم، و لذلك نوفر العديد من الوحدات البرمجية لكل "
|
||||||
|
"احتياج."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Open Source"
|
||||||
|
msgstr "مفتوح المصدر"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"To Build a great product, we rely on the knowledge of thousands of "
|
||||||
|
"contributors."
|
||||||
|
msgstr "لبناء منتج قوي، نحن نعتمد علي معرفة ألاف المساهمين."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "User Friendly"
|
||||||
|
msgstr "سهل الإستخدام"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"In order to be productive, people need clean and easy to use interface."
|
||||||
|
msgstr "تتمثل الإنتاجية في حاجة الأفراد إلي إستخدام واجهة سهلة و لائقة."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "("
|
||||||
|
msgstr "("
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ")"
|
||||||
|
msgstr ")"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "LOGOUT"
|
||||||
|
msgstr "تسجيل الخروج"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "«"
|
||||||
|
msgstr "«"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "»"
|
||||||
|
msgstr "»"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "oe_secondary_menu_item"
|
||||||
|
msgstr "oe_secondary_menu_item"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "oe_secondary_submenu_item"
|
||||||
|
msgstr "oe_secondary_submenu_item"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Hide this tip"
|
||||||
|
msgstr "إخفاء هذه الملحوظة"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Disable all tips"
|
||||||
|
msgstr "تعطيل جميع الإرشادات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "View#"
|
||||||
|
msgstr "View#"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Fields"
|
||||||
|
msgstr "حقول"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "View labels"
|
||||||
|
msgstr "عرض التسميات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Sidebar Relates"
|
||||||
|
msgstr "روابط الشريط الجانبي"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Field"
|
||||||
|
msgstr "حقل"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ":"
|
||||||
|
msgstr ":"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Translate view"
|
||||||
|
msgstr "ترجمة العرض"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Translate sidebar"
|
||||||
|
msgstr "ترجمة الشريط الجانبي"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Delete"
|
||||||
|
msgstr "حذف"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "First"
|
||||||
|
msgstr "الأول"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "<"
|
||||||
|
msgstr "<"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ">"
|
||||||
|
msgstr ">"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Last"
|
||||||
|
msgstr "الأخير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "♻"
|
||||||
|
msgstr "♻"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save & Edit"
|
||||||
|
msgstr "حفظ و تحرير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Create & Edit"
|
||||||
|
msgstr "إنشاء و تحرير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "New"
|
||||||
|
msgstr "جديد"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Duplicate"
|
||||||
|
msgstr "تكرار"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Readonly/Editable"
|
||||||
|
msgstr "للقراءة فقط/قابل للتحرير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "<<"
|
||||||
|
msgstr ">>"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "0"
|
||||||
|
msgstr "0"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "/"
|
||||||
|
msgstr "/"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ">>"
|
||||||
|
msgstr ">>"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "اضافة"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Unhandled widget"
|
||||||
|
msgstr "أداة غير معالجة"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "?"
|
||||||
|
msgstr "؟"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "#"
|
||||||
|
msgstr "#"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "تم"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Open..."
|
||||||
|
msgstr "فتح..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Create..."
|
||||||
|
msgstr "إنشاء..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Search..."
|
||||||
|
msgstr "بحث..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "..."
|
||||||
|
msgstr "..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Uploading ..."
|
||||||
|
msgstr "جاري التحميل..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Select"
|
||||||
|
msgstr "حدّد"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save As"
|
||||||
|
msgstr "حفظ كـ"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "إفراغ"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Advanced Filter"
|
||||||
|
msgstr "مرشحات متقدمة"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "-- Filters --"
|
||||||
|
msgstr "-- مرشحات --"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "-- Actions --"
|
||||||
|
msgstr "-- إجراءات --"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save Filter"
|
||||||
|
msgstr "حفظ المرشح"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Manage Filters"
|
||||||
|
msgstr "إدارة المرشحات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Filter Name:"
|
||||||
|
msgstr "اسم المرشح:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "(Any existing filter with the same name will be replaced)"
|
||||||
|
msgstr "(لاحظ أن أي مرشح بنفس الاسم سيتم إستبداله)"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Any of the following conditions must match"
|
||||||
|
msgstr "يجب تطابق أي من الشروط التالية"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "All the following conditions must match"
|
||||||
|
msgstr "يجب تطابق كل الشروط التالية"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "None of the following conditions must match"
|
||||||
|
msgstr "لا يجب تطابق أي من الشروط التالية"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Add condition"
|
||||||
|
msgstr "إضافة شرط"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "and"
|
||||||
|
msgstr "و"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "إلغاء"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save & New"
|
||||||
|
msgstr "حفظ و جديد"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save & Close"
|
||||||
|
msgstr "حفظ و إغلاق"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Export"
|
||||||
|
msgstr "تصدير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"This wizard will export all data that matches the current search criteria to "
|
||||||
|
"a CSV file.\n"
|
||||||
|
" You can export all data or only the fields that can be "
|
||||||
|
"reimported after modification."
|
||||||
|
msgstr ""
|
||||||
|
"هذا المعالج سيقوم بتصدير كافة البيانات التي تطابق شروط البحث الحالية لملف "
|
||||||
|
"CSV.\n"
|
||||||
|
" يمكنك تصدير كل البيانات أو الحقول التي يمكن إستيرادها بعد "
|
||||||
|
"التعديل."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Export Type:"
|
||||||
|
msgstr "نوع التصدير:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Import Compatible Export"
|
||||||
|
msgstr "إستيراد بيانات ملائمة للتصدير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Export all Data"
|
||||||
|
msgstr "تصدير جميع البيانات"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Export Formats"
|
||||||
|
msgstr "تنسيقات التصدير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Available fields"
|
||||||
|
msgstr "الحقول المتوفرة"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Fields to export"
|
||||||
|
msgstr "حقول للتصدير"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save fields list"
|
||||||
|
msgstr "حفظ قائمة الحقول"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Remove"
|
||||||
|
msgstr "إزالة"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Remove All"
|
||||||
|
msgstr "إزالة الكل"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "اسم"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid " "
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save as:"
|
||||||
|
msgstr "حفظ باسم:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Ok"
|
||||||
|
msgstr "تم"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Saved exports:"
|
||||||
|
msgstr "مُصدرة محفوظة:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Old Password:"
|
||||||
|
msgstr "كلمة المرور القديمة:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "New Password:"
|
||||||
|
msgstr "كلمة المرور الجديدة:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Confirm Password:"
|
||||||
|
msgstr "تأكيد كلمة المرور:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Import"
|
||||||
|
msgstr "استيراد"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "1. Import a .CSV file"
|
||||||
|
msgstr "إستيراد ملف .CSV"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"Select a .CSV file to import. If you need a sample of file to import,\n"
|
||||||
|
" you should use the export tool with the \"Import Compatible\" option."
|
||||||
|
msgstr ""
|
||||||
|
"اختر ملف .CSV للإستيراد. إذا كنت بحاجة إلى عينة ملف للاستيراد،\n"
|
||||||
|
" يجب عليك إستخدام أداة تصدير مع الخيار \" Compatible\" option."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "CSV File:"
|
||||||
|
msgstr "ملف CSV :"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "2. Check your file format"
|
||||||
|
msgstr "تأكد من إمتداد الملف"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Import Options"
|
||||||
|
msgstr "خيارات الاستيراد"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Does your file have titles?"
|
||||||
|
msgstr "هل لملفك عناوين؟"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Separator:"
|
||||||
|
msgstr "فاصل :"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Delimiter:"
|
||||||
|
msgstr "محدد:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Encoding:"
|
||||||
|
msgstr "ترميز:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "UTF-8"
|
||||||
|
msgstr "UTF-8"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Latin 1"
|
||||||
|
msgstr "Latin 1"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Lines to skip"
|
||||||
|
msgstr "خطوط للتجاهل"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "The import failed due to:"
|
||||||
|
msgstr "فشلت عملية الإستيراد للأسباب التالية:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Here is a preview of the file we could not import:"
|
||||||
|
msgstr "هذه معاينة لملف لم يتمكن من إستيراده:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP Web"
|
||||||
|
msgstr "OpenERP عبر الإنترنت"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Version"
|
||||||
|
msgstr "الإصدار"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved."
|
||||||
|
msgstr "جميع حقوق النشر محفوظة لـ © 2011-TODAY OpenERP SA."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP is a trademark of the"
|
||||||
|
msgstr "OpenERP هي علامة تجارية لـ"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP SA Company"
|
||||||
|
msgstr "شركة OpenERP SA"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Licenced under the terms of"
|
||||||
|
msgstr "النظام مرخص بشروط"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "GNU Affero General Public License"
|
||||||
|
msgstr "GNU Affero General Public License"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "About OpenERP"
|
||||||
|
msgstr "عن OpenERP"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP"
|
||||||
|
msgstr "OpenERP"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"is a free enterprise-scale software system that is designed to boost\n"
|
||||||
|
" productivity and profit through data integration. It connects, "
|
||||||
|
"improves and\n"
|
||||||
|
" manages business processes in areas such as sales, finance, "
|
||||||
|
"supply chain,\n"
|
||||||
|
" project management, production, services, CRM, etc..."
|
||||||
|
msgstr ""
|
||||||
|
"هو نظام حر يناسب المؤسسات و الشركات و تم تصميمه لتعزيز\n"
|
||||||
|
" الإنتاجية و الربح من خلال تكامل البيانات. فيمكنك من ربط، و "
|
||||||
|
"تحسين، و\n"
|
||||||
|
" إدارة العمليات التجارية في إدارات مثل المبيعات، المحاسبة "
|
||||||
|
"المالية، المخازن،\n"
|
||||||
|
" إدارة المشروعات، الإنتاج و العمليات الصناعية، و القطاع الخدمي، , "
|
||||||
|
"إدارة علاقات العملاء..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"The system is platform-independent, and can be installed on Windows, Mac OS "
|
||||||
|
"X,\n"
|
||||||
|
" and various Linux and other Unix-based distributions. Its "
|
||||||
|
"architecture enables\n"
|
||||||
|
" new functionality to be rapidly created, modifications to be "
|
||||||
|
"made to a\n"
|
||||||
|
" production system and migration to a new version to be "
|
||||||
|
"straightforward."
|
||||||
|
msgstr ""
|
||||||
|
"يعمل البرنامج مع العديد من الأنظمة مثل Windows، و Mac OS X، و\n"
|
||||||
|
" معظم أنظمة لينكس بالإضافة إلي اليونكس. فلقد تم تصميمه ليتيح "
|
||||||
|
"إمكانية\n"
|
||||||
|
" إضافة وظائف أخري له بسهولة، و برمجته و تعديله بسرعه ليلائم "
|
||||||
|
"الواقع العملي\n"
|
||||||
|
" كما أنه يتيح سهولة نقل البيانات من إصدار إلي إصدار."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"Depending on your needs, OpenERP is available through a web or application "
|
||||||
|
"client."
|
||||||
|
msgstr ""
|
||||||
|
"حسب إحتياجاتك، نظام OpenERP متاح من خلال تطبيق الويب أو البرنامج المحلي."
|
|
@ -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: 2011-10-12 04:44+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14124)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -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: 2011-10-08 05:29+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -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: 2011-10-24 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14185)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -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: 2011-10-09 05:22+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -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: 2011-10-08 05:29+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -0,0 +1,687 @@
|
||||||
|
# Polish translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:38+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-04 16:44+0000\n"
|
||||||
|
"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) <grzegorz@openglobe.pl>\n"
|
||||||
|
"Language-Team: Polish <pl@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: 2011-11-05 06:04+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
|
msgid ""
|
||||||
|
"Warning, the record has been modified, your changes will be discarded."
|
||||||
|
msgstr "Uwaga, rekord został zmodyfikowany, twoje zmiany zostaną odrzucone."
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/view_form.js:1659
|
||||||
|
msgid "<em> Search More...</em>"
|
||||||
|
msgstr "<em> Szukaj dalej...</em>"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/view_form.js:1672
|
||||||
|
#, python-format
|
||||||
|
msgid "<em> Create \"<strong>%s</strong>\"</em>"
|
||||||
|
msgstr "<em> Utwórz \"<strong>%s</strong>\"</em>"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/view_form.js:1678
|
||||||
|
msgid "<em> Create and Edit...</em>"
|
||||||
|
msgstr "<em> Utwórz i edytuj...</em>"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:568
|
||||||
|
msgid "You must choose at least one record."
|
||||||
|
msgstr "Musisz wybrac co najmniej jeden rekord."
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:569
|
||||||
|
msgid "Warning"
|
||||||
|
msgstr "Ostrzeżenie"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:609
|
||||||
|
msgid "Translations"
|
||||||
|
msgstr "Tłumaczenia"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save"
|
||||||
|
msgstr "Zapisz"
|
||||||
|
|
||||||
|
#: addons/web/static/src/js/views.js:615
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Zamknij"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "x"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "#{title}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "#{text}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Powered by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "openerp.com"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Wczytywanie..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "Utwórz"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Drop"
|
||||||
|
msgstr "Usuń bazę danych"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Backup"
|
||||||
|
msgstr "Kopia zapasowa bazy danych"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Restore"
|
||||||
|
msgstr "Odtwórz bazę danych"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Hasło"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Back to Login"
|
||||||
|
msgstr "Wróć do logowania"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "CREATE DATABASE"
|
||||||
|
msgstr "UTWÓRZ BAZĘ DANYCH"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Master password:"
|
||||||
|
msgstr "Hasło madrzędne:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "New database name:"
|
||||||
|
msgstr "Nazwa nowej bazy danych:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Load Demonstration data:"
|
||||||
|
msgstr "Wczytaj dane demonstracyjne:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Default language:"
|
||||||
|
msgstr "Domyślny język:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Admin password:"
|
||||||
|
msgstr "Hasło admina:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Confirm password:"
|
||||||
|
msgstr "Potwierdź hasło:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "DROP DATABASE"
|
||||||
|
msgstr "USUŃ BAZĘ DANYCH"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Database:"
|
||||||
|
msgstr "Baza danych:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Master Password:"
|
||||||
|
msgstr "Hasło nadrzędne:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "BACKUP DATABASE"
|
||||||
|
msgstr "ZAPISZ BAZĘ"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "RESTORE DATABASE"
|
||||||
|
msgstr "ODTWÓRZ BAZĘ"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "File:"
|
||||||
|
msgstr "Plik:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "CHANGE MASTER PASSWORD"
|
||||||
|
msgstr "ZMIEŃ HASŁO NADRZĘDNE"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "New master password:"
|
||||||
|
msgstr "Nowe hasło nadrzędne:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Confirm new master password:"
|
||||||
|
msgstr "Potwierdź nowe hasło nadrzędne:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "User:"
|
||||||
|
msgstr "Użytkownik:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Hasło:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Database"
|
||||||
|
msgstr "Baza danych"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Login"
|
||||||
|
msgstr "Login"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Bad username or password"
|
||||||
|
msgstr "Niepoprawna nazwa użytkownika lub hasło"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"We think that daily job activities can be more intuitive, efficient, "
|
||||||
|
"automated, .. and even fun."
|
||||||
|
msgstr ""
|
||||||
|
"Sądzimy, że codzienne zadania mogą być bardziej intuicyjne, efektywne, "
|
||||||
|
"zautomatyzowan, ... a nawet przyjemne."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP's vision to be:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Full featured"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"Today's enterprise challenges are multiple. We provide one module for each "
|
||||||
|
"need."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Open Source"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"To Build a great product, we rely on the knowledge of thousands of "
|
||||||
|
"contributors."
|
||||||
|
msgstr ""
|
||||||
|
"Przy budowie wielkiego produktu polegamy na wiedzy tysięcy społeczników."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "User Friendly"
|
||||||
|
msgstr "Przyjazne dla użytkownika"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"In order to be productive, people need clean and easy to use interface."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "("
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ")"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "LOGOUT"
|
||||||
|
msgstr "WYLOGUJ"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "«"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "»"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "oe_secondary_menu_item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "oe_secondary_submenu_item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Hide this tip"
|
||||||
|
msgstr "Ukryj tę wskazówkę"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Disable all tips"
|
||||||
|
msgstr "Wyłącz wszystkie wskazówki"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "View#"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Fields"
|
||||||
|
msgstr "Pola"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "View labels"
|
||||||
|
msgstr "Pokaż etykiety"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Sidebar Relates"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Field"
|
||||||
|
msgstr "Pole"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ":"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Translate view"
|
||||||
|
msgstr "Przetłumacz widok"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Translate sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Delete"
|
||||||
|
msgstr "Usuń"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "First"
|
||||||
|
msgstr "Pierwsze"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "<"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ">"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Last"
|
||||||
|
msgstr "Ostatnie"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "♻"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save & Edit"
|
||||||
|
msgstr "Zapisz i edytuj"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Create & Edit"
|
||||||
|
msgstr "Utwórz i edytuj"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nowy"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Duplicate"
|
||||||
|
msgstr "Duplikuj"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Readonly/Editable"
|
||||||
|
msgstr "Tylko odczyt/Edytowalne"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "<<"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "/"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ">>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Dodaj"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Unhandled widget"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "#"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Wykonano"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Open..."
|
||||||
|
msgstr "Otwórz..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Create..."
|
||||||
|
msgstr "Utwórz..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Search..."
|
||||||
|
msgstr "Wyszukaj..."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Uploading ..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Select"
|
||||||
|
msgstr "Wybierz"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save As"
|
||||||
|
msgstr "Zapisz jako"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "Wyczyść"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Advanced Filter"
|
||||||
|
msgstr "Zaawansowany filtr"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "-- Filters --"
|
||||||
|
msgstr "-- Filtry --"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "-- Actions --"
|
||||||
|
msgstr "-- Akcje --"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save Filter"
|
||||||
|
msgstr "Zapisz filtr"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Manage Filters"
|
||||||
|
msgstr "Zarządzaj filtrami"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Filter Name:"
|
||||||
|
msgstr "Nazwa filtra:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "(Any existing filter with the same name will be replaced)"
|
||||||
|
msgstr "(Każdy filtr o tej samej nazwie zostanie zamazany)"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Any of the following conditions must match"
|
||||||
|
msgstr "Jeden z tych warunków musi być spełniony"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "All the following conditions must match"
|
||||||
|
msgstr "Wszystkie warunki muszą być spełnione"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "None of the following conditions must match"
|
||||||
|
msgstr "Żadeń z tych warunków nie może być spełniony"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Add condition"
|
||||||
|
msgstr "Dodaj warunek"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "and"
|
||||||
|
msgstr "i"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Anuluj"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save & New"
|
||||||
|
msgstr "Zapisz i nowy"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save & Close"
|
||||||
|
msgstr "Zapisz i zamknij"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Export"
|
||||||
|
msgstr "Eksportuj"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"This wizard will export all data that matches the current search criteria to "
|
||||||
|
"a CSV file.\n"
|
||||||
|
" You can export all data or only the fields that can be "
|
||||||
|
"reimported after modification."
|
||||||
|
msgstr ""
|
||||||
|
"Ten kreator wyeksportuje wszystkie dane, które spełniają bieżące kryteria "
|
||||||
|
"wyszukiwania, do pliku CSV.\n"
|
||||||
|
" Możesz eksportować wszystkie dane lub tylko pola, które mają być "
|
||||||
|
"importowane po zmianie."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Export Type:"
|
||||||
|
msgstr "Typ eksportu:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Import Compatible Export"
|
||||||
|
msgstr "Eksport kompatybilny z importem"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Export all Data"
|
||||||
|
msgstr "Eksportuj wszystkie dane"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Export Formats"
|
||||||
|
msgstr "Format eksportu"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Available fields"
|
||||||
|
msgstr "Dostępne pola"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Fields to export"
|
||||||
|
msgstr "Pola do eksportu"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save fields list"
|
||||||
|
msgstr "Zapisz listę pól"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Remove"
|
||||||
|
msgstr "Usuń"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Remove All"
|
||||||
|
msgstr "Usuń wszystko"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Nazwa"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid " "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Save as:"
|
||||||
|
msgstr "Zapisz jako:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Ok"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Saved exports:"
|
||||||
|
msgstr "Zapisane eksporty"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Old Password:"
|
||||||
|
msgstr "Poprzednie hasło:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "New Password:"
|
||||||
|
msgstr "Nowe hasło:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Confirm Password:"
|
||||||
|
msgstr "Potwierdź hasło:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Import"
|
||||||
|
msgstr "Importuj"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "1. Import a .CSV file"
|
||||||
|
msgstr "1. Importuj plik .CSV"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"Select a .CSV file to import. If you need a sample of file to import,\n"
|
||||||
|
" you should use the export tool with the \"Import Compatible\" option."
|
||||||
|
msgstr ""
|
||||||
|
"Wybierz plik .CSV do importu. Jeśli chcesz zobaczyć przykład pliku do "
|
||||||
|
"importu,\n"
|
||||||
|
" powinieneś wyeksportować dane z opcją \"Kompatybilne z importem\"."
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "CSV File:"
|
||||||
|
msgstr "Plik CSV:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "2. Check your file format"
|
||||||
|
msgstr "2. Sprawdź format pliku"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Import Options"
|
||||||
|
msgstr "Opcje importu"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Does your file have titles?"
|
||||||
|
msgstr "Czy plik zawiera nazwy pól?"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Separator:"
|
||||||
|
msgstr "Separator:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Delimiter:"
|
||||||
|
msgstr "Znak dziesiętny:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Encoding:"
|
||||||
|
msgstr "Kodowanie:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "UTF-8"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Latin 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Lines to skip"
|
||||||
|
msgstr "Linie do pominięcia"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "The import failed due to:"
|
||||||
|
msgstr "Import się nie udał z powodu:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Here is a preview of the file we could not import:"
|
||||||
|
msgstr "Oto podgląd pliku, którego nie można zaimportować:"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP Web"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Version"
|
||||||
|
msgstr "Wersja"
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP is a trademark of the"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP SA Company"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "Licenced under the terms of"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "GNU Affero General Public License"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "About OpenERP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid "OpenERP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"is a free enterprise-scale software system that is designed to boost\n"
|
||||||
|
" productivity and profit through data integration. It connects, "
|
||||||
|
"improves and\n"
|
||||||
|
" manages business processes in areas such as sales, finance, "
|
||||||
|
"supply chain,\n"
|
||||||
|
" project management, production, services, CRM, etc..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"The system is platform-independent, and can be installed on Windows, Mac OS "
|
||||||
|
"X,\n"
|
||||||
|
" and various Linux and other Unix-based distributions. Its "
|
||||||
|
"architecture enables\n"
|
||||||
|
" new functionality to be rapidly created, modifications to be "
|
||||||
|
"made to a\n"
|
||||||
|
" production system and migration to a new version to be "
|
||||||
|
"straightforward."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web/static/src/xml/base.xml:0
|
||||||
|
msgid ""
|
||||||
|
"Depending on your needs, OpenERP is available through a web or application "
|
||||||
|
"client."
|
||||||
|
msgstr ""
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web/static/src/js/view_form.js:355
|
#: addons/web/static/src/js/view_form.js:355
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
|
@ -1088,7 +1088,7 @@ label.error {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
.openerp .oe-view-manager-logs li:before {
|
.openerp .oe-view-manager-logs li:before {
|
||||||
content: '→ ';
|
content: '\2192 ';
|
||||||
}
|
}
|
||||||
.openerp .oe-view-manager-logs a {
|
.openerp .oe-view-manager-logs a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
@ -1421,3 +1421,31 @@ ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-after {
|
||||||
border-color: rgba(0,0,0,0);
|
border-color: rgba(0,0,0,0);
|
||||||
border-left-color: #B5B9FF;
|
border-left-color: #B5B9FF;
|
||||||
}
|
}
|
||||||
|
.openerp .oe_view_editor {
|
||||||
|
border-collapse: collapse;
|
||||||
|
padding: 0;
|
||||||
|
align: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.openerp .oe_view_editor_colum{
|
||||||
|
font-size: 90%;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: 0;
|
||||||
|
border-bottom: 1px solid #CFCCCC;
|
||||||
|
}
|
||||||
|
.openerp .oe_view_editor_row:hover{
|
||||||
|
background-color: #F3F3F3;
|
||||||
|
}
|
||||||
|
.openerp .oe_view_editor_tree_grid{
|
||||||
|
text-align: left;
|
||||||
|
white-space: nowrap;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.openerp .oe_view_editor_tree_grid a:hover {
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
.openerp .oe_view_editor_tree_grid a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ openerp.web = function(instance) {
|
||||||
openerp.web.formats(instance);
|
openerp.web.formats(instance);
|
||||||
openerp.web.chrome(instance);
|
openerp.web.chrome(instance);
|
||||||
openerp.web.data(instance);
|
openerp.web.data(instance);
|
||||||
var files = ["views","search","list","form","list_editable","web_mobile","view_tree","data_export","data_import"];
|
var files = ["views","search","list","form","list_editable","web_mobile","view_tree","data_export","data_import","view_editor"];
|
||||||
for(var i=0; i<files.length; i++) {
|
for(var i=0; i<files.length; i++) {
|
||||||
if(openerp.web[files[i]]) {
|
if(openerp.web[files[i]]) {
|
||||||
openerp.web[files[i]](instance);
|
openerp.web[files[i]](instance);
|
||||||
|
|
|
@ -29,11 +29,11 @@ openerp.web.Notification = openerp.web.Widget.extend(/** @lends openerp.web.Not
|
||||||
warn: function(title, text) {
|
warn: function(title, text) {
|
||||||
this.$element.notify('create', 'oe_notification_alert', {
|
this.$element.notify('create', 'oe_notification_alert', {
|
||||||
title: title,
|
title: title,
|
||||||
text: text,
|
text: text
|
||||||
}, {
|
}, {
|
||||||
expires: false,
|
expires: false
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ openerp.web.Dialog = openerp.web.OldWidget.extend(/** @lends openerp.web.Dialog#
|
||||||
openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({
|
openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({
|
||||||
init: function() {
|
init: function() {
|
||||||
this._super();
|
this._super();
|
||||||
openerp.connector.on_rpc_error.add(this.on_rpc_error);
|
openerp.connection.on_rpc_error.add(this.on_rpc_error);
|
||||||
},
|
},
|
||||||
on_rpc_error: function(error) {
|
on_rpc_error: function(error) {
|
||||||
this.error = error;
|
this.error = error;
|
||||||
|
@ -195,10 +195,20 @@ openerp.web.Loading = openerp.web.Widget.extend(/** @lends openerp.web.Loading#
|
||||||
init: function(parent, element_id) {
|
init: function(parent, element_id) {
|
||||||
this._super(parent, element_id);
|
this._super(parent, element_id);
|
||||||
this.count = 0;
|
this.count = 0;
|
||||||
|
this.blocked_ui = false;
|
||||||
this.session.on_rpc_request.add_first(this.on_rpc_event, 1);
|
this.session.on_rpc_request.add_first(this.on_rpc_event, 1);
|
||||||
this.session.on_rpc_response.add_last(this.on_rpc_event, -1);
|
this.session.on_rpc_response.add_last(this.on_rpc_event, -1);
|
||||||
},
|
},
|
||||||
on_rpc_event : function(increment) {
|
on_rpc_event : function(increment) {
|
||||||
|
var self = this;
|
||||||
|
if (!this.count && increment === 1) {
|
||||||
|
// Block UI after 3s
|
||||||
|
this.long_running_timer = setTimeout(function () {
|
||||||
|
self.blocked_ui = true;
|
||||||
|
$.blockUI();
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
|
|
||||||
this.count += increment;
|
this.count += increment;
|
||||||
if (this.count) {
|
if (this.count) {
|
||||||
//this.$element.html(QWeb.render("Loading", {}));
|
//this.$element.html(QWeb.render("Loading", {}));
|
||||||
|
@ -206,6 +216,12 @@ openerp.web.Loading = openerp.web.Widget.extend(/** @lends openerp.web.Loading#
|
||||||
this.$element.show();
|
this.$element.show();
|
||||||
this.widget_parent.$element.addClass('loading');
|
this.widget_parent.$element.addClass('loading');
|
||||||
} else {
|
} else {
|
||||||
|
clearTimeout(this.long_running_timer);
|
||||||
|
// Don't unblock if blocked by somebody else
|
||||||
|
if (self.blocked_ui) {
|
||||||
|
this.blocked_ui = false;
|
||||||
|
$.unblockUI();
|
||||||
|
}
|
||||||
this.$element.fadeOut();
|
this.$element.fadeOut();
|
||||||
this.widget_parent.$element.removeClass('loading');
|
this.widget_parent.$element.removeClass('loading');
|
||||||
}
|
}
|
||||||
|
|
|
@ -815,7 +815,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W
|
||||||
*/
|
*/
|
||||||
init: function(parent, /** @deprecated */ element_id) {
|
init: function(parent, /** @deprecated */ element_id) {
|
||||||
this._super();
|
this._super();
|
||||||
this.session = openerp.connector;
|
this.session = openerp.connection;
|
||||||
// if given an element_id, try to get the associated DOM element and save
|
// if given an element_id, try to get the associated DOM element and save
|
||||||
// a reference in this.$element. Else just generate a unique identifier.
|
// a reference in this.$element. Else just generate a unique identifier.
|
||||||
this.element_id = element_id;
|
this.element_id = element_id;
|
||||||
|
@ -954,7 +954,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W
|
||||||
rpc: function(url, data, success, error) {
|
rpc: function(url, data, success, error) {
|
||||||
var def = $.Deferred().then(success, error);
|
var def = $.Deferred().then(success, error);
|
||||||
var self = this;
|
var self = this;
|
||||||
openerp.connector.rpc(url, data). then(function() {
|
openerp.connection.rpc(url, data). then(function() {
|
||||||
if (!self.widget_is_stopped)
|
if (!self.widget_is_stopped)
|
||||||
def.resolve.apply(def, arguments);
|
def.resolve.apply(def, arguments);
|
||||||
}, function() {
|
}, function() {
|
||||||
|
@ -1034,6 +1034,11 @@ if ($.blockUI) {
|
||||||
$.blockUI.defaults.baseZ = 1100;
|
$.blockUI.defaults.baseZ = 1100;
|
||||||
$.blockUI.defaults.message = '<img src="/web/static/src/img/throbber2.gif">';
|
$.blockUI.defaults.message = '<img src="/web/static/src/img/throbber2.gif">';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Setup default connection */
|
||||||
|
openerp.connection = new openerp.web.Connection();
|
||||||
|
|
||||||
|
/** Configure default qweb */
|
||||||
openerp.web._t = new openerp.web.TranslationDataBase().build_translation_function();
|
openerp.web._t = new openerp.web.TranslationDataBase().build_translation_function();
|
||||||
openerp.web.qweb = new QWeb2.Engine();
|
openerp.web.qweb = new QWeb2.Engine();
|
||||||
openerp.web.qweb.debug = (window.location.search.indexOf('?debug') !== -1);
|
openerp.web.qweb.debug = (window.location.search.indexOf('?debug') !== -1);
|
||||||
|
|
|
@ -791,7 +791,7 @@ openerp.web.Model = openerp.web.CallbackEnabled.extend({
|
||||||
this.model_name = model_name;
|
this.model_name = model_name;
|
||||||
},
|
},
|
||||||
rpc: function() {
|
rpc: function() {
|
||||||
var c = openerp.connector;
|
var c = openerp.connection;
|
||||||
return c.rpc.apply(c, arguments);
|
return c.rpc.apply(c, arguments);
|
||||||
},
|
},
|
||||||
get_func: function(method_name) {
|
get_func: function(method_name) {
|
||||||
|
|
|
@ -0,0 +1,516 @@
|
||||||
|
openerp.web.view_editor = function(openerp) {
|
||||||
|
var QWeb = openerp.web.qweb;
|
||||||
|
openerp.web.ViewEditor = openerp.web.Widget.extend({
|
||||||
|
init: function(parent, element_id, dataset, view, options) {
|
||||||
|
this._super(parent);
|
||||||
|
this.element_id = element_id
|
||||||
|
this.parent = parent
|
||||||
|
this.dataset = dataset;
|
||||||
|
this.model = dataset.model;
|
||||||
|
this.xml_id = 0;
|
||||||
|
},
|
||||||
|
start: function() {
|
||||||
|
this.init_view_editor();
|
||||||
|
},
|
||||||
|
init_view_editor: function() {
|
||||||
|
var self = this;
|
||||||
|
var action = {
|
||||||
|
name:'ViewEditor',
|
||||||
|
context:this.session.user_context,
|
||||||
|
domain: [["model", "=", this.dataset.model]],
|
||||||
|
res_model : 'ir.ui.view',
|
||||||
|
views : [[false, 'list']],
|
||||||
|
type: 'ir.actions.act_window',
|
||||||
|
target: "current",
|
||||||
|
limit : 80,
|
||||||
|
auto_search : true,
|
||||||
|
flags: {
|
||||||
|
sidebar: false,
|
||||||
|
deletable: false,
|
||||||
|
views_switcher: false,
|
||||||
|
action_buttons:false,
|
||||||
|
search_view:false,
|
||||||
|
pager:false,
|
||||||
|
radio: true
|
||||||
|
},
|
||||||
|
};
|
||||||
|
this.view_edit_dialog = new openerp.web.Dialog(this, {
|
||||||
|
modal: true,
|
||||||
|
title: 'ViewEditor',
|
||||||
|
width: 750,
|
||||||
|
height: 500,
|
||||||
|
buttons: {
|
||||||
|
"Create": function(){
|
||||||
|
//to do
|
||||||
|
},
|
||||||
|
"Edit": function(){
|
||||||
|
self.xml_id=0;
|
||||||
|
self.get_data();
|
||||||
|
},
|
||||||
|
"Close": function(){
|
||||||
|
self.view_edit_dialog.close();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
this.view_edit_dialog.start().open();
|
||||||
|
var action_manager = new openerp.web.ActionManager(this);
|
||||||
|
action_manager.appendTo(this.view_edit_dialog);
|
||||||
|
action_manager.do_action(action);
|
||||||
|
},
|
||||||
|
check_attr: function(xml, tag, level) {
|
||||||
|
var obj = {'child_id': [], 'id': this.xml_id++, 'level': level+1, 'att_list': [], 'name': ""};
|
||||||
|
var render_name = "<" + tag;
|
||||||
|
obj.att_list.push(tag);
|
||||||
|
$(xml).each(function() {
|
||||||
|
_.each(this.attributes, function(attrs){
|
||||||
|
if (tag != 'button') {
|
||||||
|
if (attrs.nodeName == "string" || attrs.nodeName == "name" || attrs.nodeName == "index") {
|
||||||
|
render_name += ' ' + attrs.nodeName + '=' + '"' + attrs.nodeValue + '"' ;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (attrs.nodeName == "name") {
|
||||||
|
render_name += ' ' + attrs.nodeName + '=' + '"' + attrs.nodeValue + '"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
obj.att_list.push( [attrs.nodeName,attrs.nodeValue] );
|
||||||
|
});
|
||||||
|
render_name+= ">";
|
||||||
|
});
|
||||||
|
obj.name = render_name;
|
||||||
|
return obj;
|
||||||
|
},
|
||||||
|
save_object: function(val, parent_list, child_obj_list) {
|
||||||
|
var self = this;
|
||||||
|
var check_id = parent_list[0];
|
||||||
|
var p_list = parent_list.slice(1);
|
||||||
|
if (val.child_id.length != 0) {
|
||||||
|
_.each(val.child_id, function(val, key) {
|
||||||
|
if (val.id == check_id) {
|
||||||
|
if (p_list.length!=0) {
|
||||||
|
self.save_object(val, p_list, child_obj_list);
|
||||||
|
} else {
|
||||||
|
val.child_id = child_obj_list;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
val.child_id = child_obj_list;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
xml_node_create: function(xml, root, parent_list, parent_id, main_object){
|
||||||
|
var self = this;
|
||||||
|
var child_obj_list = [];
|
||||||
|
var children_list = $(xml).filter(root).children();
|
||||||
|
var parents = $(children_list[0]).parents().get();
|
||||||
|
_.each(children_list, function (child_node) {
|
||||||
|
child_obj_list.push(self.check_attr(child_node,child_node.tagName.toLowerCase(),parents.length));
|
||||||
|
});
|
||||||
|
if (children_list.length != 0) {
|
||||||
|
if (parents.length <= parent_list.length) {
|
||||||
|
parent_list.splice(parents.length - 1);
|
||||||
|
}
|
||||||
|
parent_list.push(parent_id);
|
||||||
|
self.save_object(main_object[0], parent_list.slice(1), child_obj_list);
|
||||||
|
}
|
||||||
|
for (var i = 0; i < children_list.length; i++) {
|
||||||
|
self.xml_node_create
|
||||||
|
(children_list[i], children_list[i].tagName.toLowerCase(),
|
||||||
|
parent_list, child_obj_list[i].id, main_object);
|
||||||
|
}
|
||||||
|
return main_object;
|
||||||
|
},
|
||||||
|
parse_xml: function(arch, view_id) {
|
||||||
|
var root = $(arch).filter(":first")[0];
|
||||||
|
var tag = root.tagName.toLowerCase();
|
||||||
|
var obj ={'child_id':[],'id':this.xml_id++,'level':0,'att_list':[],'name':"<view view_id='"+view_id+"'>"};
|
||||||
|
var root_object = this.check_attr(root,tag,0);
|
||||||
|
obj.child_id = this.xml_node_create(arch, tag, [], this.xml_id-1, [root_object], [])
|
||||||
|
return [obj];
|
||||||
|
},
|
||||||
|
get_data: function() {
|
||||||
|
var self = this;
|
||||||
|
var view_arch_list = [];
|
||||||
|
self.main_view_id =((this.view_edit_dialog.$element.find("input[name='radiogroup']:checked").parent()).parent()).attr('data-id');
|
||||||
|
var ve_dataset = new openerp.web.DataSet(this, 'ir.ui.view');
|
||||||
|
ve_dataset.read_ids([parseInt(self.main_view_id)], ['arch', 'type'], function (arch) {
|
||||||
|
one_object = self.parse_xml(arch[0].arch,self.main_view_id);
|
||||||
|
self.main_view_type = arch[0].type
|
||||||
|
view_arch_list.push({"view_id" : self.main_view_id, "arch" : arch[0].arch});
|
||||||
|
dataset = new openerp.web.DataSetSearch(self, 'ir.ui.view', null, null);
|
||||||
|
dataset.read_slice([], {domain : [['inherit_id','=', parseInt(self.main_view_id)]]}, function (result) {
|
||||||
|
_.each(result, function(res) {
|
||||||
|
view_arch_list.push({"view_id":res.id,"arch":res.arch});
|
||||||
|
self.inherit_view(one_object, res);
|
||||||
|
});
|
||||||
|
return self.edit_view({"main_object": one_object,
|
||||||
|
"parent_child_id": self.parent_child_list(one_object, []),
|
||||||
|
"arch": view_arch_list});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
parent_child_list : function(one_object, p_list) {
|
||||||
|
var self = this;
|
||||||
|
_.each(one_object , function(element){
|
||||||
|
if(element.child_id.length != 0){
|
||||||
|
p_list.push({"key":element.id,"value":_.pluck(element.child_id, 'id')});
|
||||||
|
self.parent_child_list(element.child_id, p_list);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return p_list;
|
||||||
|
},
|
||||||
|
inherit_view : function(one_object, result) {
|
||||||
|
var self = this;
|
||||||
|
var root = $(result.arch).filter('*');
|
||||||
|
var xml_list = [];
|
||||||
|
if (root[0].tagName.toLowerCase() == "data") {
|
||||||
|
xml_list = $(root[0]).children();
|
||||||
|
} else {
|
||||||
|
xml_list.push(root[0]);
|
||||||
|
}
|
||||||
|
_.each(xml_list , function(xml){
|
||||||
|
var parent_id;
|
||||||
|
var check_list = [];
|
||||||
|
var xpath_object = self.parse_xml(xml,result.id);
|
||||||
|
if (xml.tagName.toLowerCase() == "xpath" ) {
|
||||||
|
var part_expr = _.without($(xml).attr('expr').split("/"),"");
|
||||||
|
_.each(part_expr,function(part){
|
||||||
|
check_list.push(_.without($.trim(part.replace(/[^a-zA-Z 0-9 _]+/g,'!')).split("!"),""));
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var temp = [];
|
||||||
|
_.each(xpath_object[0].child_id[0].att_list, function(list){
|
||||||
|
if(!_.include(list, "position")){
|
||||||
|
temp.push(list);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
check_list = [_.flatten(temp)];
|
||||||
|
}
|
||||||
|
self.full_path_search(check_list ,one_object ,xpath_object);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
full_path_search: function(check_list ,val ,xpath_object) {
|
||||||
|
var self = this;
|
||||||
|
if(xpath_object.length!=0){
|
||||||
|
var check = check_list[0];
|
||||||
|
var obj;
|
||||||
|
switch (check.length) {
|
||||||
|
case 2:
|
||||||
|
if(parseInt(check[1])){
|
||||||
|
var list_1 = _.select(val,function(element){
|
||||||
|
var main_list = _.flatten(element.att_list);
|
||||||
|
return _.include(main_list, check[0]);
|
||||||
|
});
|
||||||
|
obj = val[_.indexOf(val,list_1[parseInt(check[1])-1])];
|
||||||
|
} else {
|
||||||
|
obj = _.detect(val, function(element){
|
||||||
|
var main_list = _.flatten(element.att_list);
|
||||||
|
return _.include(main_list, check[0]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
obj = _.detect(val,function(element){
|
||||||
|
var main_list = _.flatten(element.att_list);
|
||||||
|
check = _.uniq(check);
|
||||||
|
var insert = _.intersection(main_list,check);
|
||||||
|
if(insert.length == check.length ){return element;}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var list_1 = _.select(val,function(element){
|
||||||
|
var main_list = _.flatten(element.att_list);
|
||||||
|
return _.include(main_list, check[0]);
|
||||||
|
});
|
||||||
|
if(list_1.length != 0){
|
||||||
|
(check_list.length == 1)? obj = list_1[0] : check_list.shift();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(obj) {
|
||||||
|
check_list.shift();
|
||||||
|
if (check_list.length !=0){
|
||||||
|
self.full_path_search(check_list ,obj.child_id ,xpath_object);
|
||||||
|
} else {
|
||||||
|
var level = obj.level+1;
|
||||||
|
self.increase_level(xpath_object[0], level)
|
||||||
|
obj.child_id.push(xpath_object[0]);
|
||||||
|
xpath_object.pop();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_.each(val,function(element){
|
||||||
|
self.full_path_search(check_list ,element.child_id ,xpath_object);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
increase_level: function(val, level) {
|
||||||
|
var self = this;
|
||||||
|
val.level = level;
|
||||||
|
_.each(val.child_id, function(val, key) {
|
||||||
|
self.increase_level(val, level + 1);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
edit_view: function(one_object) {
|
||||||
|
var self = this;
|
||||||
|
this.edit_xml_dialog = new openerp.web.Dialog(this,{
|
||||||
|
modal: true,
|
||||||
|
title: 'View Editor',
|
||||||
|
width: 750,
|
||||||
|
height: 500,
|
||||||
|
buttons: {
|
||||||
|
"Inherited View": function(){
|
||||||
|
//todo
|
||||||
|
},
|
||||||
|
"Preview": function(){
|
||||||
|
var action = {
|
||||||
|
context:self.session.user_context,
|
||||||
|
res_model : self.model,
|
||||||
|
views : [[self.main_view_id, self.main_view_type]],
|
||||||
|
type: 'ir.actions.act_window',
|
||||||
|
target: "new",
|
||||||
|
flags: {
|
||||||
|
sidebar: false,
|
||||||
|
views_switcher: false,
|
||||||
|
action_buttons:false,
|
||||||
|
search_view:false,
|
||||||
|
pager:false,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
var action_manager = new openerp.web.ActionManager(self);
|
||||||
|
action_manager.do_action(action);
|
||||||
|
},
|
||||||
|
"Close": function(){
|
||||||
|
self.edit_xml_dialog.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.edit_xml_dialog.start().open();
|
||||||
|
this.edit_xml_dialog.$element.html(QWeb.render('view_editor', {
|
||||||
|
'data': one_object['main_object'],
|
||||||
|
}));
|
||||||
|
this.edit_xml_dialog.$element.find("tr[id^='viewedit-']").click(function() {
|
||||||
|
self.edit_xml_dialog.$element.find("tr[id^='viewedit-']").removeClass('ui-selected');
|
||||||
|
$(this).addClass('ui-selected');
|
||||||
|
});
|
||||||
|
this.edit_xml_dialog.$element.find("img[id^='parentimg-']").click(function() {
|
||||||
|
if ($(this).attr('src') == '/web/static/src/img/collapse.gif') {
|
||||||
|
$(this).attr('src', '/web/static/src/img/expand.gif');
|
||||||
|
self.on_expand(this);
|
||||||
|
} else {
|
||||||
|
$(this).attr('src', '/web/static/src/img/collapse.gif');
|
||||||
|
var id = this.id.split('-')[1];
|
||||||
|
self.on_collapse(this,one_object['parent_child_id'], one_object['main_object']);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.edit_xml_dialog.$element.find("img[id^='side-']").click(function() {
|
||||||
|
var side = $(this).closest("tr[id^='viewedit-']")
|
||||||
|
var id_tr = (side.attr('id')).split('-')[1];
|
||||||
|
var img = side.find("img[id='parentimg-"+id_tr+"']").attr('src'); ;
|
||||||
|
var level = parseInt(side.attr('level'));
|
||||||
|
var list_shift =[];
|
||||||
|
var last_tr;
|
||||||
|
var cur_tr = side;
|
||||||
|
list_shift.push(side);
|
||||||
|
var next_tr;
|
||||||
|
var ls = side;
|
||||||
|
var view_id;
|
||||||
|
var view_xml_id;
|
||||||
|
while(1){
|
||||||
|
ls = ls.prev();
|
||||||
|
if((self.edit_xml_dialog.$element.find(ls).find('a').text()).search("view_id") != -1
|
||||||
|
&& parseInt(ls.attr('level')) < level){
|
||||||
|
view_id = parseInt(($(ls).find('a').text()).replace(/[^0-9]+/g,''));
|
||||||
|
view_xml_id = (ls.attr('id')).split('-')[1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (this.id) {
|
||||||
|
case "side-add":
|
||||||
|
break;
|
||||||
|
case "side-remove":
|
||||||
|
break;
|
||||||
|
case "side-edit":
|
||||||
|
break;
|
||||||
|
case "side-up":
|
||||||
|
while (1) {
|
||||||
|
var prev_tr = cur_tr.prev();
|
||||||
|
if(level >= parseInt(prev_tr.attr('level')) || prev_tr.length == 0) {
|
||||||
|
last_tr = prev_tr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cur_tr = prev_tr;
|
||||||
|
}
|
||||||
|
if (img) {
|
||||||
|
while (1) {
|
||||||
|
next_tr = side.next();
|
||||||
|
if ( parseInt(next_tr.attr('level')) <= level || next_tr.length == 0) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
list_shift.push(next_tr);
|
||||||
|
side = next_tr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (last_tr.length != 0 && parseInt(last_tr.attr('level')) == level &&
|
||||||
|
(self.edit_xml_dialog.$element.find(last_tr).find('a').text()).search("view_id") == -1) {
|
||||||
|
_.each(list_shift, function(rec) {
|
||||||
|
$(last_tr).before(rec);
|
||||||
|
});
|
||||||
|
self.save_move_arch(one_object, view_id, view_xml_id, id_tr, level, "up");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "side-down":
|
||||||
|
if (img) {
|
||||||
|
while (1) {
|
||||||
|
next_tr = cur_tr.next();
|
||||||
|
if ( parseInt(next_tr.attr('level')) <= level || next_tr.length == 0) {
|
||||||
|
last_tr = next_tr;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
list_shift.push(next_tr);
|
||||||
|
cur_tr = next_tr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
last_tr = cur_tr.next();
|
||||||
|
}
|
||||||
|
if((self.edit_xml_dialog.$element.find(last_tr).find('a').text()).search("view_id") != -1){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (last_tr.length != 0 && parseInt(last_tr.attr('level')) == level) {
|
||||||
|
var last_tr_id = (last_tr.attr('id')).split('-')[1];
|
||||||
|
img = last_tr.find("img[id='parentimg-" + last_tr_id + "']").attr('src');
|
||||||
|
if (img) {
|
||||||
|
self.edit_xml_dialog.$element.find("img[id='parentimg-" + last_tr_id + "']").
|
||||||
|
attr('src', '/web/static/src/img/expand.gif');
|
||||||
|
while (1) {
|
||||||
|
var next_tr = last_tr.next();
|
||||||
|
if (next_tr.attr('level') <= level || next_tr.length == 0) break;
|
||||||
|
next_tr.hide();
|
||||||
|
last_tr = next_tr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list_shift.reverse();
|
||||||
|
_.each(list_shift, function(rec) {
|
||||||
|
$(last_tr).after(rec);
|
||||||
|
});
|
||||||
|
self.save_move_arch(one_object, view_id, view_xml_id, id_tr, level, "down");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
save_move_arch: function(one_object, view_id, view_xml_id, id_tr, level, move_direct){
|
||||||
|
var self = this;
|
||||||
|
var arch = _.detect(one_object['arch'],function(element){
|
||||||
|
return element.view_id == view_id;
|
||||||
|
});
|
||||||
|
var obj = self.get_view_object(view_xml_id, one_object['main_object'], []);
|
||||||
|
if(($(arch.arch).filter("data")).length != 0 && view_xml_id != 0){
|
||||||
|
var check_list = _.flatten(obj[0].child_id[0].att_list);
|
||||||
|
arch.arch = _.detect($(arch.arch).children(), function(xml_child){
|
||||||
|
var temp_obj = self.check_attr(xml_child, xml_child.tagName.toLowerCase());
|
||||||
|
var main_list = _.flatten(temp_obj.att_list);
|
||||||
|
check_list = _.uniq(check_list);
|
||||||
|
var insert = _.intersection(main_list,check_list);
|
||||||
|
if(insert.length == check_list.length ){return xml_child;}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return self.get_node(arch.arch, obj[0].child_id[0], parseInt(id_tr), [], parseInt(level),
|
||||||
|
parseInt(view_id), arch, move_direct);
|
||||||
|
},
|
||||||
|
|
||||||
|
get_view_object: function(view_xml_id, one_object,result){
|
||||||
|
var self = this;
|
||||||
|
if(result.length==0){
|
||||||
|
var check = _.detect(one_object , function(obj){
|
||||||
|
return view_xml_id==obj.id;
|
||||||
|
});
|
||||||
|
if(check){result.push(check);};
|
||||||
|
_.each(one_object, function(obj){
|
||||||
|
self.get_view_object(view_xml_id, obj.child_id, result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
get_node: function(arch1, obj, id, child_list, level, view_id, arch, move_direct){
|
||||||
|
var self = this;
|
||||||
|
var children_list = $(arch1).children();
|
||||||
|
var list_obj_xml = _.zip(children_list,obj.child_id);
|
||||||
|
if (id) {
|
||||||
|
if (obj.id == id) {
|
||||||
|
var id;
|
||||||
|
var parent = $(arch1).parents();
|
||||||
|
var index = _.indexOf(child_list, obj)
|
||||||
|
var re_insert_obj = child_list.splice(index, 1);
|
||||||
|
if (move_direct == "down") {
|
||||||
|
var next = $(arch1).next();
|
||||||
|
$(next).after(arch1);
|
||||||
|
child_list.splice(index+1, 0, re_insert_obj[0]);
|
||||||
|
} else {
|
||||||
|
var prev = $(arch1).prev();
|
||||||
|
$(prev).before(arch1);
|
||||||
|
child_list.splice(index-1, 0, re_insert_obj[0]);
|
||||||
|
}
|
||||||
|
parent = parent[parent.length-1];
|
||||||
|
var convert_to_utf = self.xml2Str(parent);
|
||||||
|
if (convert_to_utf) {
|
||||||
|
convert_to_utf = convert_to_utf.replace('xmlns="http://www.w3.org/1999/xhtml"', "");
|
||||||
|
convert_to_utf = '<?xml version="1.0"?>' + convert_to_utf;
|
||||||
|
arch.arch = convert_to_utf;
|
||||||
|
dataset = new openerp.web.DataSet(this, 'ir.ui.view');
|
||||||
|
dataset.write(parseInt(view_id),{"arch":convert_to_utf}, function(r) {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (obj.level <= level) {
|
||||||
|
_.each(list_obj_xml, function(child_node) {
|
||||||
|
self.get_node(child_node[0], child_node[1], id, obj.child_id, level, view_id, arch, move_direct);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
xml2Str: function(xmlNode) {
|
||||||
|
try {
|
||||||
|
return (new XMLSerializer()).serializeToString(xmlNode);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
try {
|
||||||
|
return xmlNode.xml;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
on_expand: function(expand_img){
|
||||||
|
var level = parseInt($(expand_img).closest("tr[id^='viewedit-']").attr('level'));
|
||||||
|
var cur_tr = $(expand_img).closest("tr[id^='viewedit-']");
|
||||||
|
while (1) {
|
||||||
|
var nxt_tr = cur_tr.next();
|
||||||
|
if (parseInt(nxt_tr.attr('level')) > level){
|
||||||
|
cur_tr = nxt_tr;
|
||||||
|
nxt_tr.hide();
|
||||||
|
} else return nxt_tr;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
on_collapse: function(collapse_img, parent_child_id, id, main_object) {
|
||||||
|
var self = this;
|
||||||
|
var id = collapse_img.id.split('-')[1];
|
||||||
|
var datas = _.detect(parent_child_id,function(res) {
|
||||||
|
return res.key == id;
|
||||||
|
});
|
||||||
|
_.each(datas.value, function(rec) {
|
||||||
|
var tr = self.edit_xml_dialog.$element.find("tr[id='viewedit-"+rec+"']");
|
||||||
|
tr.find("img[id='parentimg-"+rec+"']").attr('src','/web/static/src/img/expand.gif');
|
||||||
|
tr.show();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
};
|
|
@ -10,6 +10,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
* view should be displayed (if there is one active).
|
* view should be displayed (if there is one active).
|
||||||
*/
|
*/
|
||||||
searchable: false,
|
searchable: false,
|
||||||
|
readonly : false,
|
||||||
form_template: "FormView",
|
form_template: "FormView",
|
||||||
identifier_prefix: 'formview-',
|
identifier_prefix: 'formview-',
|
||||||
/**
|
/**
|
||||||
|
@ -37,7 +38,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
this.dirty_for_user = false;
|
this.dirty_for_user = false;
|
||||||
this.default_focus_field = null;
|
this.default_focus_field = null;
|
||||||
this.default_focus_button = null;
|
this.default_focus_button = null;
|
||||||
this.registry = openerp.web.form.widgets;
|
this.registry = this.readonly ? openerp.web.form.readonly : openerp.web.form.widgets;
|
||||||
this.has_been_loaded = $.Deferred();
|
this.has_been_loaded = $.Deferred();
|
||||||
this.$form_header = null;
|
this.$form_header = null;
|
||||||
this.translatable_fields = [];
|
this.translatable_fields = [];
|
||||||
|
@ -101,10 +102,10 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
self.on_pager_action(action);
|
self.on_pager_action(action);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.$form_header.find('button.oe_form_button_save').click(this.do_save);
|
this.$form_header.find('button.oe_form_button_save').click(this.do_save_then_readonly);
|
||||||
this.$form_header.find('button.oe_form_button_cancel').click(this.do_cancel);
|
|
||||||
this.$form_header.find('button.oe_form_button_new').click(this.on_button_new);
|
this.$form_header.find('button.oe_form_button_new').click(this.on_button_new);
|
||||||
this.$form_header.find('button.oe_form_button_duplicate').click(this.on_button_duplicate);
|
this.$form_header.find('button.oe_form_button_duplicate').click(this.on_button_duplicate);
|
||||||
|
this.$form_header.find('button.oe_form_button_delete').click(this.on_button_delete);
|
||||||
this.$form_header.find('button.oe_form_button_toggle').click(this.on_toggle_readonly);
|
this.$form_header.find('button.oe_form_button_toggle').click(this.on_toggle_readonly);
|
||||||
|
|
||||||
if (this.options.sidebar && this.options.sidebar_id) {
|
if (this.options.sidebar && this.options.sidebar_id) {
|
||||||
|
@ -123,11 +124,16 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
self.widgets = {};
|
self.widgets = {};
|
||||||
self.fields = {};
|
self.fields = {};
|
||||||
self.$form_header.find('button').unbind('click');
|
self.$form_header.find('button').unbind('click');
|
||||||
self.registry = self.registry === openerp.web.form.widgets
|
self.readonly = !self.readonly;
|
||||||
? openerp.web.form.readonly
|
self.registry = self.readonly ? openerp.web.form.readonly : openerp.web.form.widgets;
|
||||||
: openerp.web.form.widgets;
|
|
||||||
self.on_loaded(self.fields_view);
|
self.on_loaded(self.fields_view);
|
||||||
self.reload();
|
return self.reload();
|
||||||
|
},
|
||||||
|
do_set_readonly: function() {
|
||||||
|
return this.readonly ? $.Deferred().resolve() : this.on_toggle_readonly();
|
||||||
|
},
|
||||||
|
do_set_editable: function() {
|
||||||
|
return !this.readonly ? $.Deferred().resolve() : this.on_toggle_readonly();
|
||||||
},
|
},
|
||||||
do_show: function () {
|
do_show: function () {
|
||||||
var promise;
|
var promise;
|
||||||
|
@ -164,6 +170,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
this.$form_header.find('.oe_form_on_update').show();
|
this.$form_header.find('.oe_form_on_update').show();
|
||||||
this.$form_header.find('button.oe_form_button_new').show();
|
this.$form_header.find('button.oe_form_button_new').show();
|
||||||
}
|
}
|
||||||
|
this.$form_header.find('.oe_form_on_readonly').toggle(this.readonly);
|
||||||
|
this.$form_header.find('.oe_form_on_editable').toggle(!this.readonly);
|
||||||
this.dirty_for_user = false;
|
this.dirty_for_user = false;
|
||||||
this.datarecord = record;
|
this.datarecord = record;
|
||||||
for (var f in this.fields) {
|
for (var f in this.fields) {
|
||||||
|
@ -344,6 +352,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
$.when(this.has_been_loaded).then(function() {
|
$.when(this.has_been_loaded).then(function() {
|
||||||
if (self.can_be_discarded()) {
|
if (self.can_be_discarded()) {
|
||||||
var keys = _.keys(self.fields_view.fields);
|
var keys = _.keys(self.fields_view.fields);
|
||||||
|
$.when(self.do_set_editable()).then(function() {
|
||||||
if (keys.length) {
|
if (keys.length) {
|
||||||
self.dataset.default_get(keys).then(self.on_record_loaded).then(function() {
|
self.dataset.default_get(keys).then(self.on_record_loaded).then(function() {
|
||||||
def.resolve();
|
def.resolve();
|
||||||
|
@ -352,6 +361,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
self.on_record_loaded({});
|
self.on_record_loaded({});
|
||||||
def.resolve();
|
def.resolve();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return def.promise();
|
return def.promise();
|
||||||
|
@ -363,7 +373,20 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
if (self.can_be_discarded()) {
|
if (self.can_be_discarded()) {
|
||||||
self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) {
|
self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) {
|
||||||
return self.on_created({ result : new_id });
|
return self.on_created({ result : new_id });
|
||||||
}).then(function() {
|
}).then(self.do_set_editable).then(function() {
|
||||||
|
def.resolve();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return def.promise();
|
||||||
|
},
|
||||||
|
on_button_delete: function() {
|
||||||
|
var self = this;
|
||||||
|
var def = $.Deferred();
|
||||||
|
$.when(this.has_been_loaded).then(function() {
|
||||||
|
if (self.can_be_discarded() && self.datarecord.id) {
|
||||||
|
self.dataset.unlink([self.datarecord.id]).then(function() {
|
||||||
|
self.on_pager_action('next');
|
||||||
def.resolve();
|
def.resolve();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -381,6 +404,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
* @param {Function} success callback on save success
|
* @param {Function} success callback on save success
|
||||||
* @param {Boolean} [prepend_on_create=false] if ``do_save`` creates a new record, should that record be inserted at the start of the dataset (by default, records are added at the end)
|
* @param {Boolean} [prepend_on_create=false] if ``do_save`` creates a new record, should that record be inserted at the start of the dataset (by default, records are added at the end)
|
||||||
*/
|
*/
|
||||||
|
do_save_then_readonly: function(success, prepend_on_create) {
|
||||||
|
return this.do_save(success, prepend_on_create).then(this.do_set_readonly);
|
||||||
|
},
|
||||||
do_save: function(success, prepend_on_create) {
|
do_save: function(success, prepend_on_create) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var action = function() {
|
var action = function() {
|
||||||
|
@ -428,10 +454,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
this.mutating_lock = this.mutating_lock.pipe(action, action);
|
this.mutating_lock = this.mutating_lock.pipe(action, action);
|
||||||
return this.mutating_lock;
|
return this.mutating_lock;
|
||||||
},
|
},
|
||||||
switch_readonly: function() {
|
|
||||||
},
|
|
||||||
switch_editable: function() {
|
|
||||||
},
|
|
||||||
on_invalid: function() {
|
on_invalid: function() {
|
||||||
var msg = "<ul>";
|
var msg = "<ul>";
|
||||||
_.each(this.fields, function(f) {
|
_.each(this.fields, function(f) {
|
||||||
|
@ -489,9 +511,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
on_action: function (action) {
|
on_action: function (action) {
|
||||||
console.debug('Executing action', action);
|
console.debug('Executing action', action);
|
||||||
},
|
},
|
||||||
do_cancel: function () {
|
|
||||||
console.debug("Cancelling form");
|
|
||||||
},
|
|
||||||
reload: function() {
|
reload: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
var act = function() {
|
var act = function() {
|
||||||
|
@ -1829,7 +1848,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({
|
||||||
self.original_value = undefined;
|
self.original_value = undefined;
|
||||||
self._change_int_ext_value(rval);
|
self._change_int_ext_value(rval);
|
||||||
};
|
};
|
||||||
if(typeof(value) === "number") {
|
if (value && !(value instanceof Array)) {
|
||||||
var dataset = new openerp.web.DataSetStatic(this, this.field.relation, self.build_context());
|
var dataset = new openerp.web.DataSetStatic(this, this.field.relation, self.build_context());
|
||||||
dataset.name_get([value], function(data) {
|
dataset.name_get([value], function(data) {
|
||||||
real_set_value(data[0]);
|
real_set_value(data[0]);
|
||||||
|
@ -1955,6 +1974,9 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
|
||||||
self.load_views();
|
self.load_views();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
is_readonly: function() {
|
||||||
|
return this.readonly || this.force_readonly;
|
||||||
|
},
|
||||||
load_views: function() {
|
load_views: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
@ -1972,7 +1994,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
|
||||||
}
|
}
|
||||||
if(view.view_type === "list") {
|
if(view.view_type === "list") {
|
||||||
view.options.selectable = self.multi_selection;
|
view.options.selectable = self.multi_selection;
|
||||||
if (self.readonly) {
|
if (self.is_readonly()) {
|
||||||
view.options.addable = null;
|
view.options.addable = null;
|
||||||
view.options.deletable = null;
|
view.options.deletable = null;
|
||||||
}
|
}
|
||||||
|
@ -1997,10 +2019,10 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
|
||||||
this.viewmanager.on_controller_inited.add_last(function(view_type, controller) {
|
this.viewmanager.on_controller_inited.add_last(function(view_type, controller) {
|
||||||
if (view_type == "list") {
|
if (view_type == "list") {
|
||||||
controller.o2m = self;
|
controller.o2m = self;
|
||||||
if (self.readonly)
|
if (self.is_readonly())
|
||||||
controller.set_editable(false);
|
controller.set_editable(false);
|
||||||
} else if (view_type == "form") {
|
} else if (view_type == "form") {
|
||||||
if (self.readonly) {
|
if (self.is_readonly()) {
|
||||||
controller.on_toggle_readonly();
|
controller.on_toggle_readonly();
|
||||||
$(controller.$element.find(".oe_form_buttons")[0]).children().remove();
|
$(controller.$element.find(".oe_form_buttons")[0]).children().remove();
|
||||||
}
|
}
|
||||||
|
@ -2220,8 +2242,6 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({
|
||||||
},
|
},
|
||||||
do_activate_record: function(index, id) {
|
do_activate_record: function(index, id) {
|
||||||
var self = this;
|
var self = this;
|
||||||
if (self.o2m.readonly)
|
|
||||||
return;
|
|
||||||
var pop = new openerp.web.form.FormOpenPopup(self.o2m.view);
|
var pop = new openerp.web.form.FormOpenPopup(self.o2m.view);
|
||||||
pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(),{
|
pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(),{
|
||||||
auto_write: false,
|
auto_write: false,
|
||||||
|
@ -2230,7 +2250,8 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({
|
||||||
read_function: function() {
|
read_function: function() {
|
||||||
return self.o2m.dataset.read_ids.apply(self.o2m.dataset, arguments);
|
return self.o2m.dataset.read_ids.apply(self.o2m.dataset, arguments);
|
||||||
},
|
},
|
||||||
form_view_options: {'not_interactible_on_create':true}
|
form_view_options: {'not_interactible_on_create':true},
|
||||||
|
readonly: self.o2m.is_readonly()
|
||||||
});
|
});
|
||||||
pop.on_write.add(function(id, data) {
|
pop.on_write.add(function(id, data) {
|
||||||
self.o2m.dataset.write(id, data, {}, function(r) {
|
self.o2m.dataset.write(id, data, {}, function(r) {
|
||||||
|
@ -2282,11 +2303,14 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
|
||||||
validate: function() {
|
validate: function() {
|
||||||
this.invalid = false;
|
this.invalid = false;
|
||||||
},
|
},
|
||||||
|
is_readonly: function() {
|
||||||
|
return this.readonly || this.force_readonly;
|
||||||
|
},
|
||||||
load_view: function() {
|
load_view: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.list_view = new openerp.web.form.Many2ManyListView(this, this.dataset, false, {
|
this.list_view = new openerp.web.form.Many2ManyListView(this, this.dataset, false, {
|
||||||
'addable': self.readonly ? null : 'Add',
|
'addable': self.is_readonly() ? null : 'Add',
|
||||||
'deletable': self.readonly ? false : true,
|
'deletable': self.is_readonly() ? false : true,
|
||||||
'selectable': self.multi_selection
|
'selectable': self.multi_selection
|
||||||
});
|
});
|
||||||
this.list_view.m2m_field = this;
|
this.list_view.m2m_field = this;
|
||||||
|
@ -2423,10 +2447,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
|
||||||
this.searchview.stop();
|
this.searchview.stop();
|
||||||
}
|
}
|
||||||
this.searchview = new openerp.web.SearchView(this,
|
this.searchview = new openerp.web.SearchView(this,
|
||||||
this.dataset, false, {
|
this.dataset, false, {});
|
||||||
"selectable": !this.options.disable_multiple_selection,
|
|
||||||
"deletable": false
|
|
||||||
});
|
|
||||||
this.searchview.on_search.add(function(domains, contexts, groupbys) {
|
this.searchview.on_search.add(function(domains, contexts, groupbys) {
|
||||||
if (self.initial_ids) {
|
if (self.initial_ids) {
|
||||||
self.do_search(domains.concat([[["id", "in", self.initial_ids]], self.domain]),
|
self.do_search(domains.concat([[["id", "in", self.initial_ids]], self.domain]),
|
||||||
|
@ -2453,7 +2474,9 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
|
||||||
});
|
});
|
||||||
self.view_list = new openerp.web.form.SelectCreateListView(self,
|
self.view_list = new openerp.web.form.SelectCreateListView(self,
|
||||||
self.dataset, false,
|
self.dataset, false,
|
||||||
_.extend({'deletable': false}, self.options.list_view_options || {}));
|
_.extend({'deletable': false,
|
||||||
|
'selectable': !self.options.disable_multiple_selection
|
||||||
|
}, self.options.list_view_options || {}));
|
||||||
self.view_list.popup = self;
|
self.view_list.popup = self;
|
||||||
self.view_list.appendTo($("#" + self.element_id + "_view_list")).pipe(function() {
|
self.view_list.appendTo($("#" + self.element_id + "_view_list")).pipe(function() {
|
||||||
self.view_list.do_show();
|
self.view_list.do_show();
|
||||||
|
@ -2572,6 +2595,7 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
|
||||||
* - read_function
|
* - read_function
|
||||||
* - parent_view
|
* - parent_view
|
||||||
* - form_view_options
|
* - form_view_options
|
||||||
|
* - readonly
|
||||||
*/
|
*/
|
||||||
show_element: function(model, row_id, context, options) {
|
show_element: function(model, row_id, context, options) {
|
||||||
this.model = model;
|
this.model = model;
|
||||||
|
@ -2611,7 +2635,13 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
|
||||||
this.view_form.set_embedded_view(this.options.alternative_form_view);
|
this.view_form.set_embedded_view(this.options.alternative_form_view);
|
||||||
}
|
}
|
||||||
this.view_form.appendTo(this.$element.find("#" + this.element_id + "_view_form"));
|
this.view_form.appendTo(this.$element.find("#" + this.element_id + "_view_form"));
|
||||||
|
var once = $.Deferred().then(function() {
|
||||||
|
if (self.options.readonly) {
|
||||||
|
self.view_form.on_toggle_readonly();
|
||||||
|
}
|
||||||
|
});
|
||||||
this.view_form.on_loaded.add_last(function() {
|
this.view_form.on_loaded.add_last(function() {
|
||||||
|
once.resolve();
|
||||||
var $buttons = self.view_form.$element.find(".oe_form_buttons");
|
var $buttons = self.view_form.$element.find(".oe_form_buttons");
|
||||||
$buttons.html(QWeb.render("FormOpenPopup.form.buttons"));
|
$buttons.html(QWeb.render("FormOpenPopup.form.buttons"));
|
||||||
var $nbutton = $buttons.find(".oe_formopenpopup-form-save");
|
var $nbutton = $buttons.find(".oe_formopenpopup-form-save");
|
||||||
|
@ -2624,6 +2654,10 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
|
||||||
$cbutton.click(function() {
|
$cbutton.click(function() {
|
||||||
self.stop();
|
self.stop();
|
||||||
});
|
});
|
||||||
|
if (self.options.readonly) {
|
||||||
|
$nbutton.hide();
|
||||||
|
$cbutton.text(_t("Close"));
|
||||||
|
}
|
||||||
self.view_form.do_show();
|
self.view_form.do_show();
|
||||||
});
|
});
|
||||||
this.dataset.on_write.add(this.on_write);
|
this.dataset.on_write.add(this.on_write);
|
||||||
|
@ -2983,9 +3017,17 @@ openerp.web.form.FieldMany2OneReadonly = openerp.web.form.FieldCharReadonly.exte
|
||||||
self.update_dom();
|
self.update_dom();
|
||||||
self.on_value_changed();
|
self.on_value_changed();
|
||||||
var real_set_value = function(rval) {
|
var real_set_value = function(rval) {
|
||||||
self.$element.find('div').text(rval ? rval[1] : '');
|
self.value = rval;
|
||||||
|
var div = $(self.$element.find('div'));
|
||||||
|
div.html('<a href="javascript:void(0)"></a>');
|
||||||
|
var a = $(div.find("a"));
|
||||||
|
a.text(rval ? rval[1] : '');
|
||||||
|
a.click(function() {
|
||||||
|
var pop = new openerp.web.form.FormOpenPopup(self.view);
|
||||||
|
pop.show_element(self.field.relation, self.value[0],self.build_context(), {readonly:true});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
if(typeof(value) === "number") {
|
if (value && !(value instanceof Array)) {
|
||||||
var dataset = new openerp.web.DataSetStatic(
|
var dataset = new openerp.web.DataSetStatic(
|
||||||
this, this.field.relation, self.build_context());
|
this, this.field.relation, self.build_context());
|
||||||
dataset.name_get([value], function(data) {
|
dataset.name_get([value], function(data) {
|
||||||
|
@ -3030,6 +3072,13 @@ openerp.web.form.widgets = new openerp.web.Registry({
|
||||||
'binary': 'openerp.web.form.FieldBinaryFile',
|
'binary': 'openerp.web.form.FieldBinaryFile',
|
||||||
'statusbar': 'openerp.web.form.FieldStatus'
|
'statusbar': 'openerp.web.form.FieldStatus'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
openerp.web.form.FieldMany2ManyReadonly = openerp.web.form.FieldMany2Many.extend({
|
||||||
|
force_readonly: true
|
||||||
|
});
|
||||||
|
openerp.web.form.FieldOne2ManyReadonly = openerp.web.form.FieldOne2Many.extend({
|
||||||
|
force_readonly: true
|
||||||
|
});
|
||||||
openerp.web.form.readonly = openerp.web.form.widgets.clone({
|
openerp.web.form.readonly = openerp.web.form.widgets.clone({
|
||||||
'char': 'openerp.web.form.FieldCharReadonly',
|
'char': 'openerp.web.form.FieldCharReadonly',
|
||||||
'email': 'openerp.web.form.FieldEmailReadonly',
|
'email': 'openerp.web.form.FieldEmailReadonly',
|
||||||
|
@ -3040,6 +3089,9 @@ openerp.web.form.readonly = openerp.web.form.widgets.clone({
|
||||||
'datetime': 'openerp.web.form.FieldCharReadonly',
|
'datetime': 'openerp.web.form.FieldCharReadonly',
|
||||||
'selection' : 'openerp.web.form.FieldSelectionReadonly',
|
'selection' : 'openerp.web.form.FieldSelectionReadonly',
|
||||||
'many2one': 'openerp.web.form.FieldMany2OneReadonly',
|
'many2one': 'openerp.web.form.FieldMany2OneReadonly',
|
||||||
|
'many2many' : 'openerp.web.form.FieldMany2ManyReadonly',
|
||||||
|
'one2many' : 'openerp.web.form.FieldOne2ManyReadonly',
|
||||||
|
'one2many_list' : 'openerp.web.form.FieldOne2ManyReadonly',
|
||||||
'boolean': 'openerp.web.form.FieldBooleanReadonly',
|
'boolean': 'openerp.web.form.FieldBooleanReadonly',
|
||||||
'float': 'openerp.web.form.FieldCharReadonly',
|
'float': 'openerp.web.form.FieldCharReadonly',
|
||||||
'integer': 'openerp.web.form.FieldCharReadonly',
|
'integer': 'openerp.web.form.FieldCharReadonly',
|
||||||
|
|
|
@ -524,6 +524,17 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
|
||||||
return field.name === name;
|
return field.name === name;
|
||||||
});
|
});
|
||||||
if (!action) { return; }
|
if (!action) { return; }
|
||||||
|
|
||||||
|
var c = new openerp.web.CompoundContext();
|
||||||
|
c.set_eval_context(_.extend({
|
||||||
|
active_id: id,
|
||||||
|
active_ids: [id],
|
||||||
|
active_model: this.dataset.model
|
||||||
|
}, this.records.get(id).toContext()));
|
||||||
|
if (action.context) {
|
||||||
|
c.add(action.context);
|
||||||
|
}
|
||||||
|
action.context = c;
|
||||||
this.do_execute_action(action, this.dataset, id, callback);
|
this.do_execute_action(action, this.dataset, id, callback);
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
@ -1446,6 +1457,25 @@ var Record = openerp.web.Class.extend(/** @lends Record# */{
|
||||||
}
|
}
|
||||||
|
|
||||||
return {data: form_data};
|
return {data: form_data};
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Converts the current record to a format expected by context evaluations
|
||||||
|
* (identical to record.attributes, except m2o fields are their integer
|
||||||
|
* value rather than a pair)
|
||||||
|
*/
|
||||||
|
toContext: function () {
|
||||||
|
var output = {}, attrs = this.attributes;
|
||||||
|
for(var k in attrs) {
|
||||||
|
var val = attrs[k];
|
||||||
|
if (typeof val !== 'object') {
|
||||||
|
output[k] = val;
|
||||||
|
} else if (val instanceof Array) {
|
||||||
|
output[k] = val[0];
|
||||||
|
} else {
|
||||||
|
throw new Error("Can't convert value " + val + " to context");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Record.include(Events);
|
Record.include(Events);
|
||||||
|
|
|
@ -569,7 +569,7 @@ session.web.Sidebar = session.web.Widget.extend({
|
||||||
{
|
{
|
||||||
label: _t("Manage Views"),
|
label: _t("Manage Views"),
|
||||||
callback: this.call_default_on_sidebar,
|
callback: this.call_default_on_sidebar,
|
||||||
title: _t("Manage views of the current object"),
|
title: _t("Manage views of the current object")
|
||||||
}, {
|
}, {
|
||||||
label: _t("Edit Workflow"),
|
label: _t("Edit Workflow"),
|
||||||
callback: this.call_default_on_sidebar,
|
callback: this.call_default_on_sidebar,
|
||||||
|
@ -578,7 +578,7 @@ session.web.Sidebar = session.web.Widget.extend({
|
||||||
}, {
|
}, {
|
||||||
label: _t("Customize Object"),
|
label: _t("Customize Object"),
|
||||||
callback: this.call_default_on_sidebar,
|
callback: this.call_default_on_sidebar,
|
||||||
title: _t("Manage views of the current object"),
|
title: _t("Manage views of the current object")
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -586,10 +586,10 @@ session.web.Sidebar = session.web.Widget.extend({
|
||||||
this.add_items('other', [
|
this.add_items('other', [
|
||||||
{
|
{
|
||||||
label: _t("Import"),
|
label: _t("Import"),
|
||||||
callback: this.call_default_on_sidebar,
|
callback: this.call_default_on_sidebar
|
||||||
}, {
|
}, {
|
||||||
label: _t("Export"),
|
label: _t("Export"),
|
||||||
callback: this.call_default_on_sidebar,
|
callback: this.call_default_on_sidebar
|
||||||
}, {
|
}, {
|
||||||
label: _t("Translate"),
|
label: _t("Translate"),
|
||||||
callback: this.call_default_on_sidebar,
|
callback: this.call_default_on_sidebar,
|
||||||
|
@ -629,7 +629,7 @@ session.web.Sidebar = session.web.Widget.extend({
|
||||||
var $section = $(session.web.qweb.render("Sidebar.section", {
|
var $section = $(session.web.qweb.render("Sidebar.section", {
|
||||||
section_id: section_id,
|
section_id: section_id,
|
||||||
name: name,
|
name: name,
|
||||||
classname: 'oe_sidebar_' + code,
|
classname: 'oe_sidebar_' + code
|
||||||
}));
|
}));
|
||||||
$section.appendTo(this.$element.find('div.sidebar-actions'));
|
$section.appendTo(this.$element.find('div.sidebar-actions'));
|
||||||
this.sections[code] = $section;
|
this.sections[code] = $section;
|
||||||
|
@ -942,7 +942,8 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{
|
||||||
},
|
},
|
||||||
on_sidebar_manage_views: function() {
|
on_sidebar_manage_views: function() {
|
||||||
if (this.fields_view && this.fields_view.arch) {
|
if (this.fields_view && this.fields_view.arch) {
|
||||||
$('<xmp>' + session.web.json_node_to_xml(this.fields_view.arch, true) + '</xmp>').dialog({ width: '95%', height: 600});
|
var view_editor = new session.web.ViewEditor(this, this.$element, this.dataset, this.fields_view.arch);
|
||||||
|
view_editor.start();
|
||||||
} else {
|
} else {
|
||||||
this.do_warn("Manage Views", "Could not find current view declaration");
|
this.do_warn("Manage Views", "Could not find current view declaration");
|
||||||
}
|
}
|
||||||
|
|
|
@ -473,8 +473,6 @@
|
||||||
<h2><t t-esc="name"/></h2>
|
<h2><t t-esc="name"/></h2>
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
|
|
||||||
<t t-name="Sidebar.section.items">
|
<t t-name="Sidebar.section.items">
|
||||||
<li t-foreach="items" t-as="item" t-att-class="item.classname">
|
<li t-foreach="items" t-as="item" t-att-class="item.classname">
|
||||||
<a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
|
<a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
|
||||||
|
@ -551,6 +549,7 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<table t-name="ListView" class="oe-listview-content">
|
<table t-name="ListView" class="oe-listview-content">
|
||||||
<t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
|
<t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
|
||||||
<thead class="ui-widget-header">
|
<thead class="ui-widget-header">
|
||||||
|
@ -633,9 +632,18 @@
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</t>
|
</t>
|
||||||
|
<t t-if="options.radio">
|
||||||
|
<th t-if="options.selectable" class="oe-record-selector" width="1">
|
||||||
|
<input type="radio" name ="radiogroup"/>
|
||||||
|
</th>
|
||||||
|
</t>
|
||||||
|
<t t-if="!options.radio">
|
||||||
<th t-if="options.selectable" class="oe-record-selector" width="1">
|
<th t-if="options.selectable" class="oe-record-selector" width="1">
|
||||||
<input type="checkbox"/>
|
<input type="checkbox"/>
|
||||||
</th>
|
</th>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
|
||||||
<t t-foreach="columns" t-as="column">
|
<t t-foreach="columns" t-as="column">
|
||||||
<t t-set="align" t-value="column.type === 'integer' or column.type == 'float'"/>
|
<t t-set="align" t-value="column.type === 'integer' or column.type == 'float'"/>
|
||||||
<td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
|
<td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
|
||||||
|
@ -651,16 +659,18 @@
|
||||||
<t t-name="ListView.row.form">
|
<t t-name="ListView.row.form">
|
||||||
<t t-raw="frame.render()"/>
|
<t t-raw="frame.render()"/>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
<t t-name="FormView">
|
<t t-name="FormView">
|
||||||
<div class="oe_form_header">
|
<div class="oe_form_header">
|
||||||
<div class="oe_form_buttons" t-if="widget.options.action_buttons !== false">
|
<div class="oe_form_buttons" t-if="widget.options.action_buttons !== false">
|
||||||
<button type="button" class="oe_form_button_save">
|
<button type="button" class="oe_form_button_save oe_form_on_editable">Save</button>
|
||||||
<span class="oe_form_on_update">Save</span>
|
<button type="button" class="oe_form_button_toggle">
|
||||||
<span class="oe_form_on_create">Create</span>
|
<span class="oe_form_on_editable">Cancel</span>
|
||||||
|
<span class="oe_form_on_readonly">Edit</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="oe_form_button_new">New</button>
|
<button type="button" class="oe_form_button_new oe_form_on_readonly">Create</button>
|
||||||
<button type="button" class="oe_form_button_duplicate oe_form_on_update">Duplicate</button>
|
<button type="button" class="oe_form_button_duplicate oe_form_on_readonly">Duplicate</button>
|
||||||
<button type="button" class="oe_form_button_toggle">Readonly/Editable</button>
|
<button type="button" class="oe_form_button_delete oe_form_on_readonly">Delete</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_form_pager" t-if="widget.options.pager !== false">
|
<div class="oe_form_pager" t-if="widget.options.pager !== false">
|
||||||
<button type="button" data-pager-action="first">First</button>
|
<button type="button" data-pager-action="first">First</button>
|
||||||
|
@ -1001,6 +1011,7 @@
|
||||||
<span t-if="widget.string"><t t-esc="widget.string"/></span>
|
<span t-if="widget.string"><t t-esc="widget.string"/></span>
|
||||||
</button>
|
</button>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
<t t-name="SearchView">
|
<t t-name="SearchView">
|
||||||
<form class="oe_forms">
|
<form class="oe_forms">
|
||||||
<t t-call="SearchView.render_lines"/>
|
<t t-call="SearchView.render_lines"/>
|
||||||
|
@ -1270,6 +1281,55 @@
|
||||||
.unwrap();
|
.unwrap();
|
||||||
</t>
|
</t>
|
||||||
</t>
|
</t>
|
||||||
|
<t t-name="view_editor">
|
||||||
|
<table class="oe_view_editor">
|
||||||
|
<t t-call="view_editor.row"/>
|
||||||
|
</table>
|
||||||
|
</t>
|
||||||
|
<tr t-name="view_editor.row" class="oe_view_editor_row" t-att-id="'viewedit-' + rec.id" t-att-level="rec.level" t-foreach="data" t-as="rec">
|
||||||
|
<td class="oe_view_editor_colum" width="85%">
|
||||||
|
<table class="oe_view_editor_tree_grid">
|
||||||
|
<tr>
|
||||||
|
<td width="16px" t-att-style="'background-position: ' + 20*rec.level + 'px; padding-left: ' + 20*rec.level + 'px'">
|
||||||
|
<img t-if="rec.child_id.length" t-att-id="'parentimg-' + rec.id"
|
||||||
|
src="/web/static/src/img/collapse.gif" width="16" height="16" border="0"/>
|
||||||
|
</td>
|
||||||
|
<td style="cursor: pointer;">
|
||||||
|
<a style="text-decoration:none" href="javascript:void(0);"> <t t-esc="rec.name"/> </a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td align="left" class="oe_view_editor_colum" width="15%">
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td width="20%">
|
||||||
|
<img t-if="rec.att_list.length"
|
||||||
|
id="side-add" src="/web/static/src/img/icons/gtk-add.png" style="cursor: pointer;"/>
|
||||||
|
</td>
|
||||||
|
<td width="20%">
|
||||||
|
<img id="side-remove" src="/web/static/src/img/icons/gtk-remove.png" style="cursor: pointer;"/>
|
||||||
|
</td>
|
||||||
|
<td width="20%">
|
||||||
|
<img t-if="rec.att_list.length"
|
||||||
|
id="side-edit" src="/web/static/src/img/icons/gtk-edit.png" style="cursor: pointer;"/>
|
||||||
|
</td>
|
||||||
|
<td width="20%">
|
||||||
|
<img t-if="rec.att_list.length"
|
||||||
|
id="side-up" src="/web/static/src/img/icons/gtk-go-up.png" style="cursor: pointer;"/>
|
||||||
|
</td>
|
||||||
|
<td width="20%">
|
||||||
|
<img t-if="rec.att_list.length"
|
||||||
|
id="side-down" src="/web/static/src/img/icons/gtk-go-down.png" style="cursor: pointer;"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<t t-if="rec.child_id.length">
|
||||||
|
<t t-set="data" t-value="rec.child_id"/>
|
||||||
|
<t t-call="view_editor.row"/>
|
||||||
|
</t>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<t t-name="ExportView">
|
<t t-name="ExportView">
|
||||||
<a id="exportview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Export</a>
|
<a id="exportview" href="javascript: void(0)" style="text-decoration: none;color: #3D3D3D;">Export</a>
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Arabic translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:38+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-03 15:02+0000\n"
|
||||||
|
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\n"
|
||||||
|
"Language-Team: Arabic <ar@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: 2011-11-04 05:32+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
|
msgid " "
|
||||||
|
msgstr " "
|
|
@ -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: 2011-10-12 04:44+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14124)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-19 06:05+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14157)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-24 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14185)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-09 05:22+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-24 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14185)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
|
||||||
msgid " "
|
msgid " "
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Arabic translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-03 15:09+0000\n"
|
||||||
|
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\n"
|
||||||
|
"Language-Team: Arabic <ar@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: 2011-11-04 05:32+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr "إستعادة"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Undo"
|
||||||
|
msgstr "تراجع"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Add Widget"
|
||||||
|
msgstr "أضف أداة"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Change layout"
|
||||||
|
msgstr "تغيير المخطط"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Choose dashboard layout"
|
||||||
|
msgstr "اختر مخطط للعرض"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "progress:"
|
||||||
|
msgstr "التقدم:"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "%"
|
||||||
|
msgstr "%"
|
|
@ -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: 2011-10-12 04:44+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14124)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-19 06:05+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14157)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-24 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14185)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Polish translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-04 16:28+0000\n"
|
||||||
|
"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) <grzegorz@openglobe.pl>\n"
|
||||||
|
"Language-Team: Polish <pl@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: 2011-11-05 06:04+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr "Przywróć"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Undo"
|
||||||
|
msgstr "Cofnij"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Add Widget"
|
||||||
|
msgstr "Dodaj kontrolkę"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Change layout"
|
||||||
|
msgstr "Zmień układ"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "Choose dashboard layout"
|
||||||
|
msgstr "Wybierz układ konsoli"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "progress:"
|
||||||
|
msgstr "postęp:"
|
||||||
|
|
||||||
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
|
msgid "%"
|
||||||
|
msgstr ""
|
|
@ -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: 2011-10-24 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14185)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
</t>
|
</t>
|
||||||
<t t-name="DashBoard.action">
|
<t t-name="DashBoard.action">
|
||||||
<div t-att-data-id="action.attrs.name" class="oe-dashboard-action">
|
<div t-att-data-id="action.attrs.name" class="oe-dashboard-action">
|
||||||
<h2 t-attf-class="oe-dashboard-action-header oe_view_title #{action.attrs.string ? '' : 'oe-dashboard-action-header-empty'}">
|
<h2 t-attf-class="oe-dashboard-action-header #{action.attrs.string ? '' : 'oe-dashboard-action-header-empty'}">
|
||||||
<input class="oe-dashboard-action-input" type="text" name="title" value="" style="display: none"/>
|
<input class="oe-dashboard-action-input" type="text" name="title" value="" style="display: none"/>
|
||||||
<t t-esc="action.attrs.string"/>
|
<t t-esc="action.attrs.string"/>
|
||||||
<t t-if="!action.attrs.string">&nbsp;</t>
|
<t t-if="!action.attrs.string">&nbsp;</t>
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Arabic translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-08 05:50+0000\n"
|
||||||
|
"Last-Translator: Ahmad Khayyat <Unknown>\n"
|
||||||
|
"Language-Team: Arabic <ar@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: 2011-11-08 06:12+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr "أهلاً و مرحباً بك في OpenERP"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr "لا تنس إدراج هذه الصفحة ضمن المفضلات"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr "تذكر كلمة المرور"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr "اختر أول تطبيق OpenERP تود تثبيته"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "تثبيت"
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Danish translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-10-11 14:02+0000\n"
|
||||||
|
"Last-Translator: Jonas Mortensen <Unknown>\n"
|
||||||
|
"Language-Team: Danish <da@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: 2011-11-01 05:09+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr "Velkommen til din nye OpenERP instans."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr "Husk at tilføje denne side til dine favoritter."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr "Husk dit log ind:"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr "Vælg den første OpenERP Applikation som du ønsker at installere."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "Installér"
|
|
@ -0,0 +1,38 @@
|
||||||
|
# German translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-10-10 12:40+0000\n"
|
||||||
|
"Last-Translator: Felix Schubert <Unknown>\n"
|
||||||
|
"Language-Team: German <de@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: 2011-11-01 05:10+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr "Willkommen zu Ihrer neuen OpenERP Instanz."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr "Denken Sie daran ein Lesezeichen für diese Seite zu setzen."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr "Anmeldung speichern"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr "Wählen Sie die erste OpenERP Anwendung die Sie installieren möchten."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "Installieren"
|
|
@ -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: 2011-10-19 06:05+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14157)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
msgid "Welcome to your new OpenERP instance."
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Spanish (Ecuador) translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-10-07 16:00+0000\n"
|
||||||
|
"Last-Translator: Cristian Salamea (Gnuthink) <ovnicraft@gmail.com>\n"
|
||||||
|
"Language-Team: Spanish (Ecuador) <es_EC@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: 2011-11-01 05:10+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr "Bienvenido a tu nueva instancia de OpenERP"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr "Recuerda marcar esta página"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr "Recordar tu inicio de sesión"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr "Escoge la primea Aplicación OpenERP que deseas instalar..."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "Instalar"
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Estonian translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-10-10 19:29+0000\n"
|
||||||
|
"Last-Translator: Aare Vesi <Unknown>\n"
|
||||||
|
"Language-Team: Estonian <et@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: 2011-11-01 05:09+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "Paigalda"
|
|
@ -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: 2011-10-24 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
|
||||||
"X-Generator: Launchpad (build 14185)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
msgid "Welcome to your new OpenERP instance."
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
msgid "Welcome to your new OpenERP instance."
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Italian translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-10-08 13:41+0000\n"
|
||||||
|
"Last-Translator: Nicola Riolini - Micronaet <Unknown>\n"
|
||||||
|
"Language-Team: Italian <it@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: 2011-11-01 05:10+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr "Benvenuto nella nuova istanza di OpenERP"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr "Ricordarsi di aggiungere ai preferiti questa pagina"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr "Ricordare il proprio login:"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr "Scegliere la prima applicazione OpenERP che volete installare..."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "Installa"
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Dutch (Belgium) translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-10-07 09:07+0000\n"
|
||||||
|
"Last-Translator: Niels Huylebroeck <Unknown>\n"
|
||||||
|
"Language-Team: Dutch (Belgium) <nl_BE@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: 2011-11-01 05:10+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr "Welkom bij uw nieuwe OpenERP."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr "Gelieve een bookmark voor deze pagina te maken."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr "Vergeet je login niet:"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr "Kies welke OpenERP Applicatie je wilt installeren..."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "Installeer"
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Polish translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-04 16:30+0000\n"
|
||||||
|
"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) <grzegorz@openglobe.pl>\n"
|
||||||
|
"Language-Team: Polish <pl@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: 2011-11-05 06:04+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr "Witamy w twojej nowej instancji OpenERP."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr "Pamiętaj o dodaniu tej strony do zakładek."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr "Zapamiętaj twój login:"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr "Wybierz pierwszą aplikację OpenERP do instalacji."
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr "Instaluj"
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Slovak translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-01 13:27+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Slovak <sk@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: 2011-11-02 05:05+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14214)\n"
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember to bookmark this page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Remember your login:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Choose the first OpenERP Application you want to install.."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
|
msgid "Install"
|
||||||
|
msgstr ""
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
|
||||||
msgid "Welcome to your new OpenERP instance."
|
msgid "Welcome to your new OpenERP instance."
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Arabic translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-03 15:11+0000\n"
|
||||||
|
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\n"
|
||||||
|
"Language-Team: Arabic <ar@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: 2011-11-04 05:32+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "New Node"
|
||||||
|
msgstr "طرف جديد"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "New Edge"
|
||||||
|
msgstr "حافة جديدة"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "Show Grid:"
|
||||||
|
msgstr "عرض الشبكة"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "First"
|
||||||
|
msgstr "الأول"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "<<"
|
||||||
|
msgstr ">>"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "0"
|
||||||
|
msgstr "0"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "/"
|
||||||
|
msgstr "/"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid ">>"
|
||||||
|
msgstr ">>"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "Last"
|
||||||
|
msgstr "الأخير"
|
|
@ -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: 2011-10-12 04:44+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14124)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -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: 2011-10-19 06:05+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14157)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -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: 2011-10-09 05:22+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Polish translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-04 16:24+0000\n"
|
||||||
|
"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) <grzegorz@openglobe.pl>\n"
|
||||||
|
"Language-Team: Polish <pl@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: 2011-11-05 06:04+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "New Node"
|
||||||
|
msgstr "Nowy węzeł"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "New Edge"
|
||||||
|
msgstr "Nowa linia"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "Show Grid:"
|
||||||
|
msgstr "Pokaż siatkę"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "First"
|
||||||
|
msgstr "Pierwsze"
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "<<"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "/"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid ">>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
|
msgid "Last"
|
||||||
|
msgstr "Ostatnie"
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
|
||||||
msgid "New Node"
|
msgid "New Node"
|
||||||
|
|
|
@ -28,6 +28,14 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
|
||||||
this.columns = [];
|
this.columns = [];
|
||||||
this.group_field = null;
|
this.group_field = null;
|
||||||
this.is_loaded = $.Deferred();
|
this.is_loaded = $.Deferred();
|
||||||
|
|
||||||
|
this.renderer = null;
|
||||||
|
},
|
||||||
|
stop: function () {
|
||||||
|
if (this.renderer) {
|
||||||
|
clearTimeout(this.renderer);
|
||||||
|
}
|
||||||
|
this._super();
|
||||||
},
|
},
|
||||||
do_show: function () {
|
do_show: function () {
|
||||||
this.$element.show();
|
this.$element.show();
|
||||||
|
@ -256,16 +264,22 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
|
||||||
y_axis = ordinate_description;
|
y_axis = ordinate_description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var renderer = function () {
|
||||||
|
if (self.$element.is(':hidden')) {
|
||||||
|
self.renderer = setTimeout(renderer, 100);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.renderer = null;
|
||||||
var bar_chart = new dhtmlXChart({
|
var bar_chart = new dhtmlXChart({
|
||||||
view: view_chart,
|
view: view_chart,
|
||||||
container: this.element_id+"-barchart",
|
container: self.element_id+"-barchart",
|
||||||
value:"#"+group_list[0].group+"#",
|
value:"#"+group_list[0].group+"#",
|
||||||
gradient: "3d",
|
gradient: "3d",
|
||||||
border: false,
|
border: false,
|
||||||
width: 1024,
|
width: 1024,
|
||||||
tooltip:{
|
tooltip:{
|
||||||
template: _.sprintf("#%s#, %s=#%s#",
|
template: _.sprintf("#%s#, %s=#%s#",
|
||||||
this.abscissa, group_list[0].text, group_list[0].group)
|
self.abscissa, group_list[0].text, group_list[0].group)
|
||||||
},
|
},
|
||||||
radius: 0,
|
radius: 0,
|
||||||
color:group_list[0].color,
|
color:group_list[0].color,
|
||||||
|
@ -288,24 +302,36 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
|
||||||
});
|
});
|
||||||
for (var m = 1; m<group_list.length;m++){
|
for (var m = 1; m<group_list.length;m++){
|
||||||
var column = group_list[m];
|
var column = group_list[m];
|
||||||
if (column.group === this.group_field) { continue; }
|
if (column.group === self.group_field) { continue; }
|
||||||
bar_chart.addSeries({
|
bar_chart.addSeries({
|
||||||
value: "#"+column.group+"#",
|
value: "#"+column.group+"#",
|
||||||
tooltip:{
|
tooltip:{
|
||||||
template: _.sprintf("#%s#, %s=#%s#",
|
template: _.sprintf("#%s#, %s=#%s#",
|
||||||
this.abscissa, column.text, column.group)
|
self.abscissa, column.text, column.group)
|
||||||
},
|
},
|
||||||
color: column.color
|
color: column.color
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
bar_chart.parse(results, "json");
|
bar_chart.parse(results, "json");
|
||||||
jQuery("#"+this.element_id+"-barchart").height(jQuery("#"+this.element_id+"-barchart").height()+50);
|
self.$element.find("#"+self.element_id+"-barchart").height(
|
||||||
|
self.$element.find("#"+self.element_id+"-barchart").height()+50);
|
||||||
bar_chart.attachEvent("onItemClick", function(id) {
|
bar_chart.attachEvent("onItemClick", function(id) {
|
||||||
self.open_list_view(bar_chart.get(id));
|
self.open_list_view(bar_chart.get(id));
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
if (this.renderer) {
|
||||||
|
clearTimeout(this.renderer);
|
||||||
|
}
|
||||||
|
this.renderer = setTimeout(renderer, 0);
|
||||||
},
|
},
|
||||||
schedule_pie: function(result) {
|
schedule_pie: function(result) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
var renderer = function () {
|
||||||
|
if (self.$element.is(':hidden')) {
|
||||||
|
self.renderer = setTimeout(renderer, 100);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.renderer = null;
|
||||||
var chart = new dhtmlXChart({
|
var chart = new dhtmlXChart({
|
||||||
view:"pie3D",
|
view:"pie3D",
|
||||||
container:self.element_id+"-piechart",
|
container:self.element_id+"-piechart",
|
||||||
|
@ -339,6 +365,11 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
|
||||||
chart.attachEvent("onItemClick", function(id) {
|
chart.attachEvent("onItemClick", function(id) {
|
||||||
self.open_list_view(chart.get(id));
|
self.open_list_view(chart.get(id));
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
if (this.renderer) {
|
||||||
|
clearTimeout(this.renderer);
|
||||||
|
}
|
||||||
|
this.renderer = setTimeout(renderer, 0);
|
||||||
},
|
},
|
||||||
open_list_view : function (id){
|
open_list_view : function (id){
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
|
@ -1,37 +1,71 @@
|
||||||
.openerp .oe_kanban_view .oe_column {
|
.openerp .oe_kanban_view .ui-sortable-placeholder {
|
||||||
width: 100%;
|
border: 1px dotted black;
|
||||||
|
visibility: visible !important;
|
||||||
|
height: 60px !important;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_group_header {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_group_folded {
|
||||||
|
padding: 0 5px 0 5px;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_group_folded .oe_kanban_group_title,
|
||||||
|
.openerp .oe_kanban_group_folded .oe_kanban_aggregates {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_group_folded .oe_kanban_group_title_vertical {
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.openerp .oe_vertical_text {
|
.openerp .oe_kanban_group_title {
|
||||||
|
color: #000000;
|
||||||
|
font-size: 130%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_group_title_undefined {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_group_title_vertical {
|
||||||
writing-mode: tb-rl;
|
writing-mode: tb-rl;
|
||||||
-webkit-transform: rotate(90deg);
|
-webkit-transform: rotate(90deg);
|
||||||
-moz-transform: rotate(90deg);
|
-moz-transform: rotate(90deg);
|
||||||
-o-transform: rotate(90deg);
|
-o-transform: rotate(90deg);
|
||||||
-ms-transform: rotate(90deg);
|
-ms-transform: rotate(90deg);
|
||||||
transform: rotate(90deg);
|
transform: rotate(90deg);
|
||||||
display:block;
|
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
align: center;
|
align: center;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.openerp .oe_kanban_view .ui-sortable-placeholder {
|
.openerp .oe_kanban_fold_icon {
|
||||||
border: 1px dotted black;
|
cursor: pointer;
|
||||||
visibility: visible !important;
|
|
||||||
height: 60px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.openerp .oe_kanban_view .oe_column_heading {
|
|
||||||
color: #000000;
|
|
||||||
font-size: 130%;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.openerp .oe_kanban_view .fold-columns-icon {
|
|
||||||
float: left;
|
float: left;
|
||||||
padding: 2px 2px 0 0;
|
padding: 2px 2px 0 0;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background: url(/web_kanban/static/src/img/minus-icon.png) no-repeat;
|
||||||
}
|
}
|
||||||
|
.openerp .oe_kanban_group_folded .oe_kanban_fold_icon {
|
||||||
|
background: url(/web_kanban/static/src/img/plus-icon.png) no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.openerp ul.oe_kanban_aggregates {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0 0 22px;
|
||||||
|
}
|
||||||
|
.openerp ul.oe_kanban_aggregates li {
|
||||||
|
list-style: circle;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.openerp ul.oe_kanban_aggregates span {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
.openerp .oe_kanban_action_button {
|
.openerp .oe_kanban_action_button {
|
||||||
height: 22px;
|
height: 22px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
@ -134,91 +168,113 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom colors are also present in kanban.js */
|
/* Custom colors are also present in kanban.js */
|
||||||
|
/* Custom color#0 */
|
||||||
|
.openerp .oe_kanban_color_0 .oe_kanban_color_bglight {
|
||||||
|
background: #FFFFFF;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_color_0 .oe_kanban_color_bgdark {
|
||||||
|
background: #EEEEEE;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_color_0 .oe_kanban_color_border {
|
||||||
|
border-color: #CCCCCC;
|
||||||
|
}
|
||||||
|
|
||||||
/* Custom color#1 */
|
/* Custom color#1 */
|
||||||
.openerp .oe_kanban_color_1 .oe_kanban_color_bglight {
|
.openerp .oe_kanban_color_1 .oe_kanban_color_bglight {
|
||||||
background: #FFC7C7;
|
background: #CCCCCC;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_1 .oe_kanban_color_bgdark {
|
.openerp .oe_kanban_color_1 .oe_kanban_color_bgdark {
|
||||||
background: #FF8F8F;
|
background: #999999;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_1 .oe_kanban_color_border {
|
.openerp .oe_kanban_color_1 .oe_kanban_color_border {
|
||||||
border-color: #D97979;
|
border-color: #666666;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom color#2 */
|
/* Custom color#2 */
|
||||||
.openerp .oe_kanban_color_2 .oe_kanban_color_bglight {
|
.openerp .oe_kanban_color_2 .oe_kanban_color_bglight {
|
||||||
background: #FFF1C7;
|
background: #FFC7C7;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_2 .oe_kanban_color_bgdark {
|
.openerp .oe_kanban_color_2 .oe_kanban_color_bgdark {
|
||||||
background: #FFE38F;
|
background: #FF8F8F;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_2 .oe_kanban_color_border {
|
.openerp .oe_kanban_color_2 .oe_kanban_color_border {
|
||||||
border-color: #D9C179;
|
border-color: #D97979;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom color#3 */
|
/* Custom color#3 */
|
||||||
.openerp .oe_kanban_color_3 .oe_kanban_color_bglight {
|
.openerp .oe_kanban_color_3 .oe_kanban_color_bglight {
|
||||||
background: #E3FFC7;
|
background: #FFF1C7;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_3 .oe_kanban_color_bgdark {
|
.openerp .oe_kanban_color_3 .oe_kanban_color_bgdark {
|
||||||
background: #C7FF8F;
|
background: #FFE38F;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_3 .oe_kanban_color_border {
|
.openerp .oe_kanban_color_3 .oe_kanban_color_border {
|
||||||
border-color: #A9D979;
|
border-color: #D9C179;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom color#4 */
|
/* Custom color#4 */
|
||||||
.openerp .oe_kanban_color_4 .oe_kanban_color_bglight {
|
.openerp .oe_kanban_color_4 .oe_kanban_color_bglight {
|
||||||
background: #C7FFD5;
|
background: #E3FFC7;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_4 .oe_kanban_color_bgdark {
|
.openerp .oe_kanban_color_4 .oe_kanban_color_bgdark {
|
||||||
background: #8FFFAB;
|
background: #C7FF8F;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_4 .oe_kanban_color_border {
|
.openerp .oe_kanban_color_4 .oe_kanban_color_border {
|
||||||
border-color: #79D991;
|
border-color: #A9D979;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom color#5 */
|
/* Custom color#5 */
|
||||||
.openerp .oe_kanban_color_5 .oe_kanban_color_bglight {
|
.openerp .oe_kanban_color_5 .oe_kanban_color_bglight {
|
||||||
background: #C7FFFF;
|
background: #C7FFD5;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_5 .oe_kanban_color_bgdark {
|
.openerp .oe_kanban_color_5 .oe_kanban_color_bgdark {
|
||||||
background: #8FFFFF;
|
background: #8FFFAB;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_5 .oe_kanban_color_border {
|
.openerp .oe_kanban_color_5 .oe_kanban_color_border {
|
||||||
border-color: #79D9D9;
|
border-color: #79D991;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom color#6 */
|
/* Custom color#6 */
|
||||||
.openerp .oe_kanban_color_6 .oe_kanban_color_bglight {
|
.openerp .oe_kanban_color_6 .oe_kanban_color_bglight {
|
||||||
background: #C7D5FF;
|
background: #C7FFFF;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_6 .oe_kanban_color_bgdark {
|
.openerp .oe_kanban_color_6 .oe_kanban_color_bgdark {
|
||||||
background: #8FABFF;
|
background: #8FFFFF;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_6 .oe_kanban_color_border {
|
.openerp .oe_kanban_color_6 .oe_kanban_color_border {
|
||||||
border-color: #8FABFF;
|
border-color: #79D9D9;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom color#7 */
|
/* Custom color#7 */
|
||||||
.openerp .oe_kanban_color_7 .oe_kanban_color_bglight {
|
.openerp .oe_kanban_color_7 .oe_kanban_color_bglight {
|
||||||
background: #E3C7FF;
|
background: #C7D5FF;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_7 .oe_kanban_color_bgdark {
|
.openerp .oe_kanban_color_7 .oe_kanban_color_bgdark {
|
||||||
background: #C78FFF;
|
background: #8FABFF;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_7 .oe_kanban_color_border {
|
.openerp .oe_kanban_color_7 .oe_kanban_color_border {
|
||||||
border-color: #A979D9;
|
border-color: #8FABFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom color#8 */
|
/* Custom color#8 */
|
||||||
.openerp .oe_kanban_color_8 .oe_kanban_color_bglight {
|
.openerp .oe_kanban_color_8 .oe_kanban_color_bglight {
|
||||||
background: #FFC7F1;
|
background: #E3C7FF;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_8 .oe_kanban_color_bgdark {
|
.openerp .oe_kanban_color_8 .oe_kanban_color_bgdark {
|
||||||
background: #FF8FE3;
|
background: #C78FFF;
|
||||||
}
|
}
|
||||||
.openerp .oe_kanban_color_8 .oe_kanban_color_border {
|
.openerp .oe_kanban_color_8 .oe_kanban_color_border {
|
||||||
|
border-color: #A979D9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Custom color#9 */
|
||||||
|
.openerp .oe_kanban_color_9 .oe_kanban_color_bglight {
|
||||||
|
background: #FFC7F1;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_color_9 .oe_kanban_color_bgdark {
|
||||||
|
background: #FF8FE3;
|
||||||
|
}
|
||||||
|
.openerp .oe_kanban_color_9 .oe_kanban_color_border {
|
||||||
border-color: #D979C1;
|
border-color: #D979C1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,3 +282,8 @@
|
||||||
.openerp .oe_kanban_color_alert .oe_kanban_color_border {
|
.openerp .oe_kanban_color_alert .oe_kanban_color_border {
|
||||||
border-color: #c00 !important;
|
border-color: #c00 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Green color */
|
||||||
|
.openerp .oe_kanban_color_green .oe_kanban_color_border {
|
||||||
|
border-color: #0c0 !important;
|
||||||
|
}
|
||||||
|
|
|
@ -1,37 +1,58 @@
|
||||||
openerp.web_kanban = function (openerp) {
|
openerp.web_kanban = function (openerp) {
|
||||||
|
|
||||||
|
var _t = openerp.web._t;
|
||||||
var QWeb = openerp.web.qweb;
|
var QWeb = openerp.web.qweb;
|
||||||
openerp.web.views.add('kanban', 'openerp.web_kanban.KanbanView');
|
openerp.web.views.add('kanban', 'openerp.web_kanban.KanbanView');
|
||||||
|
|
||||||
openerp.web_kanban.KanbanView = openerp.web.View.extend({
|
openerp.web_kanban.KanbanView = openerp.web.View.extend({
|
||||||
|
template: "KanbanView",
|
||||||
|
default_nr_columns: 3,
|
||||||
init: function (parent, dataset, view_id, options) {
|
init: function (parent, dataset, view_id, options) {
|
||||||
this._super(parent);
|
this._super(parent);
|
||||||
this.set_default_options(options);
|
this.set_default_options(options);
|
||||||
this.dataset = dataset;
|
this.dataset = dataset;
|
||||||
this.model = dataset.model;
|
|
||||||
this.view_id = view_id;
|
this.view_id = view_id;
|
||||||
this.fields_view = {};
|
this.fields_view = {};
|
||||||
this.group_by = [];
|
this.fields_keys = [];
|
||||||
this.source_index = {};
|
this.group_by = null;
|
||||||
this.all_display_data = false;
|
this.state = {
|
||||||
|
groups : {},
|
||||||
|
records : {}
|
||||||
|
};
|
||||||
this.groups = [];
|
this.groups = [];
|
||||||
this.qweb = new QWeb2.Engine();
|
|
||||||
this.qweb.debug = openerp.connector.debug;
|
|
||||||
this.aggregates = {};
|
|
||||||
this.NO_OF_COLUMNS = 3;
|
|
||||||
this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start();
|
this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start();
|
||||||
this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved);
|
this.form_dialog.on_form_dialog_saved.add_last(this.do_reload);
|
||||||
|
this.aggregates = {};
|
||||||
|
this.qweb = new QWeb2.Engine();
|
||||||
|
this.qweb.debug = openerp.connection.debug;
|
||||||
|
this.qweb.default_dict = {
|
||||||
|
'_' : _,
|
||||||
|
'_t' : _t
|
||||||
|
}
|
||||||
|
this.has_been_loaded = $.Deferred();
|
||||||
|
this.search_domain = this.search_context = this.search_group_by = null;
|
||||||
|
this.currently_dragging = {};
|
||||||
},
|
},
|
||||||
start: function() {
|
start: function() {
|
||||||
this._super();
|
this._super();
|
||||||
return this.rpc("/web/view/load", {"model": this.model, "view_id": this.view_id, "view_type": "kanban"}, this.on_loaded);
|
this.$element.find('button.oe_kanban_button_new').click(this.do_add_record);
|
||||||
|
this.$groups = this.$element.find('.oe_kanban_groups tr');
|
||||||
|
var context = new openerp.web.CompoundContext(this.dataset.get_context());
|
||||||
|
return this.rpc('/web/view/load', {
|
||||||
|
'model': this.dataset.model,
|
||||||
|
'view_id': this.view_id,
|
||||||
|
'view_type': 'kanban',
|
||||||
|
context: context
|
||||||
|
}, this.on_loaded);
|
||||||
},
|
},
|
||||||
on_loaded: function(data) {
|
on_loaded: function(data) {
|
||||||
var self = this;
|
|
||||||
this.fields_view = data;
|
this.fields_view = data;
|
||||||
|
this.fields_keys = _.keys(this.fields_view.fields);
|
||||||
this.add_qweb_template();
|
this.add_qweb_template();
|
||||||
|
this.has_been_loaded.resolve();
|
||||||
},
|
},
|
||||||
add_qweb_template: function() {
|
add_qweb_template: function() {
|
||||||
var group_operator = ["avg", "max", "min", "sum", "count"]
|
var group_operator = ['avg', 'max', 'min', 'sum', 'count']
|
||||||
for (var i=0, ii=this.fields_view.arch.children.length; i < ii; i++) {
|
for (var i=0, ii=this.fields_view.arch.children.length; i < ii; i++) {
|
||||||
var child = this.fields_view.arch.children[i];
|
var child = this.fields_view.arch.children[i];
|
||||||
if (child.tag === "field") {
|
if (child.tag === "field") {
|
||||||
|
@ -49,49 +70,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
get_qweb_context: function(record) {
|
|
||||||
return {
|
|
||||||
record: this.do_transform_record(record),
|
|
||||||
kanban_color: _.bind(this.kanban_color, this),
|
|
||||||
kanban_gravatar: _.bind(this.kanban_gravatar, this),
|
|
||||||
kanban_image: _.bind(this.kanban_image, this),
|
|
||||||
kanban_text_ellipsis: _.bind(this.kanban_text_ellipsis, this),
|
|
||||||
'_' : _
|
|
||||||
}
|
|
||||||
},
|
|
||||||
kanban_color: function(variable) {
|
|
||||||
var number_of_color_schemes = 8,
|
|
||||||
index = 0;
|
|
||||||
switch (typeof(variable)) {
|
|
||||||
case 'string':
|
|
||||||
for (var i=0, ii=variable.length; i<ii; i++) {
|
|
||||||
index += variable.charCodeAt(i);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'number':
|
|
||||||
index = Math.round(variable);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
return 'oe_kanban_color_' + ((index % number_of_color_schemes) || number_of_color_schemes);
|
|
||||||
},
|
|
||||||
kanban_gravatar: function(email, size) {
|
|
||||||
size = size || 22;
|
|
||||||
var email_md5 = $.md5(email);
|
|
||||||
return 'http://www.gravatar.com/avatar/' + email_md5 + '.png?s=' + size;
|
|
||||||
},
|
|
||||||
kanban_image: function(model, field, id) {
|
|
||||||
id = id || '';
|
|
||||||
return '/web/binary/image?session_id=' + this.session.session_id + '&model=' + model + '&field=' + field + '&id=' + id;
|
|
||||||
},
|
|
||||||
kanban_text_ellipsis: function(s, size) {
|
|
||||||
size = size || 160;
|
|
||||||
if (!s) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
return s.substr(0, size) + '...';
|
|
||||||
},
|
|
||||||
transform_qweb_template: function(node) {
|
transform_qweb_template: function(node) {
|
||||||
var qweb_prefix = QWeb.prefix;
|
var qweb_prefix = QWeb.prefix;
|
||||||
switch (node.tag) {
|
switch (node.tag) {
|
||||||
|
@ -143,357 +121,391 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
on_show_data: function() {
|
|
||||||
var self = this;
|
|
||||||
if (!this.group_by.length) {
|
|
||||||
this.do_record_group();
|
|
||||||
}
|
|
||||||
this.$element.html(QWeb.render("KanbanView", {"data": self.all_display_data}));
|
|
||||||
this.on_reload_kanban();
|
|
||||||
this.$element.find(".oe_vertical_text").hide();
|
|
||||||
var drag_handel = false;
|
|
||||||
if (this.$element.find(".oe_kanban_draghandle").length > 0) {
|
|
||||||
drag_handel = ".oe_kanban_draghandle";
|
|
||||||
}
|
|
||||||
if (!this.group_by.length) {
|
|
||||||
drag_handel = true;
|
|
||||||
}
|
|
||||||
this.$element.find(".oe_column").sortable({
|
|
||||||
connectWith: ".oe_column",
|
|
||||||
handle : drag_handel,
|
|
||||||
start: function(event, ui) {
|
|
||||||
self.source_index['index'] = ui.item.index();
|
|
||||||
self.source_index['column'] = ui.item.parent().attr('id');
|
|
||||||
},
|
|
||||||
stop: self.on_receive_record,
|
|
||||||
scroll: false
|
|
||||||
});
|
|
||||||
this.$element.find('button.oe_kanban_button_new').click(this.do_add_record);
|
|
||||||
this.$element.find(".fold-columns-icon").click(function(event) {
|
|
||||||
self.do_fold_unfold_columns(event, this.id);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
do_fold_unfold_columns: function(event, element_id) {
|
|
||||||
var column_id = "column_" + element_id;
|
|
||||||
var column_element = this.$element.find("#" + column_id + " .oe_fold_column");
|
|
||||||
if (column_element.is(":hidden")) {
|
|
||||||
this.$element.find("#" + column_id).find("img.fold-columns-icon").attr('src', '/web_kanban/static/src/img/minus-icon.png');
|
|
||||||
column_element.show();
|
|
||||||
this.$element.find("#" + column_id + ".oe_table_column").css("width",Math.round(99 / this.all_display_data.length) + "%");
|
|
||||||
this.$element.find("#" + column_id + ".oe_vertical_text").hide();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
this.$element.find("#" + column_id).find("img.fold-columns-icon").attr('src', '/web_kanban/static/src/img/plus-icon.png');
|
|
||||||
column_element.hide();
|
|
||||||
this.$element.find("#" + column_id + ".oe_table_column").css("width","0.5%");
|
|
||||||
this.$element.find("#" + column_id + ".oe_vertical_text").show();
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
do_record_group: function() {
|
|
||||||
if (this.NO_OF_COLUMNS && this.all_display_data.length > 0) {
|
|
||||||
var records = this.all_display_data[0].records;
|
|
||||||
var record_per_group = Math.round((records).length / this.NO_OF_COLUMNS);
|
|
||||||
this.all_display_data = [];
|
|
||||||
for (var i=0, ii=this.NO_OF_COLUMNS; i < ii; i++) {
|
|
||||||
this.all_display_data.push({'records': records.slice(0,record_per_group), 'value':i, 'header' : false, 'ids':[]});
|
|
||||||
records.splice(0,record_per_group);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
on_button_click: function (button_attrs, record_id) {
|
|
||||||
this.on_execute_button_click(this.dataset, button_attrs, record_id);
|
|
||||||
},
|
|
||||||
do_add_record: function() {
|
do_add_record: function() {
|
||||||
this.dataset.index = null;
|
this.dataset.index = null;
|
||||||
this.do_switch_view('form');
|
this.do_switch_view('form');
|
||||||
},
|
},
|
||||||
do_edit_record: function(record_id) {
|
|
||||||
var self = this;
|
|
||||||
this.form_dialog.select_id(record_id).then(function() {
|
|
||||||
self.form_dialog.open();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
on_record_saved: function(r) {
|
|
||||||
var id = this.form_dialog.form.datarecord.id;
|
|
||||||
this.on_reload_record(id);
|
|
||||||
},
|
|
||||||
do_change_color: function(record_id, $e) {
|
|
||||||
var self = this,
|
|
||||||
id = record_id,
|
|
||||||
colors = '#FFC7C7,#FFF1C7,#E3FFC7,#C7FFD5,#C7FFFF,#C7D5FF,#E3C7FF,#FFC7F1'.split(','),
|
|
||||||
$cpicker = $(QWeb.render('KanbanColorPicker', { colors : colors, columns: 2 }));
|
|
||||||
$e.after($cpicker);
|
|
||||||
$cpicker.mouseenter(function() {
|
|
||||||
clearTimeout($cpicker.data('timeoutId'));
|
|
||||||
}).mouseleave(function(evt) {
|
|
||||||
var timeoutId = setTimeout(function() { $cpicker.remove() }, 500);
|
|
||||||
$cpicker.data('timeoutId', timeoutId);
|
|
||||||
});
|
|
||||||
$cpicker.find('a').click(function(evt) {
|
|
||||||
var data = {};
|
|
||||||
data[$e.data('name')] = $(this).data('color');
|
|
||||||
self.dataset.write(id, data, {}, function() {
|
|
||||||
self.on_reload_record(id);
|
|
||||||
});
|
|
||||||
$cpicker.remove();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
Reload one record in view.
|
|
||||||
record_id : reload record id.
|
|
||||||
*/
|
|
||||||
on_reload_record: function (record_id){
|
|
||||||
var self = this;
|
|
||||||
this.dataset.read_ids([record_id], _.keys(self.fields_view.fields), function (records) {
|
|
||||||
if (records.length > 0) {
|
|
||||||
for (var i=0, ii=self.all_display_data.length; i < ii; i++) {
|
|
||||||
for(j=0, jj=self.all_display_data[i].records.length; j < jj; j++) {
|
|
||||||
if (self.all_display_data[i].records[j].id == record_id) {
|
|
||||||
_.extend(self.all_display_data[i].records[j], records[0]);
|
|
||||||
self.$element.find("#main_" + record_id).children().remove();
|
|
||||||
self.$element.find("#main_" + record_id).append(
|
|
||||||
self.qweb.render('kanban-box', self.get_qweb_context(self.all_display_data[i].records[j]))
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.$element.find("#main_" + record_id + " .oe_kanban_action").click(self.on_action_clicked);
|
|
||||||
self.$element.find("#main_" + record_id + " .oe_kanban_box_show_onclick_trigger").click(function() {
|
|
||||||
$(this).parent("#main_" + record_id + " .oe_kanban_box").find(".oe_kanban_box_show_onclick").toggle();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
|
||||||
do_delete: function (id) {
|
|
||||||
var self = this;
|
|
||||||
return $.when(this.dataset.unlink([id])).then(function () {
|
|
||||||
self.drop_records(id);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
drop_records: function (id) {
|
|
||||||
var self = this;
|
|
||||||
_.each(self.all_display_data, function(data, index) {
|
|
||||||
_.each(data.records, function(record, index_row) {
|
|
||||||
if (parseInt(record.id) == id) {
|
|
||||||
self.all_display_data[index]['records'].splice(index_row, 1);
|
|
||||||
self.all_display_data[index]['ids'].splice(index_row, 1);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
self.$element.find("#main_" + id).remove();
|
|
||||||
},
|
|
||||||
on_execute_button_click: function (dataset, button_attrs, record_id) {
|
|
||||||
var self = this;
|
|
||||||
this.do_execute_action(
|
|
||||||
button_attrs, dataset,
|
|
||||||
record_id, function () {
|
|
||||||
self.on_reload_record(record_id);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
on_receive_record: function (event, ui) {
|
|
||||||
var self = this;
|
|
||||||
var from = ui.item.index();
|
|
||||||
var search_action = false;
|
|
||||||
var to = ui.item.prev().index() || 0;
|
|
||||||
if (!ui.item.attr("id")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (self.fields_view.fields.sequence != undefined && ((self.source_index.index >= 0 && self.source_index.index != from) ||
|
|
||||||
(self.source_index.column && self.source_index.column != ui.item.parent().attr('id')))) {
|
|
||||||
var child_record = ui.item.parent().children();
|
|
||||||
var data, sequence = 1, index = to;
|
|
||||||
child_record.splice(0, to);
|
|
||||||
var flag = false;
|
|
||||||
if (to >= 0 && child_record) {
|
|
||||||
var record_id = parseInt($(child_record).attr("id").split("_")[1]);
|
|
||||||
if (record_id) {
|
|
||||||
_.each(self.all_display_data, function(data, index) {
|
|
||||||
_.each(data.records, function(record, index_row) {
|
|
||||||
if(record_id == record.id && record.sequence) {
|
|
||||||
sequence = record.sequence;
|
|
||||||
flag = true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if(flag) {return false;}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_.each(child_record, function (child) {
|
|
||||||
var child_id = parseInt($(child).attr("id").split("_")[1]);
|
|
||||||
if (child_id) {
|
|
||||||
flag = false;
|
|
||||||
_.each(self.all_display_data, function(data, index) {
|
|
||||||
_.each(data.records, function(record, index_row) {
|
|
||||||
if(parseInt(record.id) == child_id) {
|
|
||||||
self.all_display_data[index]['records'][index_row]['sequence'] = sequence;
|
|
||||||
flag = true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (flag) {return false;}
|
|
||||||
});
|
|
||||||
self.dataset.write(child_id, {sequence: sequence});
|
|
||||||
sequence++;
|
|
||||||
search_action = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (self.group_by.length > 0 && self.source_index.column && self.source_index.column != ui.item.parent().attr('id')) {
|
|
||||||
var value = ui.item.closest("td").attr("id");
|
|
||||||
if (value) {
|
|
||||||
var data_val = {};
|
|
||||||
var wirte_id = parseInt(ui.item.attr("id").split("_")[1]);
|
|
||||||
value = value.split("_")[1];
|
|
||||||
if (value == 'false') {
|
|
||||||
value = false;
|
|
||||||
}
|
|
||||||
var update_record = false;
|
|
||||||
_.each(self.all_display_data, function(data, index) {
|
|
||||||
_.each(data.records, function(record, index_row) {
|
|
||||||
if(parseInt(record.id) == wirte_id) {
|
|
||||||
self.all_display_data[index]['records'][index_row][self.group_by[0]] = value;
|
|
||||||
update_record = self.all_display_data[index]['records'].splice(index_row,1)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (update_record) {return false;}
|
|
||||||
});
|
|
||||||
_.each(self.all_display_data, function(data, index) {
|
|
||||||
if (data.value == value || (data.value == 'false' && value == false)) {
|
|
||||||
self.all_display_data[index]['records'].push(update_record[0]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
data_val[self.group_by[0]] = value;
|
|
||||||
self.dataset.write(wirte_id, data_val);
|
|
||||||
search_action = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (search_action) {
|
|
||||||
self.on_reload_kanban();
|
|
||||||
}
|
|
||||||
this.source_index = {};
|
|
||||||
},
|
|
||||||
on_reload_kanban: function() {
|
|
||||||
var self = this;
|
|
||||||
_.each(self.all_display_data, function(data, index) {
|
|
||||||
if (data.records.length > 0){
|
|
||||||
_.each(data.records, function(record) {
|
|
||||||
self.$element.find("#main_" + record.id).children().remove();
|
|
||||||
self.$element.find("#main_" + record.id).append(
|
|
||||||
self.qweb.render('kanban-box', self.get_qweb_context(record))
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.$element.find('.oe_kanban_action').click(this.on_action_clicked);
|
|
||||||
this.$element.find('.oe_kanban_box_show_onclick_trigger').click(function() {
|
|
||||||
$(this).parent('.oe_kanban_box').find('.oe_kanban_box_show_onclick').toggle();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
on_action_clicked: function(evt) {
|
|
||||||
evt.preventDefault();
|
|
||||||
var $action = $(evt.currentTarget),
|
|
||||||
record_id = parseInt($action.closest(".oe_kanban_record").attr("id").split('_')[1]),
|
|
||||||
type = $action.data('type');
|
|
||||||
if (type == 'delete') {
|
|
||||||
this.do_delete(record_id);
|
|
||||||
} else if (type == 'edit') {
|
|
||||||
this.do_edit_record(record_id);
|
|
||||||
} else if (type == 'color') {
|
|
||||||
this.do_change_color(record_id, $action);
|
|
||||||
} else {
|
|
||||||
var button_attrs = $action.data();
|
|
||||||
this.on_button_click(button_attrs, record_id);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
do_transform_record: function(record) {
|
|
||||||
var self = this,
|
|
||||||
new_record = {};
|
|
||||||
_.each(record, function(value, name) {
|
|
||||||
var r = _.clone(self.fields_view.fields[name]);
|
|
||||||
r.raw_value = value;
|
|
||||||
r.value = openerp.web.format_value(value, r);
|
|
||||||
new_record[name] = r;
|
|
||||||
});
|
|
||||||
return new_record;
|
|
||||||
},
|
|
||||||
do_search: function(domain, context, group_by) {
|
do_search: function(domain, context, group_by) {
|
||||||
var self = this;
|
var self = this;
|
||||||
self.group_by = group_by;
|
this.search_domain = domain;
|
||||||
var self = this,
|
this.search_context = context;
|
||||||
group_by = self.group_by;
|
this.search_group_by = group_by;
|
||||||
if (!group_by.length && this.fields_view.arch.attrs.default_group_by) {
|
$.when(this.has_been_loaded).then(function() {
|
||||||
group_by = [this.fields_view.arch.attrs.default_group_by];
|
self.group_by = group_by.length ? group_by[0] : self.fields_view.arch.attrs.default_group_by;
|
||||||
self.group_by = group_by;
|
self.datagroup = new openerp.web.DataGroup(self, self.dataset.model, domain, context, self.group_by ? [self.group_by] : []);
|
||||||
}
|
self.datagroup.list(self.fields_keys, self.do_process_groups, self.do_process_dataset);
|
||||||
self.datagroup = new openerp.web.DataGroup(self, self.model, domain, context, group_by);
|
|
||||||
self.datagroup.list(
|
|
||||||
_.keys(self.fields_view.fields),
|
|
||||||
function (groups) {
|
|
||||||
self.dataset.ids = [];
|
|
||||||
self.groups = groups;
|
|
||||||
if (groups.length) {
|
|
||||||
self.do_render_group(groups);
|
|
||||||
} else {
|
|
||||||
self.all_display_data = [];
|
|
||||||
self.on_show_data();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
function (dataset) {
|
|
||||||
self.groups = [];
|
|
||||||
self.dataset.read_slice(_.keys(self.fields_view.fields), {}, function(records) {
|
|
||||||
if (records.length) {
|
|
||||||
self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}];
|
|
||||||
} else {
|
|
||||||
self.all_display_data = [];
|
|
||||||
}
|
|
||||||
self.$element.find(".oe_kanban_view").remove();
|
|
||||||
self.on_show_data();
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
do_render_group : function (datagroups) {
|
do_process_groups: function(groups) {
|
||||||
this.all_display_data = [];
|
this.do_clear_groups();
|
||||||
|
this.dataset.ids = [];
|
||||||
var self = this,
|
var self = this,
|
||||||
remaining = datagroups.length - 1;
|
remaining = groups.length - 1,
|
||||||
_.each(datagroups, function (group, index) {
|
groups_array = [];
|
||||||
var group_name = group.value;
|
_.each(groups, function (group, index) {
|
||||||
var group_value = group.value;
|
var group_name = group.value,
|
||||||
if (!group.value) {
|
group_value = group.value,
|
||||||
group_name = "Undefined";
|
group_aggregates = {};
|
||||||
group_value = 'false';
|
if (group.value instanceof Array) {
|
||||||
} else if (group.value instanceof Array) {
|
|
||||||
group_name = group.value[1];
|
group_name = group.value[1];
|
||||||
group_value = group.value[0];
|
group_value = group.value[0];
|
||||||
}
|
}
|
||||||
var group_aggregates = {};
|
|
||||||
_.each(self.aggregates, function(value, key) {
|
_.each(self.aggregates, function(value, key) {
|
||||||
group_aggregates[value] = group.aggregates[key];
|
group_aggregates[value] = group.aggregates[key];
|
||||||
});
|
});
|
||||||
var dataset = new openerp.web.DataSetSearch(self, self.dataset.model, group.context, group.domain);
|
var dataset = new openerp.web.DataSetSearch(self, self.dataset.model, group.context, group.domain);
|
||||||
self.$element.find(".oe_kanban_view").remove();
|
dataset.read_slice(self.fields_keys, {'domain': group.domain, 'context': group.context}, function(records) {
|
||||||
dataset.read_slice(_.keys(self.fields_view.fields), {'domain': group.domain, 'context': group.context}, function(records) {
|
|
||||||
self.dataset.ids.push.apply(self.dataset.ids, dataset.ids);
|
self.dataset.ids.push.apply(self.dataset.ids, dataset.ids);
|
||||||
self.all_display_data[index] = {"value" : group_value, "records" : records, 'header' : group_name, 'ids' : dataset.ids, 'aggregates' : group_aggregates};
|
groups_array[index] = new openerp.web_kanban.KanbanGroup(self, records, group_value, group_name, group_aggregates);
|
||||||
if (!remaining--) {
|
if (!remaining--) {
|
||||||
self.on_show_data();
|
self.dataset.index = self.dataset.ids.length ? 0 : null;
|
||||||
|
self.do_add_groups(groups_array);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
do_process_dataset: function(dataset) {
|
||||||
|
var self = this;
|
||||||
|
this.do_clear_groups();
|
||||||
|
this.dataset.read_slice(this.fields_keys, {}, function(records) {
|
||||||
|
var groups = [];
|
||||||
|
while (records.length) {
|
||||||
|
for (var i = 0; i < self.default_nr_columns; i++) {
|
||||||
|
if (!groups[i]) {
|
||||||
|
groups[i] = [];
|
||||||
|
}
|
||||||
|
groups[i].push(records.shift());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var i = 0; i < groups.length; i++) {
|
||||||
|
groups[i] = new openerp.web_kanban.KanbanGroup(self, _.compact(groups[i]));
|
||||||
|
}
|
||||||
|
self.do_add_groups(groups);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
do_reload: function() {
|
||||||
|
this.do_search(this.search_domain, this.search_context, this.search_group_by);
|
||||||
|
},
|
||||||
|
do_clear_groups: function() {
|
||||||
|
_.each(this.groups, function(group) {
|
||||||
|
group.stop();
|
||||||
|
});
|
||||||
|
this.groups = [];
|
||||||
|
this.$element.find('.oe_kanban_groups_headers, .oe_kanban_groups_records').empty();
|
||||||
|
},
|
||||||
|
do_add_groups: function(groups) {
|
||||||
|
var self = this;
|
||||||
|
_.each(groups, function(group) {
|
||||||
|
self.groups[group.undefined_title ? 'unshift' : 'push'](group);
|
||||||
|
});
|
||||||
|
_.each(this.groups, function(group) {
|
||||||
|
group.appendTo(self.$element.find('.oe_kanban_groups_headers'));
|
||||||
|
});
|
||||||
|
this.on_groups_started();
|
||||||
|
},
|
||||||
|
on_groups_started: function() {
|
||||||
|
var self = this;
|
||||||
|
this.compute_groups_width();
|
||||||
|
if (this.group_by) {
|
||||||
|
this.$element.find('.oe_kanban_column').sortable({
|
||||||
|
connectWith: '.oe_kanban_column',
|
||||||
|
handle : '.oe_kanban_draghandle',
|
||||||
|
start: function(event, ui) {
|
||||||
|
self.currently_dragging.index = ui.item.index();
|
||||||
|
self.currently_dragging.group = ui.item.parents('.oe_kanban_column:first').data('widget');
|
||||||
|
},
|
||||||
|
stop: function(event, ui) {
|
||||||
|
var record = ui.item.data('widget'),
|
||||||
|
old_index = self.currently_dragging.index,
|
||||||
|
new_index = ui.item.index(),
|
||||||
|
old_group = self.currently_dragging.group,
|
||||||
|
new_group = ui.item.parents('.oe_kanban_column:first').data('widget');
|
||||||
|
if (!(old_group.title === new_group.title && old_group.value === new_group.value && old_index == new_index)) {
|
||||||
|
self.on_record_moved(record, old_group, old_index, new_group, new_index);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
scroll: false
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$element.find('.oe_kanban_draghandle').removeClass('oe_kanban_draghandle');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
on_record_moved : function(record, old_group, old_index, new_group, new_index) {
|
||||||
|
if (old_group === new_group) {
|
||||||
|
new_group.records.splice(old_index, 1);
|
||||||
|
new_group.records.splice(new_index, 0, record);
|
||||||
|
new_group.do_save_sequences();
|
||||||
|
} else {
|
||||||
|
old_group.records.splice(old_index, 1);
|
||||||
|
new_group.records.splice(new_index, 0, record);
|
||||||
|
record.group = new_group;
|
||||||
|
var data = {};
|
||||||
|
data[this.group_by] = new_group.value;
|
||||||
|
this.dataset.write(record.id, data, {}, function() {
|
||||||
|
record.do_reload();
|
||||||
|
new_group.do_save_sequences();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
do_show: function () {
|
do_show: function () {
|
||||||
this.$element.show();
|
this.$element.show();
|
||||||
},
|
},
|
||||||
do_hide: function () {
|
do_hide: function () {
|
||||||
this.$element.hide();
|
this.$element.hide();
|
||||||
|
},
|
||||||
|
compute_groups_width: function() {
|
||||||
|
var unfolded = 0;
|
||||||
|
_.each(this.groups, function(group) {
|
||||||
|
unfolded += group.state.folded ? 0 : 1;
|
||||||
|
group.$element.css('width', '');
|
||||||
|
});
|
||||||
|
_.each(this.groups, function(group) {
|
||||||
|
if (!group.state.folded) {
|
||||||
|
group.$element.css('width', Math.round(100/unfolded) + '%');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
openerp.web_kanban.KanbanGroup = openerp.web.Widget.extend({
|
||||||
|
template: 'KanbanView.group_header',
|
||||||
|
init: function (parent, records, value, title, aggregates) {
|
||||||
|
var self = this;
|
||||||
|
this._super(parent);
|
||||||
|
this.view = parent;
|
||||||
|
this.value = value;
|
||||||
|
this.title = title;
|
||||||
|
if (title === false) {
|
||||||
|
this.title = _t('Undefined');
|
||||||
|
this.undefined_title = true;
|
||||||
|
}
|
||||||
|
this.aggregates = aggregates || {};
|
||||||
|
var key = this.view.group_by + '-' + value;
|
||||||
|
if (!this.view.state.groups[key]) {
|
||||||
|
this.view.state.groups[key] = {
|
||||||
|
folded: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.state = this.view.state.groups[key];
|
||||||
|
this.$records = null;
|
||||||
|
this.records = _.map(records, function(record) {
|
||||||
|
return new openerp.web_kanban.KanbanRecord(self, record);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
start: function() {
|
||||||
|
var self = this,
|
||||||
|
def = this._super();
|
||||||
|
this.$records = $(QWeb.render('KanbanView.group_records_container', { widget : this}));
|
||||||
|
this.$records.appendTo(this.view.$element.find('.oe_kanban_groups_records'));
|
||||||
|
_.each(this.records, function(record) {
|
||||||
|
record.appendTo(self.$records);
|
||||||
|
});
|
||||||
|
this.$element.find(".oe_kanban_fold_icon").click(function() {
|
||||||
|
self.do_toggle_fold();
|
||||||
|
self.view.compute_groups_width();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
if (this.state.folded) {
|
||||||
|
this.do_toggle_fold();
|
||||||
|
}
|
||||||
|
this.$element.data('widget', this);
|
||||||
|
this.$records.data('widget', this);
|
||||||
|
return def;
|
||||||
|
},
|
||||||
|
stop: function() {
|
||||||
|
this._super();
|
||||||
|
if (this.$records) {
|
||||||
|
this.$records.remove();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
remove_record: function(id, remove_from_dataset) {
|
||||||
|
for (var i = 0, ii = this.records.length; i < ii; i++) {
|
||||||
|
if (this.records[i]['id'] === id) {
|
||||||
|
this.records.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
do_toggle_fold: function(compute_width) {
|
||||||
|
this.$element.toggleClass('oe_kanban_group_folded');
|
||||||
|
this.$records.find('.oe_kanban_record').toggle();
|
||||||
|
this.state.folded = this.$element.is('.oe_kanban_group_folded');
|
||||||
|
},
|
||||||
|
do_save_sequences: function() {
|
||||||
|
var self = this;
|
||||||
|
if (_.indexOf(this.view.fields_keys, 'sequence') > -1) {
|
||||||
|
_.each(this.records, function(record, index) {
|
||||||
|
self.view.dataset.write(record.id, { sequence : index });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
openerp.web_kanban.KanbanRecord = openerp.web.Widget.extend({
|
||||||
|
template: 'KanbanView.record',
|
||||||
|
init: function (parent, record) {
|
||||||
|
this._super(parent);
|
||||||
|
this.group = parent;
|
||||||
|
this.view = parent.view;
|
||||||
|
this.id = null;
|
||||||
|
this.set_record(record);
|
||||||
|
if (!this.view.state.records[this.id]) {
|
||||||
|
this.view.state.records[this.id] = {
|
||||||
|
folded: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
this.state = this.view.state.records[this.id];
|
||||||
|
},
|
||||||
|
set_record: function(record) {
|
||||||
|
this.id = record.id;
|
||||||
|
this.record = this.transform_record(record);
|
||||||
|
},
|
||||||
|
start: function() {
|
||||||
|
this._super();
|
||||||
|
this.$element.data('widget', this);
|
||||||
|
this.bind_events();
|
||||||
|
},
|
||||||
|
transform_record: function(record) {
|
||||||
|
var self = this,
|
||||||
|
new_record = {};
|
||||||
|
_.each(record, function(value, name) {
|
||||||
|
var r = _.clone(self.view.fields_view.fields[name]);
|
||||||
|
r.raw_value = value;
|
||||||
|
r.value = openerp.web.format_value(value, r);
|
||||||
|
new_record[name] = r;
|
||||||
|
});
|
||||||
|
return new_record;
|
||||||
|
},
|
||||||
|
render: function() {
|
||||||
|
var ctx = {
|
||||||
|
record: this.record,
|
||||||
|
widget: this
|
||||||
|
}
|
||||||
|
for (var p in this) {
|
||||||
|
if (_.startsWith(p, 'kanban_')) {
|
||||||
|
ctx[p] = _.bind(this[p], this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this._super({
|
||||||
|
'content': this.view.qweb.render('kanban-box', ctx)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
bind_events: function() {
|
||||||
|
var self = this,
|
||||||
|
$show_on_click = self.$element.find('.oe_kanban_box_show_onclick');
|
||||||
|
$show_on_click.toggle(this.state.folded);
|
||||||
|
this.$element.find('.oe_kanban_box_show_onclick_trigger').click(function() {
|
||||||
|
$show_on_click.toggle();
|
||||||
|
self.state.folded = !self.state.folded;
|
||||||
|
});
|
||||||
|
this.$element.find('.oe_kanban_action').click(function() {
|
||||||
|
var $action = $(this),
|
||||||
|
type = $action.data('type') || 'button',
|
||||||
|
method = 'do_action_' + type;
|
||||||
|
if (typeof self[method] === 'function') {
|
||||||
|
self[method]($action);
|
||||||
|
} else {
|
||||||
|
self.do_warn("Kanban: no action for type : " + type);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
do_action_delete: function($action) {
|
||||||
|
var self = this;
|
||||||
|
if (confirm(_t("Are you sure you want to delete this record ?"))) {
|
||||||
|
return $.when(this.view.dataset.unlink([this.id])).then(function() {
|
||||||
|
self.group.remove_record(self.id)
|
||||||
|
self.stop();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
do_action_edit: function($action) {
|
||||||
|
var self = this;
|
||||||
|
if ($action.attr('target') === 'dialog') {
|
||||||
|
this.view.form_dialog.select_id(this.id).then(function() {
|
||||||
|
self.view.form_dialog.open();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (self.view.dataset.select_id(this.id)) {
|
||||||
|
this.view.do_switch_view('form');
|
||||||
|
} else {
|
||||||
|
this.do_warn("Kanban: could not find id#" + id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
do_action_color: function($action) {
|
||||||
|
var self = this,
|
||||||
|
colors = '#FFFFFF,#CCCCCC,#FFC7C7,#FFF1C7,#E3FFC7,#C7FFD5,#C7FFFF,#C7D5FF,#E3C7FF,#FFC7F1'.split(','),
|
||||||
|
$cpicker = $(QWeb.render('KanbanColorPicker', { colors : colors, columns: 2 }));
|
||||||
|
$action.after($cpicker);
|
||||||
|
$cpicker.mouseenter(function() {
|
||||||
|
clearTimeout($cpicker.data('timeoutId'));
|
||||||
|
}).mouseleave(function(evt) {
|
||||||
|
var timeoutId = setTimeout(function() { $cpicker.remove() }, 500);
|
||||||
|
$cpicker.data('timeoutId', timeoutId);
|
||||||
|
});
|
||||||
|
$cpicker.find('a').click(function() {
|
||||||
|
var data = {};
|
||||||
|
data[$action.data('name')] = $(this).data('color');
|
||||||
|
self.view.dataset.write(self.id, data, {}, function() {
|
||||||
|
self.record[$action.data('name')] = $(this).data('color');
|
||||||
|
self.do_reload();
|
||||||
|
});
|
||||||
|
$cpicker.remove();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
do_action_object: function ($action) {
|
||||||
|
var button_attrs = $action.data();
|
||||||
|
this.view.do_execute_action(button_attrs, this.view.dataset, this.id, this.do_reload);
|
||||||
|
},
|
||||||
|
do_reload: function() {
|
||||||
|
var self = this;
|
||||||
|
this.view.dataset.read_ids([this.id], this.view.fields_keys, function(records) {
|
||||||
|
if (records.length) {
|
||||||
|
self.set_record(records[0]);
|
||||||
|
self.do_render();
|
||||||
|
} else {
|
||||||
|
self.stop();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
do_render: function() {
|
||||||
|
this.$element.html(this.render());
|
||||||
|
this.bind_events();
|
||||||
|
},
|
||||||
|
kanban_color: function(variable) {
|
||||||
|
var number_of_color_schemes = 10,
|
||||||
|
index = 0;
|
||||||
|
switch (typeof(variable)) {
|
||||||
|
case 'string':
|
||||||
|
for (var i=0, ii=variable.length; i<ii; i++) {
|
||||||
|
index += variable.charCodeAt(i);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'number':
|
||||||
|
index = Math.round(variable);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
var color = (index % number_of_color_schemes);
|
||||||
|
return 'oe_kanban_color_' + color;
|
||||||
|
},
|
||||||
|
kanban_gravatar: function(email, size) {
|
||||||
|
size = size || 22;
|
||||||
|
var email_md5 = $.md5(email);
|
||||||
|
return 'http://www.gravatar.com/avatar/' + email_md5 + '.png?s=' + size;
|
||||||
|
},
|
||||||
|
kanban_image: function(model, field, id) {
|
||||||
|
id = id || '';
|
||||||
|
return '/web/binary/image?session_id=' + this.session.session_id + '&model=' + model + '&field=' + field + '&id=' + id;
|
||||||
|
},
|
||||||
|
kanban_text_ellipsis: function(s, size) {
|
||||||
|
size = size || 160;
|
||||||
|
if (!s) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return s.substr(0, size) + '...';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,40 +1,50 @@
|
||||||
<template>
|
<template>
|
||||||
<t t-name="KanbanView">
|
<t t-name="KanbanView">
|
||||||
<table style="width:100%;" class="oe_kanban_view">
|
<div class="oe_kanban_header">
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<div class="oe_form_header">
|
|
||||||
<button type="button" class="oe_kanban_button_new">New</button>
|
<button type="button" class="oe_kanban_button_new">New</button>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
<div class="oe_kanban_view">
|
||||||
|
<table style="width:100%;" class="oe_kanban_groups">
|
||||||
|
<tr class="oe_kanban_groups_headers">
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr class="oe_kanban_groups_records">
|
||||||
<td t-foreach="data" t-as="columns" class="oe_table_column" t-att-id="'column_' + columns.value">
|
|
||||||
<img t-att-id="columns.value" class="fold-columns-icon" src="/web_kanban/static/src/img/minus-icon.png"/>
|
|
||||||
<div class="oe_fold_column" t-att-id="'column_' + columns.value">
|
|
||||||
<div class="oe_column_heading" t-if="columns.value and columns.header">
|
|
||||||
<t t-esc="columns.header"/>
|
|
||||||
</div>
|
|
||||||
<div t-foreach="columns.aggregates or {}" t-as="aggregate">
|
|
||||||
<i><u><t t-esc="aggregate"/>:</u> <t t-esc="aggregate_value"/></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td t-foreach="data" t-as="columns" class="oe_column oe_table_column" t-att-id="'column_' + columns.value" t-attf-style="width: #{Math.round(99 / data.length)}%">
|
|
||||||
<p t-if="columns.header" class="oe_vertical_text" t-att-id="'column_' + columns.value"><t t-esc="columns.header"/></p>
|
|
||||||
<div t-foreach="columns.records" t-as="record" class="oe_fold_column oe_kanban_record" t-att-id="'main_' + record.id"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
<t t-name="KanbanView.group_header">
|
||||||
|
<td class="oe_kanban_group_header">
|
||||||
|
<t t-if="widget.view.group_by">
|
||||||
|
<div class="oe_kanban_fold_icon"></div>
|
||||||
|
<div class="oe_fold_column">
|
||||||
|
<div t-attf-class="oe_kanban_group_title #{widget.undefined_title ? 'oe_kanban_group_title_undefined' : ''}">
|
||||||
|
<t t-esc="widget.title"/>
|
||||||
|
</div>
|
||||||
|
<ul class="oe_kanban_aggregates">
|
||||||
|
<li t-foreach="widget.aggregates" t-as="aggregate">
|
||||||
|
<span><t t-esc="aggregate"/>:</span> <t t-esc="aggregate_value"/>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<p t-if="widget.title" class="oe_kanban_group_title_vertical"><t t-esc="widget.title"/></p>
|
||||||
|
</t>
|
||||||
|
</td>
|
||||||
|
</t>
|
||||||
|
<t t-name="KanbanView.group_records_container">
|
||||||
|
<td class="oe_kanban_column">
|
||||||
|
</td>
|
||||||
|
</t>
|
||||||
|
<t t-name="KanbanView.record">
|
||||||
|
<div class="oe_fold_column oe_kanban_record">
|
||||||
|
<t t-raw="content"/>
|
||||||
|
</div>
|
||||||
</t>
|
</t>
|
||||||
<t t-name="KanbanColorPicker">
|
<t t-name="KanbanColorPicker">
|
||||||
<table cellspacing="0" cellpadding="0" border="0" class="oe_kanban_color_picker">
|
<table cellspacing="0" cellpadding="0" border="0" class="oe_kanban_color_picker">
|
||||||
<tr>
|
<tr>
|
||||||
<t t-foreach="colors" t-as="color">
|
<t t-foreach="colors" t-as="color">
|
||||||
<td t-att-bgcolor="color">
|
<td t-att-bgcolor="color">
|
||||||
<a href="#" t-att-data-color="color_index + 1"/>
|
<a href="#" t-att-data-color="color_index"/>
|
||||||
</td>
|
</td>
|
||||||
<t t-if="((color_index + 1) % Math.round(colors.length / columns)) == 0"></tr><tr></t>
|
<t t-if="((color_index + 1) % Math.round(colors.length / columns)) == 0"></tr><tr></t>
|
||||||
</t>
|
</t>
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Arabic translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-03 15:13+0000\n"
|
||||||
|
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\n"
|
||||||
|
"Language-Team: Arabic <ar@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: 2011-11-04 05:32+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "OpenERP"
|
||||||
|
msgstr "OpenERP"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Database:"
|
||||||
|
msgstr "قاعدة البيانات:"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Login:"
|
||||||
|
msgstr "الدخول:"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "كلمة المرور:"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Login"
|
||||||
|
msgstr "تسجيل الدخول"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Bad username or password"
|
||||||
|
msgstr "اسم مستخدم او كلمة مرور خاطئة"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Favourite"
|
||||||
|
msgstr "مفضّلة"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Preference"
|
||||||
|
msgstr "التفضيلات"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Applications"
|
||||||
|
msgstr "تطبيقات"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Options"
|
||||||
|
msgstr "خيارات"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Logout"
|
||||||
|
msgstr "تسجيل الخروج"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid ":"
|
||||||
|
msgstr ":"
|
|
@ -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: 2011-10-12 04:44+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14124)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-19 06:05+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14157)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-11 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14123)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-24 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14185)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-09 05:22+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-08 05:30+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14110)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Polish translation for openerp-web
|
||||||
|
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||||
|
# This file is distributed under the same license as the openerp-web package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openerp-web\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-10-07 10:39+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-11-04 16:26+0000\n"
|
||||||
|
"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) <grzegorz@openglobe.pl>\n"
|
||||||
|
"Language-Team: Polish <pl@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: 2011-11-05 06:04+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 14231)\n"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "OpenERP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Database:"
|
||||||
|
msgstr "Baza danych:"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Login:"
|
||||||
|
msgstr "Login:"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Hasło:"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Login"
|
||||||
|
msgstr "Login"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Bad username or password"
|
||||||
|
msgstr "Niepoprawna nazwa użytkownika lub hasło"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Favourite"
|
||||||
|
msgstr "Ulubione"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Preference"
|
||||||
|
msgstr "Preferencje"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Applications"
|
||||||
|
msgstr "Aplikacje"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Options"
|
||||||
|
msgstr "Opcje"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid "Logout"
|
||||||
|
msgstr "Wyloguj"
|
||||||
|
|
||||||
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
|
msgid ":"
|
||||||
|
msgstr ""
|
|
@ -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: 2011-10-24 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14185)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
|
@ -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: 2011-10-20 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
|
||||||
"X-Generator: Launchpad (build 14165)\n"
|
"X-Generator: Launchpad (build 14197)\n"
|
||||||
|
|
||||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
|
||||||
msgid "OpenERP"
|
msgid "OpenERP"
|
||||||
|
|
Loading…
Reference in New Issue