From 4571448bd0d0f9237151cfe92106a52363da6a66 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Thu, 19 Jul 2012 15:52:04 +0530 Subject: [PATCH 001/119] [IMP] Start to improve DB management looks same as other views of apps. bzr revid: jra@tinyerp.com-20120719102204-3eg2fmjdweouyjxl --- addons/web/static/src/xml/base.xml | 363 +++++++++++++++++------------ 1 file changed, 216 insertions(+), 147 deletions(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 70b0cd85cc5..50cec55014f 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -115,153 +115,222 @@ -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CREATE DATABASE
- -
-
-
- - - - - - - - - - - - - - - -
DROP DATABASE
- - -
-
-
- - - - - - - - - - - - - - - - -
BACKUP DATABASE
- - -
-
-
- - - - - - - - - - - - - - - - - - - -
RESTORE DATABASE
-
-
- - - - - - - - - - - - - - - - - - - -
CHANGE MASTER PASSWORD
-
-
-
+ + + + + + + + + +
+ + Back to Login + +
+ + d.url = '/' + (window.location.search || ''); + + +
+
+
Database Management
+ +
+
+ +
+
+ + + + + + + + + + + +
+

+ + Database Management + +

+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE DATABASE
+ +
+
+
+ + + + + + + + + + + + + + + +
DROP DATABASE
+ + +
+
+
+ + + + + + + + + + + + + + + + +
BACKUP DATABASE
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + +
RESTORE DATABASE
+
+
+ + + + + + + + + + + + + + + + + + + +
CHANGE MASTER PASSWORD
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
From fc36345ca0730cf8cbd197d9177bc884764188f2 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Jul 2012 17:03:06 +0200 Subject: [PATCH 002/119] [ADD] test cases for export of simple fields bzr revid: xmo@openerp.com-20120723150306-6zgtr9ho0d3ud78u --- openerp/modules/__init__.py | 6 +- openerp/osv/orm.py | 6 +- openerp/tests/__init__.py | 11 +- openerp/tests/common.py | 5 +- openerp/tests/test_export.py | 265 +++++++++++++++++++++++++++++++++++ 5 files changed, 276 insertions(+), 17 deletions(-) create mode 100644 openerp/tests/test_export.py diff --git a/openerp/modules/__init__.py b/openerp/modules/__init__.py index f28c397bb23..56265e353a2 100644 --- a/openerp/modules/__init__.py +++ b/openerp/modules/__init__.py @@ -24,11 +24,7 @@ """ -import openerp.modules.db -import openerp.modules.graph -import openerp.modules.loading -import openerp.modules.migration -import openerp.modules.module +from . import db, graph, loading, migration, module, registry # TODO temporarily expose those things from openerp.modules.module import \ diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 78487e7641c..02a13a41dcb 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -4179,11 +4179,7 @@ class BaseModel(object): # Try-except added to filter the creation of those records whose filds are readonly. # Example : any dashboard which has all the fields readonly.(due to Views(database views)) - try: - cr.execute("SELECT nextval('"+self._sequence+"')") - except: - raise except_orm(_('UserError'), - _('You cannot perform this operation. New Record Creation is not allowed for this object as this object is for reporting purpose.')) + cr.execute("SELECT nextval('"+self._sequence+"')") id_new = cr.fetchone()[0] for table in tocreate: diff --git a/openerp/tests/__init__.py b/openerp/tests/__init__.py index 913c5c759c9..7b30adece79 100644 --- a/openerp/tests/__init__.py +++ b/openerp/tests/__init__.py @@ -8,18 +8,17 @@ Tests can be explicitely added to the `fast_suite` or `checks` lists or not. See the :ref:`test-framework` section in the :ref:`features` list. """ -import test_expression -import test_ir_sequence -import test_orm -import test_uninstall +from . import test_expression, test_ir_sequence, test_orm,\ + test_uninstall, test_export fast_suite = [ test_ir_sequence, - ] +] checks = [ test_expression, test_orm, - ] + test_export, +] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/tests/common.py b/openerp/tests/common.py index ef5b0586136..b1af4338312 100644 --- a/openerp/tests/common.py +++ b/openerp/tests/common.py @@ -39,13 +39,16 @@ class TransactionCase(unittest2.TestCase): """ def setUp(self): - self.cr = openerp.modules.registry.RegistryManager.get(DB).db.cursor() + self.cr = self.cursor() self.uid = openerp.SUPERUSER_ID def tearDown(self): self.cr.rollback() self.cr.close() + def cursor(self): + return openerp.modules.registry.RegistryManager.get(DB).db.cursor() + def registry(self, model): return openerp.modules.registry.RegistryManager.get(DB)[model] diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py new file mode 100644 index 00000000000..b1b51a608dc --- /dev/null +++ b/openerp/tests/test_export.py @@ -0,0 +1,265 @@ +# -*- coding: utf-8 -*- +import psycopg2 + +import openerp.modules.registry +import openerp +from openerp.osv import orm, fields + +from . import common + +models = [ + ('boolean', fields.boolean()), + ('integer', fields.integer()), + ('float', fields.float()), + ('decimal', fields.float(digits=(16, 3))), + ('string.bounded', fields.char('unknown', size=16)), + ('string', fields.char('unknown', size=None)), + ('date', fields.date()), + ('datetime', fields.datetime()), + ('text', fields.text()), + ('selection', fields.selection([(1, "Foo"), (2, "Bar"), (3, "Qux")])), + # TODO: m2o, o2m, m2m + # TODO: function? + # TODO: related? + # TODO: reference? +] +for name, field in models: + attrs = { + '_name': 'export.%s' % name, + '_module': 'base', + '_columns': { + 'value': field + } + } + NewModel = type( + 'Export%s' % ''.join(section.capitalize() for section in name.split('.')), + (orm.Model,), + attrs) + +def setUpModule(): + openerp.tools.config['update'] = dict(base=1) + openerp.modules.registry.RegistryManager.new( + common.DB, update_module=True) + +class CreatorCase(common.TransactionCase): + model_name = False + + def __init__(self, *args, **kwargs): + super(CreatorCase, self).__init__(*args, **kwargs) + self.model = None + + def setUp(self): + super(CreatorCase, self).setUp() + self.model = self.registry(self.model_name) + def make(self, value): + id = self.model.create(self.cr, openerp.SUPERUSER_ID, {'value': value}) + return self.model.browse(self.cr, openerp.SUPERUSER_ID, [id])[0] + def export(self, value, context=None): + record = self.make(value) + return self.model._BaseModel__export_row( + self.cr, openerp.SUPERUSER_ID, record, [["value"]], context=context) + +class test_boolean_field(CreatorCase): + model_name = 'export.boolean' + + def test_true(self): + self.assertEqual( + self.export(True), + [[u'True']]) + def test_false(self): + """ ``False`` value to boolean fields is unique in being exported as a + (unicode) string, not a boolean + """ + self.assertEqual( + self.export(False), + [[u'False']]) + +class test_integer_field(CreatorCase): + model_name = 'export.integer' + + def test_empty(self): + self.assertEqual(self.model.search(self.cr, openerp.SUPERUSER_ID, []), [], + "Test model should have no records") + def test_0(self): + self.assertEqual( + self.export(0), + [[False]]) + + def test_basic_value(self): + self.assertEqual( + self.export(42), + [[u'42']]) + + def test_negative(self): + self.assertEqual( + self.export(-32), + [[u'-32']]) + + def test_huge(self): + self.assertEqual( + self.export(2**31-1), + [[unicode(2**31-1)]]) + +class test_float_field(CreatorCase): + model_name = 'export.float' + + def test_0(self): + self.assertEqual( + self.export(0.0), + [[False]]) + + def test_epsilon(self): + self.assertEqual( + self.export(0.000000000027), + [[u'2.7e-11']]) + + def test_negative(self): + self.assertEqual( + self.export(-2.42), + [[u'-2.42']]) + + def test_positive(self): + self.assertEqual( + self.export(47.36), + [[u'47.36']]) + + def test_big(self): + self.assertEqual( + self.export(87654321.4678), + [[u'87654321.4678']]) + +class test_decimal_field(CreatorCase): + model_name = 'export.decimal' + + def test_0(self): + self.assertEqual( + self.export(0.0), + [[False]]) + + def test_epsilon(self): + """ epsilon gets sliced to 0 due to precision + """ + self.assertEqual( + self.export(0.000000000027), + [[False]]) + + def test_negative(self): + self.assertEqual( + self.export(-2.42), + [[u'-2.42']]) + + def test_positive(self): + self.assertEqual( + self.export(47.36), + [[u'47.36']]) + + def test_big(self): + self.assertEqual( + self.export(87654321.4678), [[u'87654321.468']]) + +class test_string_field(CreatorCase): + model_name = 'export.string.bounded' + + def test_empty(self): + self.assertEqual( + self.export(""), + [[False]]) + def test_within_bounds(self): + self.assertEqual( + self.export("foobar"), + [[u"foobar"]]) + def test_out_of_bounds(self): + self.assertEqual( + self.export("C for Sinking, " + "Java for Drinking, " + "Smalltalk for Thinking. " + "...and Power to the Penguin!"), + [[u"C for Sinking, J"]]) + +class test_unbound_string_field(CreatorCase): + model_name = 'export.string' + + def test_empty(self): + self.assertEqual( + self.export(""), + [[False]]) + def test_small(self): + self.assertEqual( + self.export("foobar"), + [[u"foobar"]]) + def test_big(self): + self.assertEqual( + self.export("We flew down weekly to meet with IBM, but they " + "thought the way to measure software was the amount " + "of code we wrote, when really the better the " + "software, the fewer lines of code."), + [[u"We flew down weekly to meet with IBM, but they thought the " + u"way to measure software was the amount of code we wrote, " + u"when really the better the software, the fewer lines of " + u"code."]]) + +class test_text(CreatorCase): + model_name = 'export.text' + + def test_empty(self): + self.assertEqual( + self.export(""), + [[False]]) + def test_small(self): + self.assertEqual( + self.export("foobar"), + [[u"foobar"]]) + def test_big(self): + self.assertEqual( + self.export("So, `bind' is `let' and monadic programming is" + " equivalent to programming in the A-normal form. That" + " is indeed all there is to monads"), + [[u"So, `bind' is `let' and monadic programming is equivalent to" + u" programming in the A-normal form. That is indeed all there" + u" is to monads"]]) + +class test_date(CreatorCase): + model_name = 'export.date' + + def test_empty(self): + self.assertEqual( + self.export(False), + [[False]]) + def test_basic(self): + self.assertEqual( + self.export('2011-11-07'), + [[u'2011-11-07']]) + +class test_datetime(CreatorCase): + model_name = 'export.datetime' + + def test_empty(self): + self.assertEqual( + self.export(False), + [[False]]) + def test_basic(self): + self.assertEqual( + self.export('2011-11-07 21:05:48'), + [[u'2011-11-07 21:05:48']]) + def test_tz(self): + """ Export ignores the timezone and always exports to UTC + """ + self.assertEqual( + self.export('2011-11-07 21:05:48', {'tz': 'Pacific/Norfolk'}), + [[u'2011-11-07 21:05:48']]) + +class test_selection(CreatorCase): + model_name = 'export.selection' + + def test_empty(self): + self.assertEqual( + self.export(False), + [[False]]) + + def test_value(self): + """ selections export the *label* for their value + """ + self.assertEqual( + self.export(2), + [[u"Bar"]]) + From feb9efed4dd58dc3bbb20b58ee49b269d726f4e3 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Jul 2012 17:38:26 +0200 Subject: [PATCH 003/119] [IMP] prepare export test cases for relational fields bzr revid: xmo@openerp.com-20120723153826-hu7cwhj8uv6w0xu7 --- openerp/tests/test_export.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index b1b51a608dc..401a90fd635 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -54,10 +54,12 @@ class CreatorCase(common.TransactionCase): def make(self, value): id = self.model.create(self.cr, openerp.SUPERUSER_ID, {'value': value}) return self.model.browse(self.cr, openerp.SUPERUSER_ID, [id])[0] - def export(self, value, context=None): + def export(self, value, fields=('value',), context=None): record = self.make(value) return self.model._BaseModel__export_row( - self.cr, openerp.SUPERUSER_ID, record, [["value"]], context=context) + self.cr, openerp.SUPERUSER_ID, record, + [f.split('/') for f in fields], + context=context) class test_boolean_field(CreatorCase): model_name = 'export.boolean' @@ -245,7 +247,7 @@ class test_datetime(CreatorCase): """ Export ignores the timezone and always exports to UTC """ self.assertEqual( - self.export('2011-11-07 21:05:48', {'tz': 'Pacific/Norfolk'}), + self.export('2011-11-07 21:05:48', context={'tz': 'Pacific/Norfolk'}), [[u'2011-11-07 21:05:48']]) class test_selection(CreatorCase): From 5850df630c87ab2474fec8827af64c99d184e122 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Jul 2012 18:00:41 +0200 Subject: [PATCH 004/119] [ADD] m2o field export tests bzr revid: xmo@openerp.com-20120723160041-o6w24ia2kwnqu19z --- openerp/tests/test_export.py | 41 +++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index 401a90fd635..61c71510f42 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -18,6 +18,8 @@ models = [ ('datetime', fields.datetime()), ('text', fields.text()), ('selection', fields.selection([(1, "Foo"), (2, "Bar"), (3, "Qux")])), + # just relate to an integer + ('many2one', fields.many2one('export.integer')), # TODO: m2o, o2m, m2m # TODO: function? # TODO: related? @@ -29,7 +31,11 @@ for name, field in models: '_module': 'base', '_columns': { 'value': field - } + }, + 'name_get': (lambda self, cr, uid, ids, context=None: + [(record.id, "%s:%s" % (self._name, record.value)) + for record in self.browse(cr, uid, ids, context=context)]) + } NewModel = type( 'Export%s' % ''.join(section.capitalize() for section in name.split('.')), @@ -265,3 +271,36 @@ class test_selection(CreatorCase): self.export(2), [[u"Bar"]]) +class test_m2o(CreatorCase): + model_name = 'export.many2one' + + def test_empty(self): + self.assertEqual( + self.export(False), + [[False]]) + def test_basic(self): + """ Exported value is the name_get of the related object + """ + integer_id = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + name = dict(self.registry('export.integer').name_get( + self.cr, openerp.SUPERUSER_ID,[integer_id]))[integer_id] + self.assertEqual( + self.export(integer_id), + [[name]]) + def test_path(self): + """ Can recursively export fields of m2o via path + """ + integer_id = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + self.assertEqual( + self.export(integer_id, fields=['value/.id', 'value/value']), + [[unicode(integer_id), u'42']]) + def test_external_id(self): + integer_id = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + # __export__.$class.$id + external_id = u'__export__.export_many2one_%d' % integer_id + self.assertEqual( + self.export(integer_id, fields=['value/id']), + [[external_id]]) From b09784c5ff721a61cf22b2a1b9e4a24f68c39496 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Mon, 23 Jul 2012 18:05:54 +0200 Subject: [PATCH 005/119] [REF] base, res.partner.bank: removed footer boolean which was unused and deprecated: the rml_footer2 is now fully editable since revision 4198 (12th of June 2012) bzr revid: qdp-launchpad@openerp.com-20120723160554-3v4j4mvh2kbu1g4k --- openerp/addons/base/res/res_bank.py | 2 -- openerp/addons/base/res/res_bank_view.xml | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index c5c05c1807c..07719962866 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -139,7 +139,6 @@ class res_partner_bank(osv.osv): 'state': fields.selection(_bank_type_get, 'Bank Account Type', required=True, change_default=True), 'sequence': fields.integer('Sequence'), - 'footer': fields.boolean("Display on Reports", help="Display this bank account on the footer of printed documents like invoices and sales orders.") } _defaults = { @@ -212,7 +211,6 @@ class res_partner_bank(osv.osv): if c.partner_id: r = self.onchange_partner_id(cr, uid, ids, c.partner_id.id, context=context) r['value']['partner_id'] = c.partner_id.id - r['value']['footer'] = 1 result = r return result diff --git a/openerp/addons/base/res/res_bank_view.xml b/openerp/addons/base/res/res_bank_view.xml index 13419f7a881..c50fcd44e7c 100644 --- a/openerp/addons/base/res/res_bank_view.xml +++ b/openerp/addons/base/res/res_bank_view.xml @@ -97,7 +97,6 @@ - @@ -134,7 +133,6 @@ - @@ -159,7 +157,7 @@ res.partner.bank form tree,form - Configure your company's bank accounts and select those that must appear on the report footer. You can reorder bank accounts from the list view. If you use the accounting application of OpenERP, journals and accounts will be created automatically based on these data. + Configure your company's bank accounts. You can reorder bank accounts from the list view. If you use the accounting application of OpenERP, journals and accounts will be created automatically based on these data. Date: Tue, 24 Jul 2012 11:48:14 +0530 Subject: [PATCH 006/119] [IMP] Remove form sheet width and background. bzr revid: jra@tinyerp.com-20120724061814-d0y5ujh3q13e5faj --- addons/web/static/src/xml/base.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 07e92ffa915..b8ca09b1186 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -174,8 +174,6 @@
-
-
@@ -315,8 +313,6 @@ -
-
From 02109d24e244037483d86f33e0532a0b455deca6 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 24 Jul 2012 12:27:28 +0200 Subject: [PATCH 007/119] [ADD] tests for o2m field export bzr revid: xmo@openerp.com-20120724102728-g7noucvda19k7k5q --- openerp/tests/test_export.py | 119 ++++++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index 61c71510f42..c46ef53837e 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -20,7 +20,8 @@ models = [ ('selection', fields.selection([(1, "Foo"), (2, "Bar"), (3, "Qux")])), # just relate to an integer ('many2one', fields.many2one('export.integer')), - # TODO: m2o, o2m, m2m + ('one2many', fields.one2many('export.one2many.child', 'parent_id')), + # TODO: m2m # TODO: function? # TODO: related? # TODO: reference? @@ -30,18 +31,35 @@ for name, field in models: '_name': 'export.%s' % name, '_module': 'base', '_columns': { + 'const': fields.integer(), 'value': field }, + '_defaults': {'const': 4}, 'name_get': (lambda self, cr, uid, ids, context=None: [(record.id, "%s:%s" % (self._name, record.value)) for record in self.browse(cr, uid, ids, context=context)]) - } NewModel = type( 'Export%s' % ''.join(section.capitalize() for section in name.split('.')), (orm.Model,), attrs) +class One2ManyChild(orm.Model): + _name = 'export.one2many.child' + _module = 'base' + # FIXME: orm.py:1161, fix to name_get on m2o field + _rec_name = 'value' + + _columns = { + 'parent_id': fields.many2one('export.one2many'), + 'str': fields.char('unknown', size=None), + 'value': fields.integer() + } + def name_get(self, cr, uid, ids, context=None): + return [(record.id, "%s:%s" % (self._name, record.value)) + for record in self.browse(cr, uid, ids, context=context)] + + def setUpModule(): openerp.tools.config['update'] = dict(base=1) openerp.modules.registry.RegistryManager.new( @@ -251,6 +269,8 @@ class test_datetime(CreatorCase): [[u'2011-11-07 21:05:48']]) def test_tz(self): """ Export ignores the timezone and always exports to UTC + + .. note:: on the other hand, export uses user lang for name_get """ self.assertEqual( self.export('2011-11-07 21:05:48', context={'tz': 'Pacific/Norfolk'}), @@ -304,3 +324,98 @@ class test_m2o(CreatorCase): self.assertEqual( self.export(integer_id, fields=['value/id']), [[external_id]]) + +class test_o2m(CreatorCase): + model_name = 'export.one2many' + commands = [ + (0, False, {'value': 4, 'str': 'record1'}), + (0, False, {'value': 42, 'str': 'record2'}), + (0, False, {'value': 36, 'str': 'record3'}), + (0, False, {'value': 4, 'str': 'record4'}), + (0, False, {'value': 13, 'str': 'record5'}), + ] + names = [ + u'export.one2many.child:%d' % d['value'] + for c, _, d in commands + ] + + def test_empty(self): + self.assertEqual( + self.export(False), + [[False]]) + + def test_single(self): + self.assertEqual( + self.export([(0, False, {'value': 42})]), + # name_get result + [[u'export.one2many.child:42']]) + + def test_single_subfield(self): + self.assertEqual( + self.export([(0, False, {'value': 42})], + fields=['value', 'value/value']), + [[u'export.one2many.child:42', u'42']]) + + def test_integrate_one_in_parent(self): + self.assertEqual( + self.export([(0, False, {'value': 42})], + fields=['const', 'value/value']), + [[u'4', u'42']]) + + def test_multiple_records(self): + self.assertEqual( + self.export(self.commands, fields=['const', 'value/value']), + [ + [u'4', u'4'], + [u'', u'42'], + [u'', u'36'], + [u'', u'4'], + [u'', u'13'], + ]) + + def test_multiple_records_name(self): + self.assertEqual( + self.export(self.commands, fields=['const', 'value']), + [[ + u'4', u','.join(self.names) + ]]) + + def test_multiple_records_with_name_before(self): + self.assertEqual( + self.export(self.commands, fields=['const', 'value', 'value/value']), + [[ # exports sub-fields of very first o2m + u'4', u','.join(self.names), u'4' + ]]) + + def test_multiple_records_with_name_before(self): + self.assertEqual( + self.export(self.commands, fields=['const', 'value/value', 'value']), + [ # completely ignores name_get request + [u'4', u'4', ''], + [u'', u'42', ''], + [u'', u'36', ''], + [u'', u'4', ''], + [u'', u'13', ''], + ]) + + def test_multiple_subfields_neighbour(self): + self.assertEqual( + self.export(self.commands, fields=['const', 'value/str','value/value']), + [ + [u'4', u'record1', u'4'], + ['', u'record2', u'42'], + ['', u'record3', u'36'], + ['', u'record4', u'4'], + ['', u'record5', u'13'], + ]) + + def test_multiple_subfields_separated(self): + self.assertEqual( + self.export(self.commands, fields=['value/str', 'const', 'value/value']), + [ + [u'record1', u'4', u'4'], + [u'record2', '', u'42'], + [u'record3', '', u'36'], + [u'record4', '', u'4'], + [u'record5', '', u'13'], + ]) From f3c315cf10e2fb766586e2c8c9e03e7b228c800b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 24 Jul 2012 12:57:56 +0200 Subject: [PATCH 008/119] [ADD] some m2m tests bzr revid: xmo@openerp.com-20120724105756-swxo1l4tahqjopzd --- openerp/tests/test_export.py | 80 +++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 5 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index c46ef53837e..030466dc674 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -21,7 +21,7 @@ models = [ # just relate to an integer ('many2one', fields.many2one('export.integer')), ('one2many', fields.one2many('export.one2many.child', 'parent_id')), - # TODO: m2m + ('many2many', fields.many2many('export.many2many.other')) # TODO: function? # TODO: related? # TODO: reference? @@ -59,6 +59,19 @@ class One2ManyChild(orm.Model): return [(record.id, "%s:%s" % (self._name, record.value)) for record in self.browse(cr, uid, ids, context=context)] +class Many2ManyChild(orm.Model): + _name = 'export.many2many.other' + _module = 'base' + # FIXME: orm.py:1161, fix to name_get on m2o field + _rec_name = 'value' + + _columns = { + 'str': fields.char('unknown', size=None), + 'value': fields.integer() + } + def name_get(self, cr, uid, ids, context=None): + return [(record.id, "%s:%s" % (self._name, record.value)) + for record in self.browse(cr, uid, ids, context=context)] def setUpModule(): openerp.tools.config['update'] = dict(base=1) @@ -392,10 +405,10 @@ class test_o2m(CreatorCase): self.export(self.commands, fields=['const', 'value/value', 'value']), [ # completely ignores name_get request [u'4', u'4', ''], - [u'', u'42', ''], - [u'', u'36', ''], - [u'', u'4', ''], - [u'', u'13', ''], + ['', u'42', ''], + ['', u'36', ''], + ['', u'4', ''], + ['', u'13', ''], ]) def test_multiple_subfields_neighbour(self): @@ -419,3 +432,60 @@ class test_o2m(CreatorCase): [u'record4', '', u'4'], [u'record5', '', u'13'], ]) + +class test_m2m(CreatorCase): + model_name = 'export.many2many' + commands = [ + (0, False, {'value': 4, 'str': 'record000'}), + (0, False, {'value': 42, 'str': 'record001'}), + (0, False, {'value': 36, 'str': 'record010'}), + (0, False, {'value': 4, 'str': 'record011'}), + (0, False, {'value': 13, 'str': 'record100'}), + ] + names = [ + u'export.many2many.other:%d' % d['value'] + for c, _, d in commands + ] + + def test_empty(self): + self.assertEqual( + self.export(False), + [[False]]) + + def test_single(self): + self.assertEqual( + self.export([(0, False, {'value': 42})]), + # name_get result + [[u'export.many2many.other:42']]) + + def test_single_subfield(self): + self.assertEqual( + self.export([(0, False, {'value': 42})], + fields=['value', 'value/value']), + [[u'export.many2many.other:42', u'42']]) + + def test_integrate_one_in_parent(self): + self.assertEqual( + self.export([(0, False, {'value': 42})], + fields=['const', 'value/value']), + [[u'4', u'42']]) + + def test_multiple_records(self): + self.assertEqual( + self.export(self.commands, fields=['const', 'value/value']), + [ + [u'4', u'4'], + [u'', u'42'], + [u'', u'36'], + [u'', u'4'], + [u'', u'13'], + ]) + + def test_multiple_records_name(self): + self.assertEqual( + self.export(self.commands, fields=['const', 'value']), + [[ + u'4', u','.join(self.names) + ]]) + + # essentially same as o2m, so boring From 53c82f4086e2fd2a029106fbbcc95beaad53c250 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 26 Jul 2012 12:08:04 +0200 Subject: [PATCH 009/119] [TEST] export of multiple o2m fields in the same object bzr revid: xmo@openerp.com-20120726100804-ggsjwco93k9d5bqw --- openerp/tests/export_models.py | 102 ++++++++++++++++++++ openerp/tests/test_export.py | 167 +++++++++++++++++++-------------- 2 files changed, 200 insertions(+), 69 deletions(-) create mode 100644 openerp/tests/export_models.py diff --git a/openerp/tests/export_models.py b/openerp/tests/export_models.py new file mode 100644 index 00000000000..d54c73ac4ad --- /dev/null +++ b/openerp/tests/export_models.py @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- +from openerp.osv import orm, fields + +models = [ + ('boolean', fields.boolean()), + ('integer', fields.integer()), + ('float', fields.float()), + ('decimal', fields.float(digits=(16, 3))), + ('string.bounded', fields.char('unknown', size=16)), + ('string', fields.char('unknown', size=None)), + ('date', fields.date()), + ('datetime', fields.datetime()), + ('text', fields.text()), + ('selection', fields.selection([(1, "Foo"), (2, "Bar"), (3, "Qux")])), + # just relate to an integer + ('many2one', fields.many2one('export.integer')), + ('one2many', fields.one2many('export.one2many.child', 'parent_id')), + ('many2many', fields.many2many('export.many2many.other')) + # TODO: function? + # TODO: related? + # TODO: reference? +] +for name, field in models: + attrs = { + '_name': 'export.%s' % name, + '_module': 'base', + '_columns': { + 'const': fields.integer(), + 'value': field + }, + '_defaults': {'const': 4}, + 'name_get': (lambda self, cr, uid, ids, context=None: + [(record.id, "%s:%s" % (self._name, record.value)) + for record in self.browse(cr, uid, ids, context=context)]) + } + NewModel = type( + 'Export%s' % ''.join(section.capitalize() for section in name.split('.')), + (orm.Model,), + attrs) + +class One2ManyChild(orm.Model): + _name = 'export.one2many.child' + _module = 'base' + # FIXME: orm.py:1161, fix to name_get on m2o field + _rec_name = 'value' + + _columns = { + 'parent_id': fields.many2one('export.one2many'), + 'str': fields.char('unknown', size=None), + 'value': fields.integer() + } + def name_get(self, cr, uid, ids, context=None): + return [(record.id, "%s:%s" % (self._name, record.value)) + for record in self.browse(cr, uid, ids, context=context)] + +class One2ManyMultiple(orm.Model): + _name = 'export.one2many.multiple' + _module = 'base' + + _columns = { + 'const': fields.integer(), + 'child1': fields.one2many('export.one2many.child.1', 'parent_id'), + 'child2': fields.one2many('export.one2many.child.2', 'parent_id'), + } + _defaults = { 'const': 36 } + +class One2ManyChildMultiple(orm.Model): + _name = 'export.one2many.multiple.child' + _module = 'base' + # FIXME: orm.py:1161, fix to name_get on m2o field + _rec_name = 'value' + + _columns = { + 'parent_id': fields.many2one('export.one2many.multiple'), + 'str': fields.char('unknown', size=None), + 'value': fields.integer() + } + def name_get(self, cr, uid, ids, context=None): + return [(record.id, "%s:%s" % (self._name, record.value)) + for record in self.browse(cr, uid, ids, context=context)] +class One2ManyChild1(orm.Model): + _name = 'export.one2many.child.1' + _module = 'base' + _inherit = 'export.one2many.multiple.child' +class One2ManyChild2(orm.Model): + _name = 'export.one2many.child.2' + _module = 'base' + _inherit = 'export.one2many.multiple.child' + +class Many2ManyChild(orm.Model): + _name = 'export.many2many.other' + _module = 'base' + # FIXME: orm.py:1161, fix to name_get on m2o field + _rec_name = 'value' + + _columns = { + 'str': fields.char('unknown', size=None), + 'value': fields.integer() + } + def name_get(self, cr, uid, ids, context=None): + return [(record.id, "%s:%s" % (self._name, record.value)) + for record in self.browse(cr, uid, ids, context=context)] diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index 030466dc674..ea21cd36a8a 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -1,77 +1,10 @@ # -*- coding: utf-8 -*- -import psycopg2 - +import itertools import openerp.modules.registry import openerp -from openerp.osv import orm, fields -from . import common +from . import common, export_models -models = [ - ('boolean', fields.boolean()), - ('integer', fields.integer()), - ('float', fields.float()), - ('decimal', fields.float(digits=(16, 3))), - ('string.bounded', fields.char('unknown', size=16)), - ('string', fields.char('unknown', size=None)), - ('date', fields.date()), - ('datetime', fields.datetime()), - ('text', fields.text()), - ('selection', fields.selection([(1, "Foo"), (2, "Bar"), (3, "Qux")])), - # just relate to an integer - ('many2one', fields.many2one('export.integer')), - ('one2many', fields.one2many('export.one2many.child', 'parent_id')), - ('many2many', fields.many2many('export.many2many.other')) - # TODO: function? - # TODO: related? - # TODO: reference? -] -for name, field in models: - attrs = { - '_name': 'export.%s' % name, - '_module': 'base', - '_columns': { - 'const': fields.integer(), - 'value': field - }, - '_defaults': {'const': 4}, - 'name_get': (lambda self, cr, uid, ids, context=None: - [(record.id, "%s:%s" % (self._name, record.value)) - for record in self.browse(cr, uid, ids, context=context)]) - } - NewModel = type( - 'Export%s' % ''.join(section.capitalize() for section in name.split('.')), - (orm.Model,), - attrs) - -class One2ManyChild(orm.Model): - _name = 'export.one2many.child' - _module = 'base' - # FIXME: orm.py:1161, fix to name_get on m2o field - _rec_name = 'value' - - _columns = { - 'parent_id': fields.many2one('export.one2many'), - 'str': fields.char('unknown', size=None), - 'value': fields.integer() - } - def name_get(self, cr, uid, ids, context=None): - return [(record.id, "%s:%s" % (self._name, record.value)) - for record in self.browse(cr, uid, ids, context=context)] - -class Many2ManyChild(orm.Model): - _name = 'export.many2many.other' - _module = 'base' - # FIXME: orm.py:1161, fix to name_get on m2o field - _rec_name = 'value' - - _columns = { - 'str': fields.char('unknown', size=None), - 'value': fields.integer() - } - def name_get(self, cr, uid, ids, context=None): - return [(record.id, "%s:%s" % (self._name, record.value)) - for record in self.browse(cr, uid, ids, context=context)] def setUpModule(): openerp.tools.config['update'] = dict(base=1) @@ -433,6 +366,102 @@ class test_o2m(CreatorCase): [u'record5', '', u'13'], ]) +# todo: test with multiple o2m fields and exporting all +class test_o2m_multiple(CreatorCase): + model_name = 'export.one2many.multiple' + + def make(self, value=None, **values): + if value is not None: values['value'] = value + id = self.model.create(self.cr, openerp.SUPERUSER_ID, values) + return self.model.browse(self.cr, openerp.SUPERUSER_ID, [id])[0] + def export(self, value=None, fields=('child1', 'child2',), context=None, **values): + record = self.make(value, **values) + return self.model._BaseModel__export_row( + self.cr, openerp.SUPERUSER_ID, record, + [f.split('/') for f in fields], + context=context) + + def test_empty(self): + self.assertEqual( + self.export(child1=False, child2=False), + [[False, False]]) + + def test_single_per_side(self): + self.assertEqual( + self.export(child1=False, child2=[(0, False, {'value': 42})]), + [[False, u'export.one2many.child.2:42']]) + + self.assertEqual( + self.export(child1=[(0, False, {'value': 43})], child2=False), + [[u'export.one2many.child.1:43', False]]) + + self.assertEqual( + self.export(child1=[(0, False, {'value': 43})], + child2=[(0, False, {'value': 42})]), + [[u'export.one2many.child.1:43', u'export.one2many.child.2:42']]) + + def test_single_integrate_subfield(self): + fields = ['const', 'child1/value', 'child2/value'] + self.assertEqual( + self.export(child1=False, child2=[(0, False, {'value': 42})], + fields=fields), + [[u'36', False, u'42']]) + + self.assertEqual( + self.export(child1=[(0, False, {'value': 43})], child2=False, + fields=fields), + [[u'36', u'43', False]]) + + self.assertEqual( + self.export(child1=[(0, False, {'value': 43})], + child2=[(0, False, {'value': 42})], + fields=fields), + [[u'36', u'43', u'42']]) + + def test_multiple(self): + """ With two "concurrent" o2ms, exports the first line combined, then + exports the rows for the first o2m, then the rows for the second o2m. + """ + fields = ['const', 'child1/value', 'child2/value'] + child1 = [(0, False, {'value': v, 'str': 'record%.02d' % index}) + for index, v in zip(itertools.count(), [4, 42, 36, 4, 13])] + child2 = [(0, False, {'value': v, 'str': 'record%.02d' % index}) + for index, v in zip(itertools.count(10), [8, 12, 8, 55, 33, 13])] + + self.assertEqual( + self.export(child1=child1, child2=False, fields=fields), + [ + [u'36', u'4', False], + ['', u'42', ''], + ['', u'36', ''], + ['', u'4', ''], + ['', u'13', ''], + ]) + self.assertEqual( + self.export(child1=False, child2=child2, fields=fields), + [ + [u'36', False, u'8'], + ['', '', u'12'], + ['', '', u'8'], + ['', '', u'55'], + ['', '', u'33'], + ['', '', u'13'], + ]) + self.assertEqual( + self.export(child1=child1, child2=child2, fields=fields), + [ + [u'36', u'4', u'8'], + ['', u'42', ''], + ['', u'36', ''], + ['', u'4', ''], + ['', u'13', ''], + ['', '', u'12'], + ['', '', u'8'], + ['', '', u'55'], + ['', '', u'33'], + ['', '', u'13'], + ]) + class test_m2m(CreatorCase): model_name = 'export.many2many' commands = [ From ad6742b6b873507b577231323392b70dea96512c Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 26 Jul 2012 13:55:50 +0200 Subject: [PATCH 010/119] [FIX] kanban group dropdown bzr revid: al@openerp.com-20120726115550-bu4jp1163bb4ov6n --- addons/web_kanban/static/src/css/kanban.css | 2 +- addons/web_kanban/static/src/css/kanban.sass | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index a6f2cc7441b..5830cb33e0f 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -50,7 +50,7 @@ .openerp .oe_kanban_view .oe_kanban_group_title { font-size: 16px; font-weight: bold; - min-height: 30px; + min-height: 32px; color: #333333; text-shadow: 0 1px 0 white; } diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index 7175b398cbe..44b3251c8fb 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -73,7 +73,7 @@ .oe_kanban_group_title font-size: 16px font-weight: bold - min-height: 30px + min-height: 32px color: #333333 text-shadow: 0 1px 0 white > span From 6e48ab42041c589c9c63cfa7ba289df80652c0f1 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Thu, 26 Jul 2012 14:20:06 +0200 Subject: [PATCH 011/119] Resizing of the About dialog to match the golden ratio bzr revid: mit@openerp.com-20120726122006-5y3tm5r2fwk0m233 --- addons/web/static/src/js/chrome.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index b5c69f5c82f..4a76d7ded2f 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -864,7 +864,7 @@ instance.web.UserMenu = instance.web.Widget.extend({ window.location.href, 'debug'); }); instance.web.dialog($help, {autoOpen: true, - modal: true, width: 580, height: 290, resizable: false, title: _t("About")}); + modal: true, width: 507, height: 290, resizable: false, title: _t("About")}); }); }, }); From 5f2fe0169be2b0cb5bde166aa3db750dcc74bcb9 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Thu, 26 Jul 2012 18:11:06 +0200 Subject: [PATCH 012/119] Rationalization of tag css classes bzr revid: mit@openerp.com-20120726161106-5a9uu0wjuwausmgh --- addons/web/static/src/css/base.css | 50 +++++++++++++-------------- addons/web/static/src/css/base.sass | 53 +++++++++++++++-------------- addons/web/static/src/xml/base.xml | 4 +-- 3 files changed, 54 insertions(+), 53 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index e929ec6c16b..9b6cd67b51c 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1,4 +1,4 @@ -@charset "utf-8"; +@charset "UTF-8"; @font-face { font-family: "mnmliconsRegular"; src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); @@ -551,17 +551,19 @@ -webkit-animation: bounce 0.4s linear; } .openerp .oe_tag { - border-radius: 2px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - border: 1px solid #9daccc; - background: #e2e6f0; - color: black !important; - padding: 0px 3px 0px 3px; + border: 1px solid #afafb6; + font-size: 11px; + padding: 2px 4px; margin: 0 2px 2px 0; - height: 16px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #f0f0fa; + color: #4c4c4c; +} +.openerp .oe_tag_dark { + background: #8786b7; + color: #eeeeee; } .openerp .oe_tags .text-wrap { width: 100% !important; @@ -1183,16 +1185,9 @@ } .openerp .oe_secondary_submenu .oe_menu_counter { float: right; - background: #8a89ba; - color: #eeeeee; - font-size: 10px; - border: 1px solid lightgray; - padding: 2px 4px; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); margin: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; + padding: 1px 4px; } .openerp .oe_secondary_submenu .oe_active { background: #8a89ba; @@ -1532,25 +1527,27 @@ display: inline-block; line-height: 17px; } -.openerp .oe_searchview .oe_searchview_facets .oe_searchview_input, .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { height: 18px; margin: 1px 0; font-size: 11px; } -.openerp .oe_searchview .oe_searchview_facets .oe_searchview_input:focus, .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet:focus { +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet:focus { outline: none; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_input { padding: 0 0 0 6px; + font-size: 12px; + height: 16px; + margin-top: 3px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_input:focus { + outline: none; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { position: relative; cursor: pointer; - border: 1px solid #afafb6; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - background: #8786b7; + padding: 0; -webkit-font-smoothing: auto; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet:focus { @@ -1579,6 +1576,7 @@ .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value { border-left: 1px solid #afafb6; text-shadow: 0 1px 1px white; + color: #4c4c4c; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value:last-child { padding-right: 16px; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index c9e00c65a8a..dd4f9baee66 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -2,8 +2,10 @@ // Variables {{{ $section-title-color: #8786b7 -$facets-border: #afafb6 -$facets-border-selected: #a6a6fe +$tag-bg-light: #f0f0fa +$tag-bg-dark: #8786b7 +$tag-border: #afafb6 +$tag-border-selected: #a6a6fe $hover-background: #f0f0fa $colour4: #8a89ba $sheet-max-width: 860px @@ -427,15 +429,17 @@ $sheet-max-width: 860px // }}} // Tags (for many2many tags, among others) {{{ .oe_tag - border-radius: 2px - @include box-sizing(border) - border: 1px solid #9DACCC - background: #E2E6F0 - color: black !important - padding: 0px 3px 0px 3px + border: 1px solid $tag-border + font-size: 11px + padding: 2px 4px margin: 0 2px 2px 0 - height: 16px - // font: 11px "lucida grande", tahoma, verdana, arial, sans-serif + @include radius(3px) + background: $tag-bg-light + color: #4C4C4C + .oe_tag_dark + background: $tag-bg-dark + color: #eee + .oe_tags .text-wrap width: 100% !important @@ -906,14 +910,9 @@ $sheet-max-width: 860px @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, 0.2)) .oe_menu_counter float: right - background: #8a89ba - color: #eee - font-size: 10px - border: 1px solid lightgray - padding: 2px 4px text-shadow: 0 1px 1px rgba(0,0,0,0.2) margin: 0px - @include radius(4px) + padding: 1px 4px .oe_active background: $colour4 border-top: 1px solid lightGray @@ -1125,8 +1124,8 @@ $sheet-max-width: 860px font-size: 12px line-height: 18px &.oe_focused - border-color: $facets-border-selected - @include box-shadow(0 1px 2px $facets-border-selected inset) + border-color: $tag-border-selected + @include box-shadow(0 1px 2px $tag-border-selected inset) .oe_searchview_clear cursor: pointer position: absolute @@ -1177,7 +1176,7 @@ $sheet-max-width: 860px vertical-align: top display: inline-block line-height: 17px - .oe_searchview_input, .oe_searchview_facet + .oe_searchview_facet height: 18px margin: 1px 0 font-size: 11px @@ -1185,17 +1184,20 @@ $sheet-max-width: 860px outline: none .oe_searchview_input padding: 0 0 0 6px + font-size: 12px + height: 16px + margin-top: 3px + &:focus + outline: none .oe_searchview_facet position: relative cursor: pointer - border: 1px solid $facets-border - @include radius(3px) - background: #8786b7 + padding: 0 -webkit-font-smoothing: auto // spacing for opera, FF &:focus - border-color: $facets-border-selected - @include box-shadow(0 0 3px 1px $facets-border-selected) + border-color: $tag-border-selected + @include box-shadow(0 0 3px 1px $tag-border-selected) .oe_facet_values background: #f0f0fa @include radius(0 3px 3px 0) @@ -1208,8 +1210,9 @@ $sheet-max-width: 860px .oe_facet_category.oe_i font-size: 16px .oe_facet_value - border-left: 1px solid $facets-border + border-left: 1px solid $tag-border text-shadow: 0 1px 1px white + color: #4C4C4C &:last-child padding-right: 16px .oe_facet_remove diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 55353f0a748..c6b8b20c9bd 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -310,7 +310,7 @@ t-att-data-action-id="menu.action ? menu.action.split(',')[1] : ''"> -
+
@@ -1269,7 +1269,7 @@ contenteditable="true"/>
x From 73f3f24fb4564e9edb7bf4ddede1ccf46aaa94e7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 12:32:14 +0200 Subject: [PATCH 013/119] [ADD] tests for selection[function] and function fields export bzr revid: xmo@openerp.com-20120730103214-t4s9g0z3sl1x05b3 --- openerp/tests/export_models.py | 19 +++++++++++++++---- openerp/tests/test_export.py | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/openerp/tests/export_models.py b/openerp/tests/export_models.py index d54c73ac4ad..2f85ab473e8 100644 --- a/openerp/tests/export_models.py +++ b/openerp/tests/export_models.py @@ -1,6 +1,16 @@ # -*- coding: utf-8 -*- from openerp.osv import orm, fields +def selection_fn(obj, cr, uid, context=None): + return list(enumerate(["Corge", "Grault", "Wheee", "Moog"])) + +def function_fn(model, cr, uid, ids, field_name, arg, context): + return dict((id, 3) for id in ids) +def function_fn_write(model, cr, uid, id, field_name, field_value, fnct_inv_arg, context): + """ just so CreatorCase.export can be used + """ + pass + models = [ ('boolean', fields.boolean()), ('integer', fields.integer()), @@ -12,13 +22,14 @@ models = [ ('datetime', fields.datetime()), ('text', fields.text()), ('selection', fields.selection([(1, "Foo"), (2, "Bar"), (3, "Qux")])), + ('selection.function', fields.selection(selection_fn)), # just relate to an integer ('many2one', fields.many2one('export.integer')), ('one2many', fields.one2many('export.one2many.child', 'parent_id')), - ('many2many', fields.many2many('export.many2many.other')) - # TODO: function? - # TODO: related? - # TODO: reference? + ('many2many', fields.many2many('export.many2many.other')), + ('function', fields.function(function_fn, fnct_inv=function_fn_write, type="integer")), + # related: specialization of fields.function, should work the same way + # TODO: reference ] for name, field in models: attrs = { diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index ea21cd36a8a..ee4405db75d 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -7,7 +7,7 @@ from . import common, export_models def setUpModule(): - openerp.tools.config['update'] = dict(base=1) + openerp.tools.config['update'] = {'base': 1} openerp.modules.registry.RegistryManager.new( common.DB, update_module=True) @@ -237,6 +237,28 @@ class test_selection(CreatorCase): self.export(2), [[u"Bar"]]) +class test_selection_function(CreatorCase): + model_name = 'export.selection.function' + + def test_empty(self): + self.assertEqual( + self.export(False), + [[False]]) + + def test_value(self): + """ selection functions export the *value* itself + """ + self.assertEqual( + self.export(1), + [[u'1']]) + self.assertEqual( + self.export(3), + [[u'3']]) + # fucking hell + self.assertEqual( + self.export(0), + [[False]]) + class test_m2o(CreatorCase): model_name = 'export.many2one' @@ -518,3 +540,13 @@ class test_m2m(CreatorCase): ]]) # essentially same as o2m, so boring + +class test_function(CreatorCase): + model_name = 'export.function' + + def test_value(self): + """ Exports value normally returned by accessing the function field + """ + self.assertEqual( + self.export(42), + [[u'3']]) From 64910eaebad74019b4d7e0c58621a8487f2c007e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 13:11:05 +0200 Subject: [PATCH 014/119] [ADD] boolean field import tests bzr revid: xmo@openerp.com-20120730111105-k6q8xop0ru71l0dj --- openerp/tests/__init__.py | 3 +- openerp/tests/test_import.py | 95 ++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 openerp/tests/test_import.py diff --git a/openerp/tests/__init__.py b/openerp/tests/__init__.py index 7b30adece79..4b8fa798aea 100644 --- a/openerp/tests/__init__.py +++ b/openerp/tests/__init__.py @@ -9,7 +9,7 @@ See the :ref:`test-framework` section in the :ref:`features` list. """ from . import test_expression, test_ir_sequence, test_orm,\ - test_uninstall, test_export + test_uninstall, test_export, test_import fast_suite = [ test_ir_sequence, @@ -19,6 +19,7 @@ checks = [ test_expression, test_orm, test_export, + test_import, ] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py new file mode 100644 index 00000000000..4c5af087b2c --- /dev/null +++ b/openerp/tests/test_import.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +import openerp.modules.registry +import openerp + +from . import common, export_models + +def ok(n): + """ Successful import of ``n`` records + + :param int n: number of records which should have been imported + """ + return n, 0, 0, 0 + +def values(seq): + return [item['value'] for item in seq] + +def setupModule(): + openerp.tools.config['update'] = {'base': 1} + openerp.modules.registry.RegistryManager.new( + common.DB, update_module=True) + +class ImporterCase(common.TransactionCase): + model_name = False + + def __init__(self, *args, **kwargs): + super(ImporterCase, self).__init__(*args, **kwargs) + self.model = None + + def setUp(self): + super(ImporterCase, self).setUp() + self.model = self.registry(self.model_name) + + def import_(self, fields, rows, context=None): + return self.model.import_data( + self.cr, openerp.SUPERUSER_ID, fields, rows, context=context) + def read(self, fields=('value',), domain=(), context=None): + return self.model.read( + self.cr, openerp.SUPERUSER_ID, + self.model.search(self.cr, openerp.SUPERUSER_ID, domain, context=context), + fields=fields, context=context) + +class test_boolean_field(ImporterCase): + model_name = 'export.boolean' + + def test_empty(self): + self.assertEqual( + self.import_(['value'], []), + ok(0)) + + def test_exported(self): + self.assertEqual( + self.import_(['value'], [ + ['False'], + ['True'], + ]), + ok(2)) + records = self.read() + self.assertItemsEqual([ + False, + True, + ], values(records)) + + def test_falses(self): + self.assertEqual( + self.import_(['value'], [ + [u'0'], + [u'off'], + [u'false'], + [u'FALSE'], + [u'OFF'], + ]), + ok(5)) + self.assertItemsEqual([ + False, + False, + False, + False, + False, + ], + values(self.read())) + + def test_trues(self): + self.assertEqual( + self.import_(['value'], [ + ['no'], + ['None'], + ['nil'], + ['()'], + ['f'], + ['#f'], + ]), + ok(6)) + self.assertItemsEqual( + [True] * 6, + values(self.read())) From 59193b0c0fdcffb05e1a25a01f083bbf5b8d924d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 13:36:33 +0200 Subject: [PATCH 015/119] [ADD] empty record/field case to booleans bzr revid: xmo@openerp.com-20120730113633-tauioxm941k0iaqn --- openerp/tests/test_import.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 4c5af087b2c..e29cc8a3ad9 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -55,7 +55,7 @@ class test_boolean_field(ImporterCase): ]), ok(2)) records = self.read() - self.assertItemsEqual([ + self.assertEqual([ False, True, ], values(records)) @@ -68,9 +68,11 @@ class test_boolean_field(ImporterCase): [u'false'], [u'FALSE'], [u'OFF'], + [u''], ]), - ok(5)) - self.assertItemsEqual([ + ok(6)) + self.assertEqual([ + False, False, False, False, @@ -90,6 +92,7 @@ class test_boolean_field(ImporterCase): ['#f'], ]), ok(6)) - self.assertItemsEqual( + self.assertEqual( [True] * 6, values(self.read())) + From 6af9bb41598dfdc03721fe228fb4c5f972335361 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 14:22:43 +0200 Subject: [PATCH 016/119] [TEST] integers import bzr revid: xmo@openerp.com-20120730122243-wjpalm6ovwuk6k5c --- openerp/tests/test_import.py | 88 +++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 2 deletions(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index e29cc8a3ad9..c38517a6f07 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -11,6 +11,18 @@ def ok(n): """ return n, 0, 0, 0 +def error(row, message, record=None, **kwargs): + """ Failed import of the record ``record`` at line ``row``, with the error + message ``message`` + + :param str message: + :param dict record: + """ + return ( + -1, dict(record or {}, **kwargs), + "Line %d : %s\n" % (row, message), + '') + def values(seq): return [item['value'] for item in seq] @@ -90,9 +102,81 @@ class test_boolean_field(ImporterCase): ['()'], ['f'], ['#f'], + # Problem: OpenOffice (and probably excel) output localized booleans + ['VRAI'], ]), - ok(6)) + ok(7)) self.assertEqual( - [True] * 6, + [True] * 7, values(self.read())) +class test_integer_field(ImporterCase): + model_name = 'export.integer' + + def test_none(self): + self.assertEqual( + self.import_(['value'], []), + ok(0)) + + def test_empty(self): + self.assertEqual( + self.import_(['value'], [['']]), + ok(1)) + self.assertEqual( + [False], + values(self.read())) + + def test_zero(self): + self.assertEqual( + self.import_(['value'], [['0']]), + ok(1)) + self.assertEqual( + self.import_(['value'], [['-0']]), + ok(1)) + self.assertEqual([False, False], values(self.read())) + + def test_positives(self): + self.assertEqual( + self.import_(['value'], [ + ['1'], + ['42'], + [str(2**31-1)], + ['12345678'] + ]), + ok(4)) + self.assertEqual([ + 1, 42, 2**31-1, 12345678 + ], values(self.read())) + + def test_negatives(self): + self.assertEqual( + self.import_(['value'], [ + ['-1'], + ['-42'], + [str(-(2**31 - 1))], + [str(-(2**31))], + ['-12345678'] + ]), + ok(5)) + self.assertEqual([ + -1, -42, -(2**31 - 1), -(2**31), -12345678 + ], values(self.read())) + + def test_out_of_range(self): + self.assertEqual( + self.import_(['value'], [[str(2**31)]]), + error(1, "integer out of range", value=2**31)) + # auto-rollbacks if error is in process_liness, but not during + # ir.model.data write. Can differentiate because former ends lines + # error lines with "!" + self.cr.rollback() + self.assertEqual( + self.import_(['value'], [[str(-2**32)]]), + error(1, "integer out of range", value=-2**32)) + + + def test_nonsense(self): + # dafuq? why does that one raise an error? + self.assertRaises( + ValueError, + self.import_, ['value'], [['zorglub']]) From 1cf264cfd4ae468653f5aade0786f522a459bf58 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 16:28:51 +0200 Subject: [PATCH 017/119] [TEST] char and text fields bzr revid: xmo@openerp.com-20120730142851-6854x99l4sxmoc0s --- openerp/tests/test_import.py | 125 +++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index c38517a6f07..7fef60876e0 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -180,3 +180,128 @@ class test_integer_field(ImporterCase): self.assertRaises( ValueError, self.import_, ['value'], [['zorglub']]) + +class test_float_field(ImporterCase): + model_name = 'export.float' + def test_none(self): + self.assertEqual( + self.import_(['value'], []), + ok(0)) + + def test_empty(self): + self.assertEqual( + self.import_(['value'], [['']]), + ok(1)) + self.assertEqual( + [False], + values(self.read())) + + def test_zero(self): + self.assertEqual( + self.import_(['value'], [['0']]), + ok(1)) + self.assertEqual( + self.import_(['value'], [['-0']]), + ok(1)) + self.assertEqual([False, False], values(self.read())) + + def test_positives(self): + self.assertEqual( + self.import_(['value'], [ + ['1'], + ['42'], + [str(2**31-1)], + ['12345678'], + [str(2**33)], + ['0.000001'], + ]), + ok(6)) + self.assertEqual([ + 1, 42, 2**31-1, 12345678, 2.0**33, .000001 + ], values(self.read())) + + def test_negatives(self): + self.assertEqual( + self.import_(['value'], [ + ['-1'], + ['-42'], + [str(-2**31 + 1)], + [str(-2**31)], + ['-12345678'], + [str(-2**33)], + ['-0.000001'], + ]), + ok(7)) + self.assertEqual([ + -1, -42, -(2**31 - 1), -(2**31), -12345678, -2.0**33, -.000001 + ], values(self.read())) + + def test_nonsense(self): + self.assertRaises( + ValueError, + self.import_, ['value'], [['foobar']]) + +class test_string_field(ImporterCase): + model_name = 'export.string.bounded' + + def test_empty(self): + self.assertEqual( + self.import_(['value'], [['']]), + ok(1)) + self.assertEqual([False], values(self.read())) + + def test_imported(self): + self.assertEqual( + self.import_(['value'], [ + [u'foobar'], + [u'foobarbaz'], + [u'Með suð í eyrum við spilum endalaust'], + [u"People 'get' types. They use them all the time. Telling " + u"someone he can't pound a nail with a banana doesn't much " + u"surprise him."] + ]), + ok(4)) + self.assertEqual([ + u"foobar", + u"foobarbaz", + u"Með suð í eyrum ", + u"People 'get' typ", + ], values(self.read())) + +class test_unbound_string_field(ImporterCase): + model_name = 'export.string' + + def test_imported(self): + self.assertEqual( + self.import_(['value'], [ + [u'í dag viðrar vel til loftárása'], + # ackbar.jpg + [u"If they ask you about fun, you tell them – fun is a filthy" + u" parasite"] + ]), + ok(2)) + self.assertEqual([ + u"í dag viðrar vel til loftárása", + u"If they ask you about fun, you tell them – fun is a filthy parasite" + ], values(self.read())) + +class test_text(ImporterCase): + model_name = 'export.text' + + def test_empty(self): + self.assertEqual( + self.import_(['value'], [['']]), + ok(1)) + self.assertEqual([False], values(self.read())) + + def test_imported(self): + s = (u"Breiðskífa er notað um útgefna hljómplötu sem inniheldur " + u"stúdíóupptökur frá einum flytjanda. Breiðskífur eru oftast " + u"milli 25-80 mínútur og er lengd þeirra oft miðuð við 33⅓ " + u"snúninga 12 tommu vínylplötur (sem geta verið allt að 30 mín " + u"hvor hlið).\n\nBreiðskífur eru stundum tvöfaldar og eru þær þá" + u" gefnar út á tveimur geisladiskum eða tveimur vínylplötum.") + self.assertEqual( + self.import_(['value'], [[s]]), + ok(1)) + self.assertEqual([s], values(self.read())) From 5b5148b925e5750036257c33426faa41c5f61486 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 17:28:44 +0200 Subject: [PATCH 018/119] [TEST] selection fields import bzr revid: xmo@openerp.com-20120730152844-xob3ezlw0qpb1kxc --- openerp/tests/test_export.py | 2 ++ openerp/tests/test_import.py | 49 +++++++++++++++++++++++++++++++++--- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index ee4405db75d..01d0fbc7726 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -237,6 +237,8 @@ class test_selection(CreatorCase): self.export(2), [[u"Bar"]]) + # TODO: localized export! + class test_selection_function(CreatorCase): model_name = 'export.selection.function' diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 7fef60876e0..9c817236cf2 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -20,7 +20,7 @@ def error(row, message, record=None, **kwargs): """ return ( -1, dict(record or {}, **kwargs), - "Line %d : %s\n" % (row, message), + "Line %d : %s" % (row, message), '') def values(seq): @@ -165,14 +165,14 @@ class test_integer_field(ImporterCase): def test_out_of_range(self): self.assertEqual( self.import_(['value'], [[str(2**31)]]), - error(1, "integer out of range", value=2**31)) + error(1, "integer out of range\n", value=2**31)) # auto-rollbacks if error is in process_liness, but not during # ir.model.data write. Can differentiate because former ends lines # error lines with "!" self.cr.rollback() self.assertEqual( self.import_(['value'], [[str(-2**32)]]), - error(1, "integer out of range", value=-2**32)) + error(1, "integer out of range\n", value=-2**32)) def test_nonsense(self): @@ -305,3 +305,46 @@ class test_text(ImporterCase): self.import_(['value'], [[s]]), ok(1)) self.assertEqual([s], values(self.read())) + +class test_selection(ImporterCase): + model_name = 'export.selection' + + def test_imported(self): + self.assertEqual( + self.import_(['value'], [ + ['Qux'], + ['Bar'], + ['Foo'], + [2], + ]), + ok(4)) + self.assertEqual([3, 2, 1, 2], values(self.read())) + + def test_invalid(self): + self.assertEqual( + self.import_(['value'], [['Baz']]), + error(1, "Key/value 'Baz' not found in selection field 'value'", + # what the fuck? + value=False)) + +class test_selection_function(ImporterCase): + model_name = 'export.selection.function' + + def test_imported(self): + """ By what bloody magic does that thing work? + + => import uses fields_get, so translates import label (may or may not + be good news) *and* serializes the selection function to reverse + it: import does not actually know that the selection field uses a + function + """ + # TODO: localized import + self.assertEqual( + self.import_(['value'], [ + [3], + ["Grault"], + ]), + ok(2)) + self.assertEqual( + ['3', '1'], + values(self.read())) From 496177a9b1a8fbd517bf8faf453b8ac04a1e996c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 17:30:17 +0200 Subject: [PATCH 019/119] [TEST] incorrect value for selection field import bzr revid: xmo@openerp.com-20120730153017-iywveudrq5h0ykef --- openerp/tests/test_import.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 9c817236cf2..c87f65c4c6e 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -326,6 +326,11 @@ class test_selection(ImporterCase): error(1, "Key/value 'Baz' not found in selection field 'value'", # what the fuck? value=False)) + self.cr.rollback() + self.assertEqual( + self.import_(['value'], [[42]]), + error(1, "Key/value '42' not found in selection field 'value'", + value=False)) class test_selection_function(ImporterCase): model_name = 'export.selection.function' From 84488630075d41930a8d2a715eebb62e69471b2f Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Mon, 30 Jul 2012 17:47:50 +0200 Subject: [PATCH 020/119] Restyling of jquery-ui buttons in dialog box + various style fixes bzr revid: mit@openerp.com-20120730154750-x40vpq9y9f492zvn --- addons/web/static/src/css/base.css | 27 ++++++++++++++++++--------- addons/web/static/src/css/base.sass | 22 +++++++++++++++------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 9b6cd67b51c..703683d4d96 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -148,7 +148,7 @@ .openerp h4 { margin: 4px 0; } -.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'] { +.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button { display: inline-block; border: 1px solid #ababab; color: #404040; @@ -173,7 +173,7 @@ -webkit-font-smoothing: antialiased; outline: none; } -.openerp a.button:hover, .openerp button:hover, .openerp input[type='submit']:hover { +.openerp a.button:hover, .openerp button:hover, .openerp input[type='submit']:hover, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover { background-color: #f6f6f6; background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); @@ -182,9 +182,11 @@ background-image: -o-linear-gradient(top, #f6f6f6, #e3e3e3); background-image: linear-gradient(to bottom, #f6f6f6, #e3e3e3); cursor: pointer; + background-position: 0; } -.openerp a.button:focus, .openerp button:focus, .openerp input[type='submit']:focus { +.openerp a.button:focus, .openerp button:focus, .openerp input[type='submit']:focus, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-focus { border: 1px solid #80bfff; + background-position: 0; background-color: #f6f6f6; background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); @@ -196,7 +198,7 @@ -webkit-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; } -.openerp a.button:active, .openerp a.button.active, .openerp button:active, .openerp button.active, .openerp input[type='submit']:active, .openerp input[type='submit'].active { +.openerp a.button:active, .openerp a.button.active, .openerp button:active, .openerp button.active, .openerp input[type='submit']:active, .openerp input[type='submit'].active, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-active { background-color: #e3e3e3; background-image: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f6f6f6)); background-image: -webkit-linear-gradient(top, #e3e3e3, #f6f6f6); @@ -230,11 +232,6 @@ .openerp .ui-menu .ui-menu-item a.ui-state-active { background: #f0f0fa; } -.openerp div.ui-widget-overlay { - background: black; - filter: alpha(opacity=30); - opacity: 0.3; -} .openerp.ui-dialog { display: none; padding: 6px; @@ -294,6 +291,9 @@ .openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: left; } +.openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button { + margin-right: 4px; +} .openerp.ui-dialog .ui-dialog-titlebar-close { padding: 0; } @@ -329,6 +329,9 @@ .openerp.ui-dialog .oe_about a:hover { text-decoration: underline; } +.openerp.ui-dialog .oe_about a:focus { + outline: none; +} .openerp.ui-dialog .oe_about .oe_logo { margin-left: -6px; } @@ -2539,3 +2542,9 @@ .kitten-mode-activated > * { opacity: 0.7; } + +div.ui-widget-overlay { + background: black; + filter: alpha(opacity=30); + opacity: 0.3; +} diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index dd4f9baee66..2a2d816241f 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -184,7 +184,7 @@ $sheet-max-width: 860px margin: 4px 0 // }}} // Button style {{{ - a.button:link, a.button:visited, button, input[type='submit'] + a.button:link, a.button:visited, button, input[type='submit'], .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button display: inline-block border: 1px solid #ababab color: #404040 @@ -199,16 +199,18 @@ $sheet-max-width: 860px -webkit-font-smoothing: antialiased outline: none - a.button:hover, button:hover, input[type='submit']:hover + a.button:hover, button:hover, input[type='submit']:hover, .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover @include vertical-gradient(#f6f6f6, #e3e3e3) cursor: pointer + background-position: 0 - a.button:focus, button:focus, input[type='submit']:focus + a.button:focus, button:focus, input[type='submit']:focus, .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-focus border: 1px solid #80bfff + background-position: 0 @include vertical-gradient(#f6f6f6, #e3e3e3) @include box-shadow((0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, .8) inset)) - a.button:active, a.button.active, button:active, button.active, input[type='submit']:active, input[type='submit'].active + a.button:active, a.button.active, button:active, button.active, input[type='submit']:active, input[type='submit'].active, .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-active @include vertical-gradient(#e3e3e3, #f6f6f6) @include box-shadow(none) @@ -231,9 +233,7 @@ $sheet-max-width: 860px width: auto a.ui-state-active background: #f0f0fa - div.ui-widget-overlay - background: black - @include opacity(0.3) + // Modal box &.ui-dialog display: none @@ -270,6 +270,8 @@ $sheet-max-width: 860px margin: 0 .ui-dialog-buttonset float: left + .ui-button + margin-right: 4px .ui-dialog-titlebar-close padding: 0 .ui-icon-closethick @@ -296,6 +298,8 @@ $sheet-max-width: 860px color: #8A89BA &:hover text-decoration: underline + &:focus + outline: none .oe_logo margin-left: -6px .oe_bottom @@ -1993,6 +1997,10 @@ $sheet-max-width: 860px // }}} +// The jQuery-ui overlay is outside the .openerp div, please don't add indentation !!! +div.ui-widget-overlay + background: black + @include opacity(0.3) // au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers > "%:p:r.css" // vim:tabstop=4:shiftwidth=4:softtabstop=4:fdm=marker: From f8822ae313e380f72f5aff23b7f61d2f73939764 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 18:23:18 +0200 Subject: [PATCH 021/119] [TEST] m2o import bzr revid: xmo@openerp.com-20120730162318-qwxncgvizrifgxyh --- openerp/tests/export_models.py | 8 ++- openerp/tests/test_import.py | 106 +++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 1 deletion(-) diff --git a/openerp/tests/export_models.py b/openerp/tests/export_models.py index 2f85ab473e8..277814808b4 100644 --- a/openerp/tests/export_models.py +++ b/openerp/tests/export_models.py @@ -42,7 +42,13 @@ for name, field in models: '_defaults': {'const': 4}, 'name_get': (lambda self, cr, uid, ids, context=None: [(record.id, "%s:%s" % (self._name, record.value)) - for record in self.browse(cr, uid, ids, context=context)]) + for record in self.browse(cr, uid, ids, context=context)]), + 'name_search': (lambda self, cr, uid, name, operator, context=None: + self.name_get(cr, uid, + self.search(cr, uid, [['value', operator, int(name.split(':')[1])]]) + , context=context) + if isinstance(name, basestring) and name.split(':')[0] == self._name + else []) } NewModel = type( 'Export%s' % ''.join(section.capitalize() for section in name.split('.')), diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index c87f65c4c6e..90e14375540 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -50,6 +50,12 @@ class ImporterCase(common.TransactionCase): self.cr, openerp.SUPERUSER_ID, self.model.search(self.cr, openerp.SUPERUSER_ID, domain, context=context), fields=fields, context=context) + def browse(self, domain=(), context=None): + return self.model.browse( + self.cr, openerp.SUPERUSER_ID, + self.model.search(self.cr, openerp.SUPERUSER_ID, domain, context=context), + context=context) + class test_boolean_field(ImporterCase): model_name = 'export.boolean' @@ -353,3 +359,103 @@ class test_selection_function(ImporterCase): self.assertEqual( ['3', '1'], values(self.read())) + +class test_o2m(ImporterCase): + model_name = 'export.many2one' + + def test_by_name(self): + # create integer objects + integer_id1 = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + integer_id2 = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 36}) + # get its name + name1 = dict(self.registry('export.integer').name_get( + self.cr, openerp.SUPERUSER_ID,[integer_id1]))[integer_id1] + name2 = dict(self.registry('export.integer').name_get( + self.cr, openerp.SUPERUSER_ID,[integer_id2]))[integer_id2] + + self.assertEqual( + self.import_(['value'], [ + # import by name_get + [name1], + [name1], + [name2], + ]), + ok(3)) + # correct ids assigned to corresponding records + self.assertEqual([ + (integer_id1, name1), + (integer_id1, name1), + (integer_id2, name2),], + values(self.read())) + + # TODO: test import by xid + + def test_by_id(self): + integer_id = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + self.assertEqual( + self.import_(['value/.id'], [[integer_id]]), + ok(1)) + b = self.browse() + self.assertEqual(42, b[0].value.value) + + def test_by_names(self): + integer_id1 = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + integer_id2 = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + name1 = dict(self.registry('export.integer').name_get( + self.cr, openerp.SUPERUSER_ID,[integer_id1]))[integer_id1] + name2 = dict(self.registry('export.integer').name_get( + self.cr, openerp.SUPERUSER_ID,[integer_id2]))[integer_id2] + # names should be the same + self.assertEqual(name1, name2) + + self.assertEqual( + self.import_(['value'], [[name2]]), + ok(1)) + # FIXME: is it really normal import does not care for name_search collisions? + self.assertEqual([ + (integer_id1, name1) + ], values(self.read())) + + def test_fail_by_implicit_id(self): + """ Can't implicitly import records by id + """ + # create integer objects + integer_id1 = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + integer_id2 = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 36}) + + self.assertRaises( + ValueError, # Because name_search all the things. Fallback schmallback + self.import_, ['value'], [ + # import by id, without specifying it + [integer_id1], + [integer_id2], + [integer_id1], + ]) + + def test_sub_field(self): + """ Does not implicitly create the record, does not warn that you can't + import m2o subfields (at all)... + """ + self.assertRaises( + ValueError, # No record found for 42, name_searches the bloody thing + self.import_, ['value/value'], [['42']]) + + def test_fail_noids(self): + self.assertRaises( + ValueError, + self.import_, ['value'], [['nameisnoexist:3']]) + self.cr.rollback() + self.assertRaises( + ValueError, + self.import_, ['value/id'], [['noxidhere']]), + self.cr.rollback() + self.assertRaises( + Exception, # FIXME: Why can't you be a ValueError like everybody else? + self.import_, ['value/.id'], [[66]]) From a3542213bc80ab9247e70a4f1353da6e36dd8266 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jul 2012 18:53:30 +0200 Subject: [PATCH 022/119] [TEST] ids handling on main record bzr revid: xmo@openerp.com-20120730165330-lm4l1yzfjduajb1p --- openerp/tests/test_import.py | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 90e14375540..2305928a12e 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -56,6 +56,38 @@ class ImporterCase(common.TransactionCase): self.model.search(self.cr, openerp.SUPERUSER_ID, domain, context=context), context=context) +class test_ids_stuff(ImporterCase): + model_name = 'export.integer' + + def test_create_with_id(self): + self.assertRaises( + Exception, # dammit + self.import_, ['.id', 'value'], [['42', '36']]) + def test_create_with_xid(self): + self.assertEqual( + self.import_(['id', 'value'], [['somexmlid', '42']]), + ok(1)) + # TODO: get xid back, check that it is correct? + + def test_update_with_id(self): + id = self.model.create(self.cr, openerp.SUPERUSER_ID, {'value': 36}) + self.assertEqual( + 36, + self.model.browse(self.cr, openerp.SUPERUSER_ID, id).value) + + self.assertEqual( + self.import_(['.id', 'value'], [[str(id), '42']]), + ok(1)) + self.assertEqual( + [42], # updated value to imported + values(self.read())) + + def test_update_with_xid(self): + self.import_(['id', 'value'], [['somexmlid', '36']]) + self.assertEqual([36], values(self.read())) + + self.import_(['id', 'value'], [['somexmlid', '1234567']]) + self.assertEqual([1234567], values(self.read())) class test_boolean_field(ImporterCase): model_name = 'export.boolean' @@ -459,3 +491,8 @@ class test_o2m(ImporterCase): self.assertRaises( Exception, # FIXME: Why can't you be a ValueError like everybody else? self.import_, ['value/.id'], [[66]]) +# TODO: M2M +# TODO: O2M + +# function, related, reference: written to db as-is... +# => function uses @type for value coercion/conversion From 0fa88efde693fe8e0f3efd384b17d1012935159e Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Mon, 30 Jul 2012 19:18:44 +0200 Subject: [PATCH 023/119] fixed display issue in kanban nocontent view bzr revid: mit@openerp.com-20120730171844-4cjadauklpe8if2e --- addons/web_kanban/static/src/js/kanban.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index cd12953adcd..568e6890522 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -161,6 +161,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ }, do_search: function(domain, context, group_by) { var self = this; + this.$element.find('.oe_view_nocontent').parent().addClass('oe_kanban_view').find('.oe_kanban_groups').show(); this.$element.find('.oe_view_nocontent').remove(); this.search_domain = domain; this.search_context = context; @@ -335,7 +336,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ $('
') .append($('', { src: '/web/static/src/img/view_empty_arrow.png' })) .append($('
').html(this.options.action.help)) - ); + ).removeClass('oe_kanban_view').find('.oe_kanban_groups').hide(); } }); From 6bad3e84fb1093b3e9c1a3c99bea3cc19fd95e2e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 12:39:08 +0200 Subject: [PATCH 024/119] [TEST] m2o import link by xid bzr revid: xmo@openerp.com-20120731103908-p1apmrx3ifnodz0f --- openerp/tests/test_import.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 2305928a12e..0b0d8fe4d0d 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -392,7 +392,7 @@ class test_selection_function(ImporterCase): ['3', '1'], values(self.read())) -class test_o2m(ImporterCase): +class test_m2o(ImporterCase): model_name = 'export.many2one' def test_by_name(self): @@ -422,7 +422,21 @@ class test_o2m(ImporterCase): (integer_id2, name2),], values(self.read())) - # TODO: test import by xid + def test_by_xid(self): + integer_id = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + self.registry('ir.model.data').create(self.cr, openerp.SUPERUSER_ID, { + 'name': 'export-integer-value', + 'model': 'export.integer', + 'res_id': integer_id, + 'module': 'test-export' + }) + + self.assertEqual( + self.import_(['value/id'], [['test-export.export-integer-value']]), + ok(1)) + b = self.browse() + self.assertEqual(42, b[0].value.value) def test_by_id(self): integer_id = self.registry('export.integer').create( @@ -491,7 +505,9 @@ class test_o2m(ImporterCase): self.assertRaises( Exception, # FIXME: Why can't you be a ValueError like everybody else? self.import_, ['value/.id'], [[66]]) + # TODO: M2M + # TODO: O2M # function, related, reference: written to db as-is... From ac647909bf97d6caf2ddc74b4daad6cea7752645 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 15:54:49 +0200 Subject: [PATCH 025/119] [TEST] m2m import bzr revid: xmo@openerp.com-20120731135449-i07ex1zswepen3wt --- openerp/tests/export_models.py | 6 ++ openerp/tests/test_export.py | 2 +- openerp/tests/test_import.py | 135 ++++++++++++++++++++++++++++++--- 3 files changed, 132 insertions(+), 11 deletions(-) diff --git a/openerp/tests/export_models.py b/openerp/tests/export_models.py index 277814808b4..3bb5cf0c6d2 100644 --- a/openerp/tests/export_models.py +++ b/openerp/tests/export_models.py @@ -117,3 +117,9 @@ class Many2ManyChild(orm.Model): def name_get(self, cr, uid, ids, context=None): return [(record.id, "%s:%s" % (self._name, record.value)) for record in self.browse(cr, uid, ids, context=context)] + def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100): + return (self.name_get(cr, user, + self.search(cr, user, [['value', operator, int(name.split(':')[1])]]) + , context=context) + if isinstance(name, basestring) and name.split(':')[0] == self._name + else []) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index 01d0fbc7726..d693de01993 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -537,7 +537,7 @@ class test_m2m(CreatorCase): def test_multiple_records_name(self): self.assertEqual( self.export(self.commands, fields=['const', 'value']), - [[ + [[ # FIXME: hardcoded comma, import uses config.csv_internal_sep u'4', u','.join(self.names) ]]) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 0b0d8fe4d0d..b275db520c8 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -56,6 +56,30 @@ class ImporterCase(common.TransactionCase): self.model.search(self.cr, openerp.SUPERUSER_ID, domain, context=context), context=context) + def xid(self, record): + ModelData = self.registry('ir.model.data') + + ids = ModelData.search( + self.cr, openerp.SUPERUSER_ID, + [('model', '=', record._table_name), ('res_id', '=', record.id)]) + if ids: + d = ModelData.read( + self.cr, openerp.SUPERUSER_ID, ids, ['name', 'module'])[0] + if d['module']: + return '%s.%s' % (d['module'], d['name']) + return d['name'] + + name = dict(record.name_get())[record.id] + # fix dotted name_get results, otherwise xid lookups blow up + name = name.replace('.', '-') + ModelData.create(self.cr, openerp.SUPERUSER_ID, { + 'name': name, + 'model': record._table_name, + 'res_id': record.id, + 'module': '__test__' + }) + return '__test__.' + name + class test_ids_stuff(ImporterCase): model_name = 'export.integer' @@ -67,7 +91,9 @@ class test_ids_stuff(ImporterCase): self.assertEqual( self.import_(['id', 'value'], [['somexmlid', '42']]), ok(1)) - # TODO: get xid back, check that it is correct? + self.assertEqual( + 'somexmlid', + self.xid(self.browse()[0])) def test_update_with_id(self): id = self.model.create(self.cr, openerp.SUPERUSER_ID, {'value': 36}) @@ -423,17 +449,14 @@ class test_m2o(ImporterCase): values(self.read())) def test_by_xid(self): - integer_id = self.registry('export.integer').create( + ExportInteger = self.registry('export.integer') + integer_id = ExportInteger.create( self.cr, openerp.SUPERUSER_ID, {'value': 42}) - self.registry('ir.model.data').create(self.cr, openerp.SUPERUSER_ID, { - 'name': 'export-integer-value', - 'model': 'export.integer', - 'res_id': integer_id, - 'module': 'test-export' - }) + xid = self.xid(ExportInteger.browse( + self.cr, openerp.SUPERUSER_ID, [integer_id])[0]) self.assertEqual( - self.import_(['value/id'], [['test-export.export-integer-value']]), + self.import_(['value/id'], [[xid]]), ok(1)) b = self.browse() self.assertEqual(42, b[0].value.value) @@ -506,7 +529,99 @@ class test_m2o(ImporterCase): Exception, # FIXME: Why can't you be a ValueError like everybody else? self.import_, ['value/.id'], [[66]]) -# TODO: M2M +class test_m2m(ImporterCase): + model_name = 'export.many2many' + + # apparently, one and only thing which works is a + # csv_internal_sep-separated list of ids, xids, or names (depending if + # m2m/.id, m2m/id or m2m[/anythingelse] + def test_ids(self): + id1 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 3, 'str': 'record0'}) + id2 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 44, 'str': 'record1'}) + id3 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 84, 'str': 'record2'}) + id4 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 9, 'str': 'record3'}) + id5 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 99, 'str': 'record4'}) + + self.assertEqual( + self.import_(['value/.id'], [ + ['%d,%d' % (id1, id2)], + ['%d,%d,%d' % (id1, id3, id4)], + ['%d,%d,%d' % (id1, id2, id3)], + ['%d' % id5] + ]), + ok(4)) + ids = lambda records: [record.id for record in records] + + b = self.browse() + self.assertEqual(ids(b[0].value), [id1, id2]) + self.assertEqual(values(b[0].value), [3, 44]) + + self.assertEqual(ids(b[2].value), [id1, id2, id3]) + self.assertEqual(values(b[2].value), [3, 44, 84]) + + def test_noids(self): + try: + self.import_(['value/.id'], [['42']]) + self.fail("Should have raised an exception") + except Exception, e: + self.assertIs(type(e), Exception, + "test should be fixed on exception subclass") + + def test_xids(self): + M2O_o = self.registry('export.many2many.other') + id1 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 3, 'str': 'record0'}) + id2 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 44, 'str': 'record1'}) + id3 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 84, 'str': 'record2'}) + id4 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 9, 'str': 'record3'}) + records = M2O_o.browse(self.cr, openerp.SUPERUSER_ID, [id1, id2, id3, id4]) + + self.assertEqual( + self.import_(['value/id'], [ + ['%s,%s' % (self.xid(records[0]), self.xid(records[1]))], + ['%s' % self.xid(records[3])], + ['%s,%s' % (self.xid(records[2]), self.xid(records[1]))], + ]), + ok(3)) + + b = self.browse() + self.assertEqual(values(b[0].value), [3, 44]) + self.assertEqual(values(b[2].value), [44, 84]) + def test_noxids(self): + self.assertRaises( + ValueError, + self.import_, ['value/id'], [['noxidforthat']]) + + def test_names(self): + M2O_o = self.registry('export.many2many.other') + id1 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 3, 'str': 'record0'}) + id2 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 44, 'str': 'record1'}) + id3 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 84, 'str': 'record2'}) + id4 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 9, 'str': 'record3'}) + records = M2O_o.browse(self.cr, openerp.SUPERUSER_ID, [id1, id2, id3, id4]) + + name = lambda record: dict(record.name_get())[record.id] + + self.assertEqual( + self.import_(['value'], [ + ['%s,%s' % (name(records[1]), name(records[2]))], + ['%s,%s,%s' % (name(records[0]), name(records[1]), name(records[2]))], + ['%s,%s' % (name(records[0]), name(records[3]))], + ]), + ok(3)) + + b = self.browse() + self.assertEqual(values(b[1].value), [3, 44, 84]) + self.assertEqual(values(b[2].value), [3, 9]) + + def test_nonames(self): + self.assertRaises( + ValueError, + self.import_, ['value'], [['wherethem2mhavenonames']]) # TODO: O2M From 29e6a77fef10ebe06017bb55b492f8b004a0f80e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 16:46:06 +0200 Subject: [PATCH 026/119] [TEST] localized import/export of selection fields bzr revid: xmo@openerp.com-20120731144606-ceax7lk3rfi7zumk --- openerp/tests/test_export.py | 29 +++++++++++++- openerp/tests/test_import.py | 74 +++++++++++++++++++++++++++++++++++- 2 files changed, 100 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index d693de01993..d60e5a09dcb 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -224,6 +224,11 @@ class test_datetime(CreatorCase): class test_selection(CreatorCase): model_name = 'export.selection' + translations_fr = [ + ("Qux", "toto"), + ("Bar", "titi"), + ("Foo", "tete"), + ] def test_empty(self): self.assertEqual( @@ -237,7 +242,28 @@ class test_selection(CreatorCase): self.export(2), [[u"Bar"]]) - # TODO: localized export! + def test_localized_export(self): + self.registry('res.lang').create(self.cr, openerp.SUPERUSER_ID, { + 'name': u'Français', + 'code': 'fr_FR', + 'translatable': True, + 'date_format': '%d.%m.%Y', + 'decimal_point': ',', + 'thousand_sep': ' ', + }) + Translations = self.registry('ir.translation') + for source, value in self.translations_fr: + Translations.create(self.cr, openerp.SUPERUSER_ID, { + 'name': 'export.selection,value', + 'lang': 'fr_FR', + 'type': 'selection', + 'src': source, + 'value': value + }) + # FIXME: can't import an exported selection field label if lang != en_US + self.assertEqual( + self.export(2, context={'lang': 'fr_FR'}), + [[u'Bar']]) class test_selection_function(CreatorCase): model_name = 'export.selection.function' @@ -390,7 +416,6 @@ class test_o2m(CreatorCase): [u'record5', '', u'13'], ]) -# todo: test with multiple o2m fields and exporting all class test_o2m_multiple(CreatorCase): model_name = 'export.one2many.multiple' diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index b275db520c8..7422ffd1a7a 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -372,6 +372,11 @@ class test_text(ImporterCase): class test_selection(ImporterCase): model_name = 'export.selection' + translations_fr = [ + ("Qux", "toto"), + ("Bar", "titi"), + ("Foo", "tete"), + ] def test_imported(self): self.assertEqual( @@ -384,6 +389,38 @@ class test_selection(ImporterCase): ok(4)) self.assertEqual([3, 2, 1, 2], values(self.read())) + def test_imported_translated(self): + self.registry('res.lang').create(self.cr, openerp.SUPERUSER_ID, { + 'name': u'Français', + 'code': 'fr_FR', + 'translatable': True, + 'date_format': '%d.%m.%Y', + 'decimal_point': ',', + 'thousand_sep': ' ', + }) + Translations = self.registry('ir.translation') + for source, value in self.translations_fr: + Translations.create(self.cr, openerp.SUPERUSER_ID, { + 'name': 'export.selection,value', + 'lang': 'fr_FR', + 'type': 'selection', + 'src': source, + 'value': value + }) + + self.assertEqual( + self.import_(['value'], [ + ['toto'], + ['tete'], + ['titi'], + ], context={'lang': 'fr_FR'}), + ok(3)) + self.assertEqual([3, 1, 2], values(self.read())) + self.assertEqual( + self.import_(['value'], [['Foo']], context={'lang': 'fr_FR'}), + error(1, "Key/value 'Foo' not found in selection field 'value'", + value=False)) + def test_invalid(self): self.assertEqual( self.import_(['value'], [['Baz']]), @@ -398,6 +435,12 @@ class test_selection(ImporterCase): class test_selection_function(ImporterCase): model_name = 'export.selection.function' + translations_fr = [ + ("Corge", "toto"), + ("Grault", "titi"), + ("Whee", "tete"), + ("Moog", "tutu"), + ] def test_imported(self): """ By what bloody magic does that thing work? @@ -407,7 +450,6 @@ class test_selection_function(ImporterCase): it: import does not actually know that the selection field uses a function """ - # TODO: localized import self.assertEqual( self.import_(['value'], [ [3], @@ -418,6 +460,36 @@ class test_selection_function(ImporterCase): ['3', '1'], values(self.read())) + def test_translated(self): + self.registry('res.lang').create(self.cr, openerp.SUPERUSER_ID, { + 'name': u'Français', + 'code': 'fr_FR', + 'translatable': True, + 'date_format': '%d.%m.%Y', + 'decimal_point': ',', + 'thousand_sep': ' ', + }) + Translations = self.registry('ir.translation') + for source, value in self.translations_fr: + Translations.create(self.cr, openerp.SUPERUSER_ID, { + 'name': 'export.selection,value', + 'lang': 'fr_FR', + 'type': 'selection', + 'src': source, + 'value': value + }) + # FIXME: Fucking hell + self.assertEqual( + self.import_(['value'], [ + ['toto'], + ['tete'], + ], context={'lang': 'fr_FR'}), + error(1, "Key/value 'toto' not found in selection field 'value'", + value=False)) + self.assertEqual( + self.import_(['value'], [['Wheee']], context={'lang': 'fr_FR'}), + ok(1)) + class test_m2o(ImporterCase): model_name = 'export.many2one' From e1c94f32212ed3d74b3aa84cc805fe614562e17a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 17:27:47 +0200 Subject: [PATCH 027/119] [TEST] importing m2m fields to an existing object with m2m values bzr revid: xmo@openerp.com-20120731152747-beg72fx2150upvay --- openerp/tests/test_import.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 7422ffd1a7a..c2534caa929 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -695,7 +695,28 @@ class test_m2m(ImporterCase): ValueError, self.import_, ['value'], [['wherethem2mhavenonames']]) -# TODO: O2M + def test_import_to_existing(self): + M2O_o = self.registry('export.many2many.other') + id1 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 3, 'str': 'record0'}) + id2 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 44, 'str': 'record1'}) + id3 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 84, 'str': 'record2'}) + id4 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 9, 'str': 'record3'}) + + xid = 'myxid' + self.assertEqual( + self.import_(['id', 'value/.id'], [[xid, '%d,%d' % (id1, id2)]]), + ok(1)) + self.assertEqual( + self.import_(['id', 'value/.id'], [[xid, '%d,%d' % (id3, id4)]]), + ok(1)) + + b = self.browse() + self.assertEqual(len(b), 1) + # TODO: replacement of existing m2m values is correct? + self.assertEqual(values(b[0].value), [84, 9]) + +class test_o2m(ImporterCase): + model_name = 'export.one2many' # function, related, reference: written to db as-is... # => function uses @type for value coercion/conversion From c4a60df691a0822258489105b71018ff6b3d73c6 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 18:36:31 +0200 Subject: [PATCH 028/119] [TEST] o2m db-id export and import bzr revid: xmo@openerp.com-20120731163631-n97nxph9gm2f6kdp --- openerp/tests/test_export.py | 17 +++++- openerp/tests/test_import.py | 113 ++++++++++++++++++++++++++++++++++- 2 files changed, 127 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index d60e5a09dcb..ed47b580365 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -376,6 +376,21 @@ class test_o2m(CreatorCase): u'4', u','.join(self.names) ]]) + def test_multiple_records_id(self): + export = self.export(self.commands, fields=['const', 'value/.id']) + O2M_c = self.registry('export.one2many.child') + ids = O2M_c.browse(self.cr, openerp.SUPERUSER_ID, + O2M_c.search(self.cr, openerp.SUPERUSER_ID, [])) + self.assertEqual( + export, + [ + ['4', str(ids[0].id)], + ['', str(ids[1].id)], + ['', str(ids[2].id)], + ['', str(ids[3].id)], + ['', str(ids[4].id)], + ]) + def test_multiple_records_with_name_before(self): self.assertEqual( self.export(self.commands, fields=['const', 'value', 'value/value']), @@ -383,7 +398,7 @@ class test_o2m(CreatorCase): u'4', u','.join(self.names), u'4' ]]) - def test_multiple_records_with_name_before(self): + def test_multiple_records_with_name_after(self): self.assertEqual( self.export(self.commands, fields=['const', 'value/value', 'value']), [ # completely ignores name_get request diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index c2534caa929..c23d74d080a 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -23,8 +23,8 @@ def error(row, message, record=None, **kwargs): "Line %d : %s" % (row, message), '') -def values(seq): - return [item['value'] for item in seq] +def values(seq, field='value'): + return [item[field] for item in seq] def setupModule(): openerp.tools.config['update'] = {'base': 1} @@ -718,5 +718,114 @@ class test_m2m(ImporterCase): class test_o2m(ImporterCase): model_name = 'export.one2many' + def test_single(self): + self.assertEqual( + self.import_(['const', 'value/value'], [ + ['5', '63'] + ]), + ok(1)) + + (b,) = self.browse() + self.assertEqual(b.const, 5) + self.assertEqual(values(b.value), [63]) + + def test_multicore(self): + self.assertEqual( + self.import_(['const', 'value/value'], [ + ['5', '63'], + ['6', '64'], + ]), + ok(2)) + + b1, b2 = self.browse() + self.assertEqual(b1.const, 5) + self.assertEqual(values(b1.value), [63]) + self.assertEqual(b2.const, 6) + self.assertEqual(values(b2.value), [64]) + + def test_multisub(self): + self.assertEqual( + self.import_(['const', 'value/value'], [ + ['5', '63'], + ['', '64'], + ['', '65'], + ['', '66'], + ]), + ok(4)) + + (b,) = self.browse() + self.assertEqual(values(b.value), [63, 64, 65, 66]) + + def test_multi_subfields(self): + self.assertEqual( + self.import_(['value/str', 'const', 'value/value'], [ + ['this', '5', '63'], + ['is', '', '64'], + ['the', '', '65'], + ['rhythm', '', '66'], + ]), + ok(4)) + + (b,) = self.browse() + self.assertEqual(values(b.value), [63, 64, 65, 66]) + self.assertEqual( + values(b.value, 'str'), + 'this is the rhythm'.split()) + + def test_link(self): + id1 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Bf', 'value': 109 + }) + id2 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Me', 'value': 262 + }) + + self.assertEqual( + self.import_(['const', 'value/.id'], [ + ['42', str(id1)], + ['', str(id2)], + ]), + ok(2)) + + # No record values alongside id => o2m resolution skipped altogether, + # creates 2 records + b, b1 = self.browse() + self.assertEqual(b.const, 42) + self.assertEqual(values(b.value), []) + self.assertEqual(b1.const, 4) + self.assertEqual(values(b1.value), []) + + def test_link_2(self): + O2M_c = self.registry('export.one2many.child') + id1 = O2M_c.create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Bf', 'value': 109 + }) + id2 = O2M_c.create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Me', 'value': 262 + }) + + self.assertEqual( + self.import_(['const', 'value/.id', 'value/value'], [ + ['42', str(id1), '1'], + ['', str(id2), '2'], + ]), + ok(2)) + + (b,) = self.browse() + # if an id (db or xid) is provided, expectations that objects are + # *already* linked and emits UPDATE (1, id, {}). + # Noid => CREATE (0, ?, {}) + # TODO: xid ignored aside from getting corresponding db id? + self.assertEqual(b.const, 42) + self.assertEqual(values(b.value), []) + + # FIXME: updates somebody else's records? + self.assertEqual( + O2M_c.read(self.cr, openerp.SUPERUSER_ID, id1), + {'id': id1, 'str': 'Bf', 'value': 1, 'parent_id': False}) + self.assertEqual( + O2M_c.read(self.cr, openerp.SUPERUSER_ID, id2), + {'id': id2, 'str': 'Me', 'value': 2, 'parent_id': False}) + # function, related, reference: written to db as-is... # => function uses @type for value coercion/conversion From 3f1ab77e2858659388426b5148b8c91c71c6bc3a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 1 Aug 2012 09:08:03 +0200 Subject: [PATCH 029/119] [TEST] o2m importing of multiple fields bzr revid: xmo@openerp.com-20120801070803-4sgvemuiifrhe61s --- openerp/tests/test_import.py | 66 +++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index c23d74d080a..08c52dd902c 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -772,6 +772,8 @@ class test_o2m(ImporterCase): values(b.value, 'str'), 'this is the rhythm'.split()) + # TODO: failing inline LINK_TO + def test_link(self): id1 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { 'str': 'Bf', 'value': 109 @@ -788,7 +790,8 @@ class test_o2m(ImporterCase): ok(2)) # No record values alongside id => o2m resolution skipped altogether, - # creates 2 records + # creates 2 records => remove/don't import columns sideshow columns, + # get completely different semantics b, b1 = self.browse() self.assertEqual(b.const, 42) self.assertEqual(values(b.value), []) @@ -827,5 +830,66 @@ class test_o2m(ImporterCase): O2M_c.read(self.cr, openerp.SUPERUSER_ID, id2), {'id': id2, 'str': 'Me', 'value': 2, 'parent_id': False}) + # TODO: name_get? + +class test_o2m_multiple(ImporterCase): + model_name = 'export.one2many.multiple' + + def test_multi_mixed(self): + self.assertEqual( + self.import_(['const', 'child1/value', 'child2/value'], [ + ['5', '11', '21'], + ['', '12', '22'], + ['', '13', '23'], + ['', '14', ''], + ]), + ok(4)) + # Oh yeah, that's the stuff + (b, b1, b2) = self.browse() + self.assertEqual(values(b.child1), [11]) + self.assertEqual(values(b.child2), [21]) + + self.assertEqual(values(b1.child1), [12]) + self.assertEqual(values(b1.child2), [22]) + + self.assertEqual(values(b2.child1), [13, 14]) + self.assertEqual(values(b2.child2), [23]) + + def test_multi(self): + self.assertEqual( + self.import_(['const', 'child1/value', 'child2/value'], [ + ['5', '11', '21'], + ['', '12', ''], + ['', '13', ''], + ['', '14', ''], + ['', '', '22'], + ['', '', '23'], + ]), + ok(6)) + # What the actual fuck? + (b, b1) = self.browse() + self.assertEqual(values(b.child1), [11, 12, 13, 14]) + self.assertEqual(values(b.child2), [21]) + self.assertEqual(values(b1.child2), [22, 23]) + + def test_multi_fullsplit(self): + self.assertEqual( + self.import_(['const', 'child1/value', 'child2/value'], [ + ['5', '11', ''], + ['', '12', ''], + ['', '13', ''], + ['', '14', ''], + ['', '', '21'], + ['', '', '22'], + ['', '', '23'], + ]), + ok(7)) + # oh wow + (b, b1) = self.browse() + self.assertEqual(b.const, 5) + self.assertEqual(values(b.child1), [11, 12, 13, 14]) + self.assertEqual(b1.const, 36) + self.assertEqual(values(b1.child2), [21, 22, 23]) + # function, related, reference: written to db as-is... # => function uses @type for value coercion/conversion From e3dc73880280fca68d43eb4352c8d56c3e47debc Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 1 Aug 2012 10:21:08 +0200 Subject: [PATCH 030/119] [TEST] failure of o2m relinking via inline id (as exported) bzr revid: xmo@openerp.com-20120801082108-vkind3ocwsqgd0bv --- openerp/tests/test_import.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 08c52dd902c..87e7ae9c350 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -772,7 +772,24 @@ class test_o2m(ImporterCase): values(b.value, 'str'), 'this is the rhythm'.split()) - # TODO: failing inline LINK_TO + def test_link_inline(self): + id1 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Bf', 'value': 109 + }) + id2 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Me', 'value': 262 + }) + + try: + self.import_(['const', 'value/.id'], [ + ['42', '%d,%d' % (id1, id2)] + ]) + except ValueError, e: + # should be Exception(Database ID doesn't exist: export.one2many.child : $id1,$id2) + self.assertIs(type(e), ValueError) + self.assertEqual( + e.args[0], + "invalid literal for int() with base 10: '%d,%d'" % (id1, id2)) def test_link(self): id1 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { @@ -830,8 +847,6 @@ class test_o2m(ImporterCase): O2M_c.read(self.cr, openerp.SUPERUSER_ID, id2), {'id': id2, 'str': 'Me', 'value': 2, 'parent_id': False}) - # TODO: name_get? - class test_o2m_multiple(ImporterCase): model_name = 'export.one2many.multiple' From 471ef96edf890014df766a0ee956fe190f4e5480 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 1 Aug 2012 11:44:34 +0200 Subject: [PATCH 031/119] [FIX] some notes and comments in import/export tests bzr revid: xmo@openerp.com-20120801094434-t23wa2343utnevh6 --- openerp/tests/test_export.py | 5 ++--- openerp/tests/test_import.py | 21 +++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index ed47b580365..e545fe24c61 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -218,6 +218,7 @@ class test_datetime(CreatorCase): .. note:: on the other hand, export uses user lang for name_get """ + # NOTE: ignores user timezone, always exports to UTC self.assertEqual( self.export('2011-11-07 21:05:48', context={'tz': 'Pacific/Norfolk'}), [[u'2011-11-07 21:05:48']]) @@ -260,7 +261,6 @@ class test_selection(CreatorCase): 'src': source, 'value': value }) - # FIXME: can't import an exported selection field label if lang != en_US self.assertEqual( self.export(2, context={'lang': 'fr_FR'}), [[u'Bar']]) @@ -274,8 +274,7 @@ class test_selection_function(CreatorCase): [[False]]) def test_value(self): - """ selection functions export the *value* itself - """ + # FIXME: selection functions export the *value* itself self.assertEqual( self.export(1), [[u'1']]) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 87e7ae9c350..de2553427e0 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -240,7 +240,7 @@ class test_integer_field(ImporterCase): def test_nonsense(self): - # dafuq? why does that one raise an error? + # FIXME: shit error reporting, exceptions half the time, messages the other half self.assertRaises( ValueError, self.import_, ['value'], [['zorglub']]) @@ -384,7 +384,7 @@ class test_selection(ImporterCase): ['Qux'], ['Bar'], ['Foo'], - [2], + ['2'], ]), ok(4)) self.assertEqual([3, 2, 1, 2], values(self.read())) @@ -408,6 +408,8 @@ class test_selection(ImporterCase): 'value': value }) + # FIXME: can't import an exported selection field label if lang != en_US + # (see test_export.test_selection.test_localized_export) self.assertEqual( self.import_(['value'], [ ['toto'], @@ -443,16 +445,14 @@ class test_selection_function(ImporterCase): ] def test_imported(self): - """ By what bloody magic does that thing work? - - => import uses fields_get, so translates import label (may or may not - be good news) *and* serializes the selection function to reverse - it: import does not actually know that the selection field uses a - function + """ import uses fields_get, so translates import label (may or may not + be good news) *and* serializes the selection function to reverse it: + import does not actually know that the selection field uses a function """ + # NOTE: conflict between a value and a label => ? self.assertEqual( self.import_(['value'], [ - [3], + ['3'], ["Grault"], ]), ok(2)) @@ -461,6 +461,8 @@ class test_selection_function(ImporterCase): values(self.read())) def test_translated(self): + """ Expects output of selection function returns translated labels + """ self.registry('res.lang').create(self.cr, openerp.SUPERUSER_ID, { 'name': u'Français', 'code': 'fr_FR', @@ -478,7 +480,6 @@ class test_selection_function(ImporterCase): 'src': source, 'value': value }) - # FIXME: Fucking hell self.assertEqual( self.import_(['value'], [ ['toto'], From 3364a85ba5904ed4bdd8fe9c61574e794c0ce9a7 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Wed, 1 Aug 2012 16:28:05 +0200 Subject: [PATCH 032/119] fixed padding in kanban tags and searchview tags bzr revid: mit@openerp.com-20120801142805-5drbpx6t3ks7p86s --- addons/web/static/src/css/base.css | 1 + addons/web/static/src/css/base.sass | 1 + addons/web_kanban/static/src/css/kanban.css | 5 ++++- addons/web_kanban/static/src/css/kanban.sass | 3 +++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 703683d4d96..a15d8ca4b22 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1592,6 +1592,7 @@ line-height: 8px; width: 12px; height: 12px; + padding-top: 1px; text-align: center; font-weight: bold; cursor: pointer; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 2a2d816241f..8723d9d6f2e 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1227,6 +1227,7 @@ $sheet-max-width: 860px line-height: 8px width: 12px height: 12px + padding-top: 1px text-align: center font-weight: bold cursor: pointer diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 5830cb33e0f..246475a2b7f 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -1,4 +1,3 @@ -@charset "utf-8"; .openerp .oe_kanban_view { background: url(/web/static/src/img/form_sheetbg.png); height: inherit; @@ -169,6 +168,10 @@ .openerp .oe_kanban_view .oe_kanban_details h4 { margin: 0 0 4px 0; } +.openerp .oe_kanban_view .oe_kanban_details .oe_tag { + display: inline-block; + margin: 0 0 2px 0; +} .openerp .oe_kanban_view .oe_kanban_record { position: relative; display: block; diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index 44b3251c8fb..ae387244024 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -176,6 +176,9 @@ color: #4c4c4c h4 margin: 0 0 4px 0 + .oe_tag + display: inline-block + margin: 0 0 2px 0 .oe_kanban_record position: relative display: block From ad585bf761e99e8037d2ff50ddc303ad0d4a8086 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Fri, 3 Aug 2012 17:37:58 +0200 Subject: [PATCH 033/119] Restyling of 'edit avatar' button bzr revid: mit@openerp.com-20120803153758-03jg3xuwyrh2e198 --- addons/web/static/src/css/base.css | 29 ++++++++----------- addons/web/static/src/css/base.sass | 43 +++++++++++++---------------- addons/web/static/src/xml/base.xml | 7 +---- 3 files changed, 32 insertions(+), 47 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 1aa6f8aa54a..41ba0ce4cc3 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -224,6 +224,9 @@ font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif; font-size: 13px; } +.openerp .ui-widget-content a { + color: #8a89ba; +} .openerp .ui-menu .ui-menu-item { margin: 0 8px 0 0; padding: 0 0 0 12px; @@ -487,9 +490,6 @@ .openerp .oe_button_box button { margin: 4px; } -.openerp .oe_avatar { - margin: 0 6px 15px 0; -} .openerp .oe_avatar > img { height: 90px; max-width: 100px; @@ -2199,20 +2199,14 @@ .openerp .oe_form_editable .oe_form .oe_form_field_datetime { width: 11.5em !important; } -.openerp .oe_hidden_input_file { - overflow: hidden; - position: relative; - display: inline-block; - width: 45px; - height: 30px; -} .openerp .oe_hidden_input_file input.oe_form_binary_file { z-index: 0; line-height: 0; font-size: 12px; position: absolute; top: 1px; - right: 10px; + left: 0; + right: 0; opacity: 0; filter: alpha(opacity=0); -ms-filter: "alpha(opacity=0)"; @@ -2228,15 +2222,16 @@ } .openerp .oe_form .oe_form_field_image .oe_form_field_image_controls { position: absolute; - white-space: nowrap; top: 1px; - padding: 3px 0 0 0; - margin: 0 1px; + padding: 4px; + width: 100%; display: none; - width: 99%; text-align: center; - background: url(/web/static/src/img/form_sheetbg.png); - border-bottom: 1px dotted black; + color: #eeeeee; + background: rgba(37, 37, 37, 0.9); + -moz-border-radius: 3px 3px 0 0; + -webkit-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 0eb4472164f..a2b4231b130 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -7,7 +7,7 @@ $tag-bg-dark: #8786b7 $tag-border: #afafb6 $tag-border-selected: #a6a6fe $hover-background: #f0f0fa -$colour4: #8a89ba +$link-color: #8a89ba $sheet-max-width: 860px // }}} // Mixins {{{ @@ -226,6 +226,8 @@ $sheet-max-width: 860px .ui-widget font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif font-size: 13px + .ui-widget-content a + color: $link-color .ui-menu .ui-menu-item margin: 0 8px 0 0 @@ -295,7 +297,7 @@ $sheet-max-width: 860px background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=) @include radius(0 0 2px 2px) a - color: #8A89BA + color: $link-color &:hover text-decoration: underline &:focus @@ -397,7 +399,6 @@ $sheet-max-width: 860px button margin: 4px .oe_avatar - margin: 0 6px 15px 0 > img height: 90px max-width: 100px @@ -412,7 +413,7 @@ $sheet-max-width: 860px display: none span @include reset() - color: #8A89BA + color: $link-color font-weight: bold &:hover text-decoration: underline @@ -886,7 +887,7 @@ $sheet-max-width: 860px .oe_secondary_menu_section font-weight: bold margin-left: 8px - color: $colour4 + color: $link-color .oe_secondary_submenu padding: 2px 0 8px 0 margin: 0 @@ -904,7 +905,7 @@ $sheet-max-width: 860px top: 1px right: 1px font-size: 10px - background: $colour4 + background: $link-color color: white padding: 2px 4px margin: 1px 6px 0 0 @@ -918,7 +919,7 @@ $sheet-max-width: 860px margin: 0px padding: 1px 4px .oe_active - background: $colour4 + background: $link-color border-top: 1px solid lightGray border-bottom: 1px solid lightGray text-shadow: 0 1px 1px rgba(0,0,0,0.2) @@ -927,12 +928,12 @@ $sheet-max-width: 860px color: white .oe_menu_label background: #eee - color: $colour4 + color: $link-color text-shadow: 0 1px 1px white @include box-shadow(0 1px 1px rgba(0, 0, 0, 0.2)) .oe_menu_counter background: #eee - color: #8a89ba + color: $link-color .oe_menu_toggler:before width: 0 height: 0 @@ -959,7 +960,7 @@ $sheet-max-width: 860px .oe_application width: 100% a - color: $colour4 + color: $link-color &:hover text-decoration: underline > div @@ -993,7 +994,7 @@ $sheet-max-width: 860px margin: 0 float: left a - color: $colour4 + color: $link-color .oe_button_group display: inline-block border: 1px solid #ababab @@ -1706,19 +1707,14 @@ $sheet-max-width: 860px * http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image */ .oe_hidden_input_file - overflow: hidden - position: relative - display: inline-block - width: 45px - height: 30px input.oe_form_binary_file z-index: 0 line-height: 0 font-size: 12px position: absolute - // Should be adjusted for all browsers top: 1px - right: 10px + left: 0 + right: 0 opacity: 0 filter: alpha(opacity = 0) -ms-filter: "alpha(opacity=0)" @@ -1733,15 +1729,14 @@ $sheet-max-width: 860px vertical-align: top .oe_form_field_image_controls position: absolute - white-space: nowrap top: 1px - padding: 3px 0 0 0 - margin: 0 1px + padding: 4px + width: 100% display: none - width: 99% text-align: center - background: url(/web/static/src/img/form_sheetbg.png) - border-bottom: 1px dotted black + color: #eee + background: rgba(37,37,37,0.9) + @include radius(3px 3px 0 0) @include box-sizing(border) &:hover .oe_form_field_image_controls display: block diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 014868eac90..37da66eb082 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1042,13 +1042,8 @@
- + Edit - +
- - + +
diff --git a/addons/account_analytic_default/account_analytic_default_view.xml b/addons/account_analytic_default/account_analytic_default_view.xml index 3e2ba0fe5f3..0bc0cd0c3bb 100644 --- a/addons/account_analytic_default/account_analytic_default_view.xml +++ b/addons/account_analytic_default/account_analytic_default_view.xml @@ -31,7 +31,7 @@ - + diff --git a/addons/account_asset/account_asset_view.xml b/addons/account_asset/account_asset_view.xml index cdc772ad65d..50c0443b02a 100644 --- a/addons/account_asset/account_asset_view.xml +++ b/addons/account_asset/account_asset_view.xml @@ -254,7 +254,7 @@ - + diff --git a/addons/account_coda/account_coda_view.xml b/addons/account_coda/account_coda_view.xml index 07f397c663f..b4b8e7796c2 100644 --- a/addons/account_coda/account_coda_view.xml +++ b/addons/account_coda/account_coda_view.xml @@ -249,7 +249,7 @@ - + diff --git a/addons/account_payment/account_payment_view.xml b/addons/account_payment/account_payment_view.xml index 5395bcafb17..dd9a78b261a 100644 --- a/addons/account_payment/account_payment_view.xml +++ b/addons/account_payment/account_payment_view.xml @@ -120,7 +120,7 @@
- + diff --git a/addons/analytic_user_function/analytic_user_function_view.xml b/addons/analytic_user_function/analytic_user_function_view.xml index 9c6e89d1bda..036fe7c29ff 100644 --- a/addons/analytic_user_function/analytic_user_function_view.xml +++ b/addons/analytic_user_function/analytic_user_function_view.xml @@ -90,7 +90,7 @@ - + @@ -114,7 +114,7 @@ - + diff --git a/addons/audittrail/audittrail_view.xml b/addons/audittrail/audittrail_view.xml index 65eca09a9a1..55c97760544 100644 --- a/addons/audittrail/audittrail_view.xml +++ b/addons/audittrail/audittrail_view.xml @@ -30,7 +30,7 @@ - + @@ -97,7 +97,7 @@ - + diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index d48795173ed..151d64f6370 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -34,7 +34,7 @@ - + @@ -222,7 +222,7 @@ - + diff --git a/addons/base_calendar/crm_meeting_view.xml b/addons/base_calendar/crm_meeting_view.xml index d3371ad602a..96a13c4bcc6 100644 --- a/addons/base_calendar/crm_meeting_view.xml +++ b/addons/base_calendar/crm_meeting_view.xml @@ -99,7 +99,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -277,7 +277,7 @@ - + diff --git a/addons/caldav/caldav_view.xml b/addons/caldav/caldav_view.xml index a45a2231738..eb89469ca19 100644 --- a/addons/caldav/caldav_view.xml +++ b/addons/caldav/caldav_view.xml @@ -10,7 +10,7 @@
- + @@ -84,7 +84,7 @@ - + diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index dd2ef7bd9e8..cf2466c4f13 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -166,15 +166,15 @@
- - + +
- + @@ -496,7 +496,7 @@ - + @@ -526,10 +526,10 @@
- +
- +
@@ -537,7 +537,7 @@
- + diff --git a/addons/crm/crm_report_view.xml b/addons/crm/crm_report_view.xml index eaed4564424..8d6f37340f5 100644 --- a/addons/crm/crm_report_view.xml +++ b/addons/crm/crm_report_view.xml @@ -120,7 +120,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -289,7 +289,7 @@ - + diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 6857f743e90..47ffffb35bf 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -90,7 +90,7 @@ - + diff --git a/addons/crm/wizard/crm_lead_to_opportunity_view.xml b/addons/crm/wizard/crm_lead_to_opportunity_view.xml index 5ad9ef1c9c9..6098fe0779a 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity_view.xml +++ b/addons/crm/wizard/crm_lead_to_opportunity_view.xml @@ -18,7 +18,7 @@ - + diff --git a/addons/crm/wizard/crm_merge_opportunities_view.xml b/addons/crm/wizard/crm_merge_opportunities_view.xml index 74973193f24..6bc4feff3b6 100644 --- a/addons/crm/wizard/crm_merge_opportunities_view.xml +++ b/addons/crm/wizard/crm_merge_opportunities_view.xml @@ -15,7 +15,7 @@ - + diff --git a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml index ccabcde88fe..92ecfa312e3 100644 --- a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml +++ b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml @@ -23,7 +23,7 @@ domain="[('object_id.model', '=', 'crm.phonecall')]" groups="base.group_no_one"/> - + diff --git a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml index 25f7dd0ba81..4fb54d731d4 100644 --- a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml +++ b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml @@ -15,7 +15,7 @@ - +
diff --git a/addons/crm_claim/crm_claim_view.xml b/addons/crm_claim/crm_claim_view.xml index 930c08408cd..da3d20424a7 100644 --- a/addons/crm_claim/crm_claim_view.xml +++ b/addons/crm_claim/crm_claim_view.xml @@ -131,7 +131,7 @@ - + diff --git a/addons/crm_helpdesk/crm_helpdesk_view.xml b/addons/crm_helpdesk/crm_helpdesk_view.xml index 0fb0cbf825f..c23ca566f9f 100644 --- a/addons/crm_helpdesk/crm_helpdesk_view.xml +++ b/addons/crm_helpdesk/crm_helpdesk_view.xml @@ -50,7 +50,7 @@ - + diff --git a/addons/crm_partner_assign/wizard/crm_forward_to_partner_view.xml b/addons/crm_partner_assign/wizard/crm_forward_to_partner_view.xml index e70a053305f..8c89297f8ec 100644 --- a/addons/crm_partner_assign/wizard/crm_forward_to_partner_view.xml +++ b/addons/crm_partner_assign/wizard/crm_forward_to_partner_view.xml @@ -16,7 +16,7 @@ + on_change="on_change_email(user_id)" options='{"no_open": true}'/> diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml index 8dab7756b91..3a9963c56c2 100644 --- a/addons/document/document_view.xml +++ b/addons/document/document_view.xml @@ -11,7 +11,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -235,7 +235,7 @@ - + diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml index f3a0c5b321e..02f996c6aac 100644 --- a/addons/event/event_view.xml +++ b/addons/event/event_view.xml @@ -477,7 +477,7 @@ - + diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index a989cd40d27..e1de861d807 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -49,7 +49,7 @@ - + @@ -67,7 +67,7 @@ - + diff --git a/addons/hr_evaluation/hr_evaluation_view.xml b/addons/hr_evaluation/hr_evaluation_view.xml index 6d54e6278b1..70a272009fc 100644 --- a/addons/hr_evaluation/hr_evaluation_view.xml +++ b/addons/hr_evaluation/hr_evaluation_view.xml @@ -180,7 +180,7 @@ - + @@ -289,7 +289,7 @@ - + diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index 4c28e711a79..c3a143d8370 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -154,7 +154,7 @@ - + diff --git a/openerp/addons/base/res/res_company_view.xml b/openerp/addons/base/res/res_company_view.xml index 8637da10f4c..30210c6ba46 100644 --- a/openerp/addons/base/res/res_company_view.xml +++ b/openerp/addons/base/res/res_company_view.xml @@ -51,10 +51,10 @@
- +
- +
diff --git a/openerp/addons/base/res/res_country_view.xml b/openerp/addons/base/res/res_country_view.xml index efb3b9eca06..3891e0782fe 100644 --- a/openerp/addons/base/res/res_country_view.xml +++ b/openerp/addons/base/res/res_country_view.xml @@ -71,7 +71,7 @@ - +
diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 9ea9658403a..4111d4cbc1f 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -133,10 +133,10 @@
- +
- + @@ -210,7 +210,7 @@ - + From 6d6e66cfc1758444c635e3e4abd55ca16e3e9dbe Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 6 Aug 2012 15:02:20 +0200 Subject: [PATCH 038/119] [IMP] fixme comment bzr revid: xmo@openerp.com-20120806130220-6s525hr0jolzenv9 --- openerp/tests/test_export.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index e545fe24c61..b8e33b418a6 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -577,6 +577,7 @@ class test_m2m(CreatorCase): self.assertEqual( self.export(self.commands, fields=['const', 'value']), [[ # FIXME: hardcoded comma, import uses config.csv_internal_sep + # resolution: remove configurable csv_internal_sep u'4', u','.join(self.names) ]]) From 346397530da50bcbb0bc8d3248212b7756a5ba13 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 6 Aug 2012 15:27:31 +0200 Subject: [PATCH 039/119] [FIX] weird dict.update calls bzr revid: xmo@openerp.com-20120806132731-ck4usrs99qlh1pq9 --- openerp/osv/orm.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 02a13a41dcb..31d68b64911 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2434,9 +2434,9 @@ class BaseModel(object): context=context) result_template = dict.fromkeys(aggregated_fields, False) - result_template.update({groupby + '_count':0}) + result_template[groupby + '_count'] = 0 if groupby_list and len(groupby_list) > 1: - result_template.update(__context={'group_by': groupby_list[1:]}) + result_template['__context'] = {'group_by': groupby_list[1:]} # Merge the left_side (current results as dicts) with the right_side (all # possible values as m2o pairs). Both lists are supposed to be using the @@ -2455,10 +2455,8 @@ class BaseModel(object): grouped_value = right_side[0] if not grouped_value in known_values: line = dict(result_template) - line.update({ - groupby: right_side, - '__domain': [(groupby,'=',grouped_value)] + domain, - }) + line[groupby] = right_side + line['__domain'] = [(groupby,'=',grouped_value)] + domain result.append(line) known_values[grouped_value] = line while read_group_result or all_groups: From 1bc2b532a5209174033d95c0d64ec66241411701 Mon Sep 17 00:00:00 2001 From: Vishmita Date: Tue, 7 Aug 2012 12:20:51 +0530 Subject: [PATCH 040/119] [FIX]Improve DB management bzr revid: vja@tinyerp.com-20120807065051-7r7qlvcwthz6m9ai --- addons/web/static/src/js/chrome.js | 25 +- addons/web/static/src/xml/base.xml | 436 +++++++++++++++++++---------- 2 files changed, 306 insertions(+), 155 deletions(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 45cbaf46bfb..5dab5c81d18 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -289,10 +289,10 @@ instance.web.Loading = instance.web.Widget.extend({ } } }); - instance.web.DatabaseManager = instance.web.Widget.extend({ init: function(parent) { this._super(parent); + self.$('.oe_topbar,.oe_leftbar').show(); this.unblockUIFunction = instance.web.unblockUI; $.validator.addMethod('matches', function (s, _, re) { return new RegExp(re).test(s); @@ -315,11 +315,18 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ }, do_render: function() { var self = this; - self.$element.html(QWeb.render("DatabaseManager", { widget : self })); - self.$element.find(".oe_database_manager_menu").tabs({ - show: function(event, ui) { - $('*[autofocus]:first', ui.panel).focus(); - } + self.$element.html(QWeb.render("DatabaseManager",{ widget : self })); + $('.oe_secondary_menus_container').replaceWith($('.datamanager_menu')); + $('.oe_user_menu_placeholder').replaceWith($('.oe_user_menu')); + $('ul.oe_secondary_submenu > li').bind('click', function (event) { + $(this).addClass('oe_active').siblings().removeClass('oe_active'); + var $new = $(this); + var submenu = $('ul.oe_secondary_submenu > li > a'); + submenu.each(function () { + $($(this).attr('href')).hide(); + }); + $($new.find('a').attr('href')).show(); + event.preventDefault(); }); self.$element.find("form[name=create_db_form]").validate({ submitHandler: self.do_create }); self.$element.find("form[name=drop_db_form]").validate({ submitHandler: self.do_drop }); @@ -336,7 +343,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ }, submitHandler: self.do_change_password }); - self.$element.find("#back_to_login").click(self.do_exit); + $('#back-to-login').click(self.do_exit); }, destroy: function () { this.$element.find('#db-create, #db-drop, #db-backup, #db-restore, #db-change-password, #back-to-login').unbind('click').end().empty(); @@ -407,7 +414,6 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ }; self.do_action(client_action); }); - }, do_drop: function(form) { var self = this; @@ -490,7 +496,8 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ }); }, do_exit: function () { - this.do_action("login"); + this.do_action('reload'); + //this.do_action('login'); } }); instance.web.client_actions.add("database_manager", "instance.web.DatabaseManager"); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 601fe165f81..dc900d2c0c0 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -122,153 +122,297 @@
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CREATE DATABASE
- -
-
-
- - - - - - - - - - - - - - - -
DROP DATABASE
- - -
-
-
- - - - - - - - - - - - - - - - -
BACKUP DATABASE
- - -
-
-
- - - - - - - - - - - - - - - - - - - -
RESTORE DATABASE
-
-
- - - - - - - - - - - - - - - - - - - -
CHANGE MASTER PASSWORD
-
-
+
+ +
+
Database Management
+ +
+
+
+
+
+ + + + + + + +
+

+ CREATE DATABASE +

+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
+
+ + + + +
+
+
From b1b78021b218700b84d4297bb2525e4ce1e86ccc Mon Sep 17 00:00:00 2001 From: "Kunal Chavda (OpenERP)" Date: Tue, 7 Aug 2012 13:03:39 +0530 Subject: [PATCH 041/119] [FIX]Minor problem of showing change password dialog box's button text. bzr revid: kch@tinyerp.com-20120807073339-1w585w2pyggd9wzn --- addons/web/static/src/js/chrome.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 45cbaf46bfb..9af03cd8eb2 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -109,7 +109,7 @@ instance.web.Dialog = instance.web.Widget.extend({ } else if (val.slice(-1) == "%") { return Math.round(available_size / 100 * parseInt(val.slice(0, -1), 10)); } else { - return parseInt(val, 10); + return parseInt(val, 10); } }, renderElement: function() { @@ -123,7 +123,7 @@ instance.web.Dialog = instance.web.Widget.extend({ if (! this.dialog_inited) this.init_dialog(); var o = this.get_options(options); - instance.web.dialog(this.$element, o).dialog('open'); + instance.web.dialog(this.$element, o).dialog('open'); if (o.height === 'auto' && o.max_height) { this.$element.css({ 'max-height': o.max_height, 'overflow-y': 'auto' }); } @@ -627,7 +627,7 @@ instance.web.Reload = instance.web.Widget.extend({ var search = "?ts=" + timestamp; if (l.search) { search = l.search + "&ts=" + timestamp; - } + } var hash = l.hash; if (this.menu_id) { hash = "#menu_id=" + this.menu_id; @@ -855,7 +855,7 @@ instance.web.UserMenu = instance.web.Widget.extend({ modal: true, title: error.title, buttons: [ - {text: _("Ok"), click: function() { $(this).dialog("close"); }} + {text: _t("Ok"), click: function() { $(this).dialog("close"); }} ] }).html(error.error); }, From 4c1baa3e9bd77cbd1785dd39622ae3d73d1342af Mon Sep 17 00:00:00 2001 From: Vishmita Date: Tue, 7 Aug 2012 15:10:55 +0530 Subject: [PATCH 042/119] [FIX]Improve code bzr revid: vja@tinyerp.com-20120807094055-31ybiab12idv3o62 --- addons/web/static/src/js/chrome.js | 12 +++++++----- addons/web/static/src/xml/base.xml | 10 +++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 5dab5c81d18..ca0051a4d82 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -292,7 +292,6 @@ instance.web.Loading = instance.web.Widget.extend({ instance.web.DatabaseManager = instance.web.Widget.extend({ init: function(parent) { this._super(parent); - self.$('.oe_topbar,.oe_leftbar').show(); this.unblockUIFunction = instance.web.unblockUI; $.validator.addMethod('matches', function (s, _, re) { return new RegExp(re).test(s); @@ -315,9 +314,10 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ }, do_render: function() { var self = this; + $('.oe_topbar,.oe_leftbar').show(); self.$element.html(QWeb.render("DatabaseManager",{ widget : self })); - $('.oe_secondary_menus_container').replaceWith($('.datamanager_menu')); - $('.oe_user_menu_placeholder').replaceWith($('.oe_user_menu')); + $('.oe_secondary_menus_container').append($('.datamanager_menu')); + $('.oe_user_menu_placeholder').append($('.oe_user_menu')); $('ul.oe_secondary_submenu > li').bind('click', function (event) { $(this).addClass('oe_active').siblings().removeClass('oe_active'); var $new = $(this); @@ -496,8 +496,10 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ }); }, do_exit: function () { - this.do_action('reload'); - //this.do_action('login'); + this.$element.remove(); + $('.oe_secondary_menus_container,.oe_user_menu_placeholder').empty(); + $('.oe_topbar,.oe_leftbar').hide(); + this.do_action('login'); } }); instance.web.client_actions.add("database_manager", "instance.web.DatabaseManager"); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index dc900d2c0c0..88f7adfafb8 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -131,11 +131,11 @@
Database Management
From 10b26a9edffd209a82487131e636fbb2ee43f18b Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Tue, 7 Aug 2012 16:32:57 +0530 Subject: [PATCH 043/119] [IMP] account, edi : Removed 'footer' boolean from 'res.partner.bank' because 'rml_footer2' is now fully editable since server revision 4198 and its related changes. bzr revid: mdi@tinyerp.com-20120807110257-sy98hpliumlhtwis --- addons/account/account_bank_view.xml | 3 --- addons/account/res_config.py | 3 --- addons/account/res_config_view.xml | 2 -- addons/account/test/account_customer_invoice.yml | 1 - addons/edi/models/res_company.py | 2 +- 5 files changed, 1 insertion(+), 10 deletions(-) diff --git a/addons/account/account_bank_view.xml b/addons/account/account_bank_view.xml index 4b3436c8a51..388a8e5a64b 100644 --- a/addons/account/account_bank_view.xml +++ b/addons/account/account_bank_view.xml @@ -45,9 +45,6 @@

Click to setup a new bank account. -

- Configure your company's bank account and select those that must - appear on the report footer.

If you use the accounting application of OpenERP, journals and accounts will be created automatically based on these data. diff --git a/addons/account/res_config.py b/addons/account/res_config.py index 658f87962ff..8e50493b063 100644 --- a/addons/account/res_config.py +++ b/addons/account/res_config.py @@ -43,8 +43,6 @@ class account_config_settings(osv.osv_memory): string='Default company currency', help="Main currency of the company."), 'paypal_account': fields.related('company_id', 'paypal_account', type='char', size=128, string='Paypal account', help="Paypal account (email) for receiving online payments (credit card, etc.) If you set a paypal account, the customer will be able to pay your invoices or quotations with a button \"Pay with Paypal\" in automated emails or through the OpenERP portal."), - 'company_footer': fields.related('company_id', 'rml_footer2', type='char', size=250, readonly=True, - string='Bank accounts on reports will display as followed', help="Bank accounts as printed in the footer of each customer document. This is for information purpose only, you should configure these bank accounts through the above button \"Configure Bank Accounts\"."), 'has_chart_of_accounts': fields.boolean('Company has a chart of accounts'), 'chart_template_id': fields.many2one('account.chart.template', 'Template', domain="[('visible','=', True)]"), @@ -154,7 +152,6 @@ class account_config_settings(osv.osv_memory): 'expects_chart_of_accounts': company.expects_chart_of_accounts, 'currency_id': company.currency_id.id, 'paypal_account': company.paypal_account, - 'company_footer': company.rml_footer2, 'has_chart_of_accounts': has_chart_of_accounts, 'has_fiscal_year': bool(fiscalyear_count), 'chart_template_id': False, diff --git a/addons/account/res_config_view.xml b/addons/account/res_config_view.xml index d19a5dc5f98..100dd7fb22d 100644 --- a/addons/account/res_config_view.xml +++ b/addons/account/res_config_view.xml @@ -225,8 +225,6 @@ icon="gtk-go-forward" type="action" class="oe_inline oe_link"/> -

diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 199dd5f712d..41fdbe6a53a 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -549,7 +549,7 @@ 7 7 - + From 528c12774d59c9017de157d85373b8c43b29eede Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 14:54:19 +0200 Subject: [PATCH 067/119] [IMP] kanban_image uses json for id and is now tolerant to m2o id's bzr revid: fme@openerp.com-20120809125419-j4l0063qyy6antqu --- addons/web/controllers/main.py | 8 +++----- addons/web_kanban/static/src/js/kanban.js | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 7e79fd9d2ea..c5a5cfec5b6 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1373,15 +1373,13 @@ class Binary(openerpweb.Controller): retag = hashed_session try: + id = simplejson.loads(id) + if type(id) is list: + id = id[0] # m2o if not id: res = Model.default_get([field], context).get(field) image_data = base64.b64decode(res) else: - try: - id = int(id) - except (ValueError): - # objects might use virtual ids as string - pass res = Model.read([id], [last_update, field], context)[0] retag = hashlib.md5(res.get(last_update)).hexdigest() image_data = base64.b64decode(res.get(field)) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index ef273ea9ea1..b4cffcba2d5 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -757,6 +757,7 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ } else if (this.record[field] && ! this.record[field].value) { url = "/web/static/src/img/placeholder.png"; } else { + id = escape(JSON.stringify(id)); url = instance.connection.prefix + '/web/binary/image?session_id=' + this.session.session_id + '&model=' + model + '&field=' + field + '&id=' + id; if (cache !== undefined) { // Set the cache duration in seconds. From b9286a8eebf07b3f8e07de76666a5b092f6052d4 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 9 Aug 2012 15:11:41 +0200 Subject: [PATCH 068/119] page work in progress model bzr revid: al@openerp.com-20120809131141-m9xqa24u96sbgna7 --- addons/document_page/document_page.py | 107 +++++++++--------- addons/document_page/wizard/__init__.py | 2 - .../wizard/document_page_make_index.py | 83 -------------- .../wizard/document_page_make_index_view.xml | 42 ------- .../wizard/document_page_open.py | 65 ----------- .../wizard/document_page_open_view.xml | 34 ------ 6 files changed, 51 insertions(+), 282 deletions(-) delete mode 100644 addons/document_page/wizard/document_page_make_index.py delete mode 100644 addons/document_page/wizard/document_page_make_index_view.xml delete mode 100644 addons/document_page/wizard/document_page_open.py delete mode 100644 addons/document_page/wizard/document_page_open_view.xml diff --git a/addons/document_page/document_page.py b/addons/document_page/document_page.py index 3af2417b651..dbba0fc00d7 100644 --- a/addons/document_page/document_page.py +++ b/addons/document_page/document_page.py @@ -29,72 +29,72 @@ class document_page(osv.osv): _description = "Document Page" _order = 'name' - _columns = { - 'name': fields.char('Title', size=256, select=True, required=True), - 'type':fields.selection([('normal','Content Page'), ('index','Index Page')], 'Type', help="Define the type of the document"), + def _get_page_index(self, cr, uid, page): + index == [] + for subpage in page.child_ids: + index += ["
  • "+ self._get_page_index(cr, uid, subpage) +"
  • "] + if index: + index = "
      " + "".join(index) + "
    " + else: + index = page.title - 'parent_id': fields.many2one('document.page', 'Section', select=1 , ondelete='set null'), + def _get_display_content(self, cr, uid, ids, name, args, context=None): + res = {} + for page in self.browse(cr, uid, ids, context=context): + if parent.type == "index": + content = self._get_page_index(cr, uid, page) + else: + content = page.content + res[page.id] = { + 'display_content': content + } + return res + + _columns = { + 'name': fields.char('Title', required=True), + 'type':fields.selection([('content','Content Page'), ('index','Index Page')], 'Type', help="Page type"), + + 'parent_id': fields.many2one('document.page', 'Section'), 'child_ids': fields.one2many('document.page', 'parent_id', 'Children'), - 'display_content': fields.text('Displayed Content'), 'content': fields.text("Content"), + 'display_content': fields.function(_get_display_content, string='Displayed Content', type='text'), + 'history_ids': fields.one2many('document.page.history', 'document_id', 'History'), 'menu_id': fields.many2one('ir.ui.menu', "Menu", readonly=True), 'create_date': fields.datetime("Created on", select=True, readonly=True), + 'create_uid': fields.many2one('res.users', 'Author', select=True, readonly=True), 'write_date': fields.datetime("Modification Date", select=True, readonly=True), 'write_uid': fields.many2one('res.users', "Last Contributor", select=True), - 'create_uid': fields.many2one('res.users', 'Author', select=True, readonly=True), - - 'index': fields.char('Index', size=256), - 'minor_edit': fields.boolean('Minor edit', select=True), - 'edit_summary': fields.char('Summary', size=256), - 'tags': fields.char('Keywords', size=1024, select=True), - } _defaults = { - 'type':'normal', + 'type':'content', } def onchange_parent_id(self, cr, uid, ids, parent_id, content, context=None): - if (not parent_id) or content: - return {} - grp = self.pool.get('document.page.type').browse(cr, uid, parent_id, context=context) - template = grp.content_template - try: - s[-1] = str(int(s[-1])+1) - except: - pass - return { - 'value':{ - 'content': template, - } - } - - def onchange_content(self, cr, uid, ids, content, context=None): - if content: - return {'value':{'summary': content}} - return {} - - def copy_data(self, cr, uid, id, default=None, context=None): - return super(document_page2, self).copy_data(cr, uid, id, {'document_id': False}, context) + res = {} + if parent_id and not content: + parent = self.browse(cr, uid, parent_id, context=context) + if parent.type == "content": + res['value'] = { + 'content': parent.content_template, + } + return res def create_history(self, cr, uid, ids, vals, context=None): - history_id = False - history = self.pool.get('document.page.history') - if vals.get('content'): - res = { - 'content': vals.get('content', ''), - 'write_uid': uid, - 'document_id': ids[0], - 'summary':vals.get('edit_summary', '') - } - history_id = history.create(cr, uid, res) - return history_id + for i in ids: + history = self.pool.get('document.page.history') + if vals.get('content'): + res = { + 'content': vals.get('content', ''), + 'page_id': i, + } + history.create(cr, uid, res) def create(self, cr, uid, vals, context=None): - document_id = super(document_page2, self).create(cr, uid, vals, context) - self.create_history(cr, uid, [document_id], vals, context) + page_id = super(document_page2, self).create(cr, uid, vals, context) + self.create_history(cr, uid, [page_id], vals, context) return document_id def write(self, cr, uid, ids, vals, context=None): @@ -102,23 +102,18 @@ class document_page(osv.osv): self.create_history(cr, uid, ids, vals, context) return result - class document_page_history(osv.osv): _name = "document.page.history" _description = "Document Page History" - _rec_name = "summary" _order = 'id DESC' + _rec_name = "create_date" _columns = { - 'document_id': fields.many2one('document.page', 'Document Page', select=True) + 'page_id': fields.many2one('document.page', 'Page'), 'summary': fields.char('Summary', size=256, select=True), 'content': fields.text("Content"), - 'create_date': fields.datetime("Date", select=True), - 'write_uid': fields.many2one('res.users', "Modify By", select=True), - } - - _defaults = { - 'write_uid': lambda obj, cr, uid, context: uid, + 'create_date': fields.datetime("Date"), + 'create_uid': fields.many2one('res.users', "Modified By"), } def getDiff(self, cr, uid, v1, v2, context=None): diff --git a/addons/document_page/wizard/__init__.py b/addons/document_page/wizard/__init__.py index a110b8175af..e24534647f4 100644 --- a/addons/document_page/wizard/__init__.py +++ b/addons/document_page/wizard/__init__.py @@ -19,8 +19,6 @@ # ############################################################################## -import document_page_page_open -import document_page_make_index import document_page_create_menu import document_page_show_diff diff --git a/addons/document_page/wizard/document_page_make_index.py b/addons/document_page/wizard/document_page_make_index.py deleted file mode 100644 index 801ea802b3d..00000000000 --- a/addons/document_page/wizard/document_page_make_index.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRl (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public license as -# published by the Free Software Foundation, either version 3 of the -# license, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABIlITY or FITNESS FOR A PARTICUlAR PURPOSE. See the -# GNU Affero General Public license for more details. -# -# You should have received a copy of the GNU Affero General Public license -# along with this program. If not, see . -# -############################################################################## - -from osv import fields, osv -from tools.translate import _ - -class document_page_make_index(osv.osv_memory): - """ Create Index For Selected Page """ - - _name = "document.page.make.index" - _description = "Create Index" - - def document_page_do_index(self, cr, uid, ids, context=None): - - """ Makes Index according to page hierarchy - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: list of document page index’s IDs - - """ - if context is None: - context = {} - data = context and context.get('active_ids', []) or [] - print 'data',tuple(data) - if not data: - return {'type': 'ir.actions.act_window_close'} - - for index_obj in self.browse(cr, uid, ids, context=context): - document_obj = self.pool.get('document.page') - if not ids: - return {} - cr.execute('select id,index,parent_id from document_page where id in %s '\ - 'and type=%s' ,(tuple(data),'index',)) - lst_all = cr.fetchall() - ls_p = [] - ls_np =[] - s_ids = {} - p_ids = {} - for m in lst_all: - if m[2] == None: - ls_np.append(m) - if m[1]: - s_ids[int(m[1])] = ls_np.index(m)+1 - if s_ids: - document_obj.write(cr, uid, m[0], {'index':s_ids[int(m[1])]}) - if m[2]: - ls_p.append(m) - if m[1]: - dict = {} - for l in ls_p: - if l[2] not in dict: - dict[l[2]] = [] - dict[l[2]].append(l) - else: - dict[l[2]].append(l) - - p_ids[m[1]] = str(m[2]) + "." + str(dict[m[2]].index(m)+1) - if p_ids: - document_obj.write(cr, uid, m[0], {'index':p_ids[m[1]]}) - - return {'type': 'ir.actions.act_window_close'} - -document_page_make_index() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document_page/wizard/document_page_make_index_view.xml b/addons/document_page/wizard/document_page_make_index_view.xml deleted file mode 100644 index 70148850fbf..00000000000 --- a/addons/document_page/wizard/document_page_make_index_view.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - Create Index - document.page.make.index - form - -
    -
    -
    - - - - - Create Index - ir.actions.act_window - document.page.make.index - form - form - new - - - - - - -
    -
    diff --git a/addons/document_page/wizard/document_page_open.py b/addons/document_page/wizard/document_page_open.py deleted file mode 100644 index 6f6b5d3ee8a..00000000000 --- a/addons/document_page/wizard/document_page_open.py +++ /dev/null @@ -1,65 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from osv import osv - -class document_page_page_open(osv.osv_memory): - """ wizard Open Page """ - - _name = "document.page.page.open" - _description = "wiz open page" - - def open_document_page(self, cr, uid, ids, context=None): - - """ Opens Wiki Page of Group - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of open wiki page’s IDs - @return: dictionay of open wiki window on give group id - """ - if context is None: - context = {} - group_ids = context.get('active_ids', []) - for group in self.pool.get('document.page.type').browse(cr, uid, group_ids, context=context): - value = { - 'name': 'Document Page', - 'view_type': 'form', - 'view_mode': 'form,tree', - 'res_model': 'document.page', - 'view_id': False, - 'type': 'ir.actions.act_window', - } - if group.method == 'page': - value['res_id'] = group.home.id - elif group.method == 'list': - value['view_type'] = 'form' - value['view_mode'] = 'tree,form' - elif group.method == 'tree': - view_id = self.pool.get('ir.ui.view').search(cr, uid, [('name', '=', 'document.page.tree.children')]) - value['view_id'] = view_id - value['domain'] = [('parent_id', '=', False)] - value['view_type'] = 'tree' - - return value - -document_page_page_open() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document_page/wizard/document_page_open_view.xml b/addons/document_page/wizard/document_page_open_view.xml deleted file mode 100644 index 31df405b921..00000000000 --- a/addons/document_page/wizard/document_page_open_view.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - Open Page - document.page.page.open - form - -
    -
    -
    - - - - - Open Page - ir.actions.act_window - document.page.page.open - form - form - new - -
    -
    From 9a5f47946df8f42badd12bf6169c04ba80ab0e4b Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 9 Aug 2012 15:29:01 +0200 Subject: [PATCH 069/119] page work in progress view bzr revid: al@openerp.com-20120809132901-0zjj2zeji8bsk962 --- addons/document_page/__openerp__.py | 8 +- addons/document_page/document_page_view.xml | 184 ++++---------------- 2 files changed, 32 insertions(+), 160 deletions(-) diff --git a/addons/document_page/__openerp__.py b/addons/document_page/__openerp__.py index f9cb3c58331..80e236f3c63 100644 --- a/addons/document_page/__openerp__.py +++ b/addons/document_page/__openerp__.py @@ -35,16 +35,10 @@ Keep track of Wiki groups, pages, and history. 'web_depends': ['widget_document_page'], 'init_xml': [], 'update_xml': [ - 'data/document_page_sale_faq_data.xml', - 'wizard/document_page_page_open_view.xml', 'wizard/document_page_create_menu_view.xml', 'wizard/document_page_show_diff_view.xml', - 'wizard/document_page_make_index_view.xml', 'document_page_view.xml', 'document_page_sequence.xml', - 'document_page_sale_faq_view.xml', - 'data/document_page_quickstart.xml', - 'data/document_page_main.xml', 'security/document_page_security.xml', 'security/ir.model.access.csv' ], @@ -55,7 +49,7 @@ Keep track of Wiki groups, pages, and history. 'auto_install': False, 'certificate': '0086363630317', 'web': True, - 'images': ['images/create_index.jpeg','images/page_history.jpeg','images/document_page_groups.jpeg','images/document_page_pages.jpeg','document_page_type_internal_faq.jpeg','page_history.jpeg','sale_document.jpeg','wiki_pages.jpeg','wiki_pages_quality_manual.jpeg'], + 'images': [], 'js': ['static/src/lib/wiky/wiky.js', 'static/src/js/document_page.js'], 'css' : [ "static/src/css/document_page.css"], diff --git a/addons/document_page/document_page_view.xml b/addons/document_page/document_page_view.xml index 74d6f0b8719..023dab44013 100644 --- a/addons/document_page/document_page_view.xml +++ b/addons/document_page/document_page_view.xml @@ -1,95 +1,12 @@ - + + - - - - - - - - document.page.type.tree - document.page.type - tree - - - - - - - - - - document_page_type.form - document.page.type - form - -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    - -
    -
    -
    - - - - Document Type - document.page.type - form - tree,form - - - - - - Document Type - document.page.type - tree - - - + - document.page.tree.children + document.page.tree document.page tree child_ids @@ -97,30 +14,25 @@ - - - + - document.page.tree + document.page.list document.page tree - - - - + + - document.page.form @@ -129,47 +41,31 @@
    -
    -
    -
    - document.page.search @@ -177,9 +73,7 @@ search - + @@ -196,7 +90,6 @@ - Document Pages @@ -205,23 +98,9 @@ tree,form - With Wiki Pages you can share ideas and questions with your coworkers. You can create a new document that can be linked to one or several applications (CRM, Sales, etc.). You can use keywords to ease access to your wiki pages. There is a basic wiki editing for text format. - - - - - - - Pages Waiting Review - document.page - form - tree,form - - [('review','=',True)] - + Create web pages + @@ -237,7 +116,6 @@ - document.page.history.form @@ -247,15 +125,15 @@
    From 2043809be494efb256a6a8d0147a49a614b099c8 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Thu, 9 Aug 2012 15:46:12 +0200 Subject: [PATCH 070/119] Restyling of the dashboard bzr revid: mit@openerp.com-20120809134612-lt4l62nzezlfbkgq --- addons/web/static/src/css/base.css | 2 +- addons/web/static/src/css/base.sass | 2 +- .../static/src/css/dashboard.css | 2810 +++++++++++++++-- .../static/src/css/dashboard.sass | 74 + .../web_dashboard/static/src/js/dashboard.js | 20 +- .../static/src/xml/web_dashboard.xml | 14 +- 6 files changed, 2655 insertions(+), 267 deletions(-) create mode 100644 addons/web_dashboard/static/src/css/dashboard.sass diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 41ba0ce4cc3..1519478ee89 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1881,7 +1881,7 @@ width: auto; } .openerp .oe_form_nosheet { - margin: 20px; + margin: 8px; } .openerp .oe_form_nosheet > header { margin-top: -20px; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index a2b4231b130..ddee25c3105 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1450,7 +1450,7 @@ $sheet-max-width: 860px .oe_form .oe_form_field_date width: auto .oe_form_nosheet - margin: 20px + margin: 8px .oe_form_nosheet > header margin-top: -20px margin-left: -20px diff --git a/addons/web_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css index 74410b3e937..d132489d4b9 100644 --- a/addons/web_dashboard/static/src/css/dashboard.css +++ b/addons/web_dashboard/static/src/css/dashboard.css @@ -1,309 +1,2623 @@ -.openerp table.oe_dashboard { - width: 100%; -} -.openerp .oe_dashboard_links { - text-align: right; - margin: 0 4px 6px 0; -} -.openerp .oe_dashboard_action { - margin: 0 0.5em 0.5em 0; - padding: 0px; - background-color: white; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; +@charset "UTF-8"; +@font-face { + font-family: "mnmliconsRegular"; + src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); + src: url("/web/static/src/font/mnmliconsv21-webfont.woff") format("woff"); + src: url("/web/static/src/font/mnmliconsv21-webfont.ttf") format("truetype"); + src: url("/web/static/src/font/mnmliconsv21-webfont.svg") format("svg") active; + font-weight: normal; + font-style: normal; } -.openerp .oe_dashboard_action .oe_dashboard_action_header { - font-size: 85%; - font-weight: bold; - text-transform: uppercase; - text-indent: 10px; - vertical-align: middle; - border-bottom: 1px solid #e5e5e5; - background: white url("/web/static/src/img/box-a-header-a.gif") 0% 0% repeat-x; +@font-face { + font-family: "EntypoRegular"; + src: url("/web/static/src/font/entypo-webfont.eot") format("eot"); + src: url("/web/static/src/font/entypo-webfont.eot?#iefix") format("embedded-opentype"); + src: url("/web/static/src/font/entypo-webfont.woff") format("woff"); + src: url("/web/static/src/font/entypo-webfont.ttf") format("truetype"); + src: url("/web/static/src/font/entypo-webfont.svg") format("svg") active; + font-weight: normal; + font-style: normal; } -.openerp h2.oe_dashboard_action_header { - margin: 0; - padding:4px 4px; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -.openerp h2.oe_dashboard_action_header_empty { - padding-top: 0; - padding-bottom: 2px; +@-moz-keyframes bounce { + 0% { + -moz-transform: scale(0); + opacity: 0; + } + + 50% { + -moz-transform: scale(1.3); + opacity: 0.4; + } + + 75% { + -moz-transform: scale(0.9); + opacity: 0.7; + } + + 100% { + -moz-transform: scale(1); + opacity: 1; + } } -.openerp .oe_dashboard_button_create { - margin-left: 4px; - padding: 0 4px 0 4px; - height: 16px !important; +@-webkit-keyframes bounce { + 0% { + -webkit-transform: scale(0); + opacity: 0; + } + + 50% { + -webkit-transform: scale(1.3); + opacity: 0.4; + } + + 75% { + -webkit-transform: scale(0.9); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + opacity: 1; + } } -.openerp a.oe_dashboard_action_rename { - float: left; - padding-right: 4px; - position: relative; - top: 1px; -} -.openerp .oe_dashboard_action_input { - height: 16px; - position: relative; - top: 2px; +.openerp.openerp_webclient_container { + height: 100%; + position: relative; } -.openerp .oe_dashboard_action .oe_dashboard_action_header:hover { - cursor: move; +.openerp { + padding: 0; + margin: 0; + font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif; + color: #4c4c4c; + font-size: 13px; + background: white; + /* http://www.quirksmode.org/dom/inputfile.html + * http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image + */ } -.openerp .oe_dashboard_action .ui-icon { - cursor: pointer; +.openerp a { + text-decoration: none; } -.openerp .oe_dashboard_action .ui-icon:hover { - background-color: #ccc; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; +.openerp table { + padding: 0; + border-collapse: collapse; } - -.openerp .oe_dashboard_action .oe_dashboard_action_header .ui-icon { - float: right; +.openerp thead { + font-weight: bold; + background-color: #f0f0f0; } - -.openerp .oe_dashboard .ui-sortable-placeholder { - border: 1px dotted black; - visibility: visible !important; - height: 50px !important; +.openerp thead th { + border-right: 1px dotted #afafb6; } - -.openerp .oe_dashboard .ui-sortable-placeholder * { - visibility: hidden; +.openerp thead th:last-child { + border-right: none; } - -/* Base overwriting */ -.openerp .oe_dashboard .oe_list_content, .openerp .oe_dashboard .ui-widget-header { - border-right:none !important; - padding:0 3px; +.openerp th, .openerp td { + padding: 0; + text-align: left; } - -/* Layouts */ -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_0 { - width: 100%; +.openerp th { + font-weight: bold; + vertical-align: middle; } -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_1, -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_2 { - display: none; +.openerp td { + vertical-align: top; } - -.openerp .oe_dashboard_layout_1-1 .oe_dashboard_column { - width: 50%; +.openerp .zebra tbody tr:nth-child(odd) td { + background-color: #f0f0fa; + background-color: #f0f0fa; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6); } -.openerp .oe_dashboard_layout_1-1 .oe_dashboard_column.index_2 { - display: none; +.openerp .zebra tbody tr:hover td { + background-color: #eeeeee; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dedede)); + background-image: -webkit-linear-gradient(top, #eeeeee, #dedede); + background-image: -moz-linear-gradient(top, #eeeeee, #dedede); + background-image: -ms-linear-gradient(top, #eeeeee, #dedede); + background-image: -o-linear-gradient(top, #eeeeee, #dedede); + background-image: linear-gradient(to bottom, #eeeeee, #dedede); } - -.openerp .oe_dashboard_layout_1-1-1 .oe_dashboard_column { - width: 33%; +.openerp ul, .openerp li, .openerp ol { + margin: 0; + padding: 0; } - -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_0 { - width: 70%; +.openerp li { + list-style-type: none; } -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_1 { - width: 30%; +.openerp input, .openerp textarea, .openerp select { + padding: 2px 4px; + border: 1px solid #cccccc; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: white; } -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_2 { - display: none; +.openerp img { + vertical-align: middle; } - -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_0 { - width: 30%; +.openerp h4 { + margin: 4px 0; } -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_1 { - width: 70%; +.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button { + display: inline-block; + border: 1px solid #ababab; + color: #404040; + margin: 0; + padding: 3px 12px; + font-size: 13px; + text-align: center; + background-color: #efefef; + background-image: -webkit-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + background-image: -webkit-linear-gradient(top, #efefef, #d8d8d8); + background-image: -moz-linear-gradient(top, #efefef, #d8d8d8); + background-image: -ms-linear-gradient(top, #efefef, #d8d8d8); + background-image: -o-linear-gradient(top, #efefef, #d8d8d8); + background-image: linear-gradient(to bottom, #efefef, #d8d8d8); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); + -webkit-font-smoothing: antialiased; + outline: none; } -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_2 { - display: none; +.openerp a.button:hover, .openerp button:hover, .openerp input[type='submit']:hover, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover { + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -moz-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -ms-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: linear-gradient(to bottom, #f6f6f6, #e3e3e3); + cursor: pointer; + background-position: 0; } - - -.openerp .oe_dashboard_layout_selector { - overflow: auto; - padding: 10px; +.openerp a.button:focus, .openerp button:focus, .openerp input[type='submit']:focus, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-focus { + border: 1px solid #80bfff; + background-position: 0; + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -moz-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -ms-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: linear-gradient(to bottom, #f6f6f6, #e3e3e3); + -moz-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; } - -.openerp .oe_dashboard_layout_selector ul { - margin: 0; - padding: 0; +.openerp a.button:active, .openerp a.button.active, .openerp button:active, .openerp button.active, .openerp input[type='submit']:active, .openerp input[type='submit'].active, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-active { + background-color: #e3e3e3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f6f6f6)); + background-image: -webkit-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -moz-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -ms-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -o-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: linear-gradient(to bottom, #e3e3e3, #f6f6f6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; } - -.openerp .oe_dashboard_layout_selector ul li { - position: relative; - float: left; - height: 51px; - list-style-type: none; - margin: 5px; - padding: 0; - width: 82px; - cursor: pointer; - border: 1px solid white; +.openerp a.button.disabled, .openerp button:disabled, .openerp input[type='submit']:disabled { + background: #efefef !important; + border: 1px solid #d1d1d1 !important; + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #aaaaaa !important; + cursor: default; + text-shadow: 0 1px 1px white !important; } -.openerp .oe_dashboard_layout_selector ul li:hover { - border: 1px solid #090; +.openerp .ui-widget { + font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif; + font-size: 13px; } -.openerp .oe_dashboard_layout_selector ul li img.oe_dashboard_selected_layout { - position: absolute; - top: 0px; - right: 0px; +.openerp .ui-widget-content a { + color: #8a89ba; } - -.openerp .oe_dashboard_home_tile { - text-align: center; - margin: 10px; - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - -webkit-box-shadow: 3px 3px 5px 3px #DADDDD; - -moz-box-shadow: 3px 3px 5px 3px #DADDDD; - box-shadow: 3px 3px 5px 3px #DADDDD; +.openerp .ui-menu .ui-menu-item { + margin: 0 8px 0 0; + padding: 0 0 0 12px; + width: auto; } -.openerp .oe_dashboard_home_tile span { - display: block; - padding: 0 0 15px; - font-weight: bold; - text-transform: uppercase; - color: #555; - white-space: nowrap; +.openerp .ui-menu .ui-menu-item a.ui-state-active { + background: #f0f0fa; } -.openerp .oe_dashboard_home_tile_icon { - height: 100px; +.openerp.ui-dialog { + display: none; + padding: 6px; + background-color: rgba(60, 60, 60, 0.7); + border: 1px solid; + border-color: #888888 #555555 #444444; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6); + -webkit-box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; } -.openerp .oe_dashboard_home_tile_icon img { - display: block; - margin: 0 auto; +.openerp.ui-dialog .ui-dialog-content { + padding: 0px; } -.openerp .oe_dashboard_home_tile_icon img.hover { - display: none; +.openerp.ui-dialog .ui-dialog-titlebar, .openerp.ui-dialog .ui-dialog-content, .openerp.ui-dialog .ui-dialog-buttonpane { + padding: 16px; } -.openerp .oe_dashboard_home_tile:hover { - background-color: #fafafa; - -webkit-box-shadow: 3px 3px 5px 3px #979797; - -moz-box-shadow: 3px 3px 5px 3px #979797; - box-shadow: 3px 3px 5px 3px #979797; +.openerp.ui-dialog .ui-dialog-titlebar { + border-bottom: 1px solid #cacaca; + -moz-border-radius: 2px 2px 0 0; + -webkit-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); } -.openerp .oe_dashboard_home_tile:hover img { - display: none; +.openerp.ui-dialog .ui-dialog-titlebar .ui-dialog-title { + margin: 0; + padding: 0; } -.openerp .oe_dashboard_home_tile:hover img.hover { - display: block; +.openerp.ui-dialog .ui-widget-header { + border: none; } -.openerp .oe_dashboard_home_tile:hover span { - color: black; +.openerp.ui-dialog .ui-dialog-content { + background: white; } - -.openerp .oe_dashboard_action .view-manager-main-content { - padding: 2px; +.openerp.ui-dialog .ui-dialog-buttonpane { + border-top: 1px solid #e0e0e0; + background: #f5f7f9; + margin: 0; + -moz-border-radius: 0 0 2px 2px; + -webkit-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; } - -.openerp .oe_app_tiles h1, .openerp .oe_app_tiles h3 { - margin: 16px 24px; +.openerp.ui-dialog .ui-dialog-buttonpane button { + margin: 0; } - -.openerp .oe_app_tiles { - padding: 0 10px; -} - -.openerp .oe_app_tiles li { +.openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: left; +} +.openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button { + margin-right: 4px; +} +.openerp.ui-dialog .ui-dialog-titlebar-close { + padding: 0; +} +.openerp.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick { + display: none; +} +.openerp.ui-dialog .ui-dialog-titlebar-close:before { + content: "×"; + font-size: 18px; + font-weight: bold; + line-height: 16px; + color: black; + text-shadow: 0 1px 0 white; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.openerp.ui-dialog .ui-dialog-titlebar-close:before:hover { + color: red; + text-decoration: none; +} +.openerp.ui-dialog .oe_about { + background-color: white; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=); + -moz-border-radius: 0 0 2px 2px; + -webkit-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.openerp.ui-dialog .oe_about a { + color: #8a89ba; +} +.openerp.ui-dialog .oe_about a:hover { + text-decoration: underline; +} +.openerp.ui-dialog .oe_about a:focus { + outline: none; +} +.openerp.ui-dialog .oe_about .oe_logo { + margin-left: -6px; +} +.openerp.ui-dialog .oe_about .oe_bottom { + position: absolute; + top: 50%; + left: 0; + right: 0; + bottom: 0; + text-shadow: 0 1px 1px #999999; + background-color: #b41616; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606)); + background-image: -webkit-linear-gradient(top, #b41616, #600606); + background-image: -moz-linear-gradient(top, #b41616, #600606); + background-image: -ms-linear-gradient(top, #b41616, #600606); + background-image: -o-linear-gradient(top, #b41616, #600606); + background-image: linear-gradient(to bottom, #b41616, #600606); + color: #eeeeee; + padding: 0 16px; + -moz-border-radius: 0 0 2px 2px; + -webkit-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.openerp.ui-dialog .oe_about .oe_bottom a { + color: #eeeeee; +} +.openerp.ui-dialog.oe_act_window .ui-dialog-content { + padding: 0px; +} +.openerp .modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: black; + filter: alpha(opacity=30); + opacity: 0.3; +} +.openerp .oe_i { + font-family: "mnmliconsRegular" !important; + font-size: 21px; + font-weight: 300 !important; +} +.openerp .oe_e { + font-family: "entypoRegular" !important; + font-size: 34px; + font-weight: 300 !important; +} +.openerp .oe_left { + float: left; + margin-right: 8px; +} +.openerp .oe_right { + float: right; + margin-left: 8px; +} +.openerp .oe_text_right { + text-align: right; +} +.openerp .oe_clear { + clear: both; +} +.openerp .oe_wait { + cursor: wait; +} +.openerp .oe_fade { + color: #888888; + font-weight: normal; +} +.openerp .oe_bold { + font-weight: bold; +} +.openerp .oe_inline { + width: auto !important; +} +.openerp .oe_highlight { + color: white; + background: #dc5f59; +} +.openerp button.oe_highlight { + background-color: #dc5f59; + background-image: -webkit-gradient(linear, left top, left bottom, from(#dc5f59), to(#b33630)); + background-image: -webkit-linear-gradient(top, #dc5f59, #b33630); + background-image: -moz-linear-gradient(top, #dc5f59, #b33630); + background-image: -ms-linear-gradient(top, #dc5f59, #b33630); + background-image: -o-linear-gradient(top, #dc5f59, #b33630); + background-image: linear-gradient(to bottom, #dc5f59, #b33630); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp button.oe_highlight:active { + background-color: #b33630; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b33630), to(#dc5f59)); + background-image: -webkit-linear-gradient(top, #b33630, #dc5f59); + background-image: -moz-linear-gradient(top, #b33630, #dc5f59); + background-image: -ms-linear-gradient(top, #b33630, #dc5f59); + background-image: -o-linear-gradient(top, #b33630, #dc5f59); + background-image: linear-gradient(to bottom, #b33630, #dc5f59); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp button.oe_highlight:hover { + background-color: #df6b66; + background-image: -webkit-gradient(linear, left top, left bottom, from(#df6b66), to(#bf3a33)); + background-image: -webkit-linear-gradient(top, #df6b66, #bf3a33); + background-image: -moz-linear-gradient(top, #df6b66, #bf3a33); + background-image: -ms-linear-gradient(top, #df6b66, #bf3a33); + background-image: -o-linear-gradient(top, #df6b66, #bf3a33); + background-image: linear-gradient(to bottom, #df6b66, #bf3a33); + -moz-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_form_dirty .oe_highlight_on_dirty { + color: white; + background: #dc5f59; + font-weight: bold; +} +.openerp .oe_form_dirty button.oe_highlight_on_dirty { + background-color: #dc5f59; + background-image: -webkit-gradient(linear, left top, left bottom, from(#dc5f59), to(#b33630)); + background-image: -webkit-linear-gradient(top, #dc5f59, #b33630); + background-image: -moz-linear-gradient(top, #dc5f59, #b33630); + background-image: -ms-linear-gradient(top, #dc5f59, #b33630); + background-image: -o-linear-gradient(top, #dc5f59, #b33630); + background-image: linear-gradient(to bottom, #dc5f59, #b33630); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_form_dirty button.oe_highlight_on_dirty:hover { + background: #ed6f6a; +} +.openerp .oe_title { + width: 50%; + float: left; +} +.openerp .oe_title:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.openerp .oe_button_box { + width: 270px; + text-align: right; +} +.openerp .oe_button_box button { + margin: 4px; +} +.openerp .oe_avatar > img { + height: 90px; + max-width: 100px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + border: none; +} +.openerp .oe_avatar + div { + margin-left: 5px; +} +.openerp .oe_button.oe_link { + border: none; + padding: 0; + margin: 0; + background: none; + -moz-border-radius: none; + -webkit-border-radius: none; + border-radius: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_button.oe_link img { + display: none; +} +.openerp .oe_button.oe_link span { + border: none; + padding: 0; + margin: 0; + background: none; + -moz-border-radius: none; + -webkit-border-radius: none; + border-radius: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + color: #8a89ba; + font-weight: bold; +} +.openerp .oe_button.oe_link span:hover { + text-decoration: underline; +} +.openerp .oe_webclient .oe_star_on, .openerp .oe_webclient .oe_star_off { + color: #cccccc; + text-shadow: 0 0 2px black; + vertical-align: top; + position: relative; + top: -5px; +} +.openerp .oe_webclient .oe_star_on:hover, .openerp .oe_webclient .oe_star_off:hover { + text-decoration: none; +} +.openerp .oe_webclient .oe_star_on { + color: gold; +} +.openerp .oe_bounce { + -moz-animation: bounce 0.4s linear; + -webkit-animation: bounce 0.4s linear; +} +.openerp .oe_tag { + border: 1px solid #afafb6; + font-size: 11px; + padding: 2px 4px; + margin: 0 2px 2px 0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #f0f0fa; + color: #4c4c4c; +} +.openerp .oe_tag_dark { + background: #8786b7; + color: #eeeeee; +} +.openerp .oe_tags .text-wrap { + width: 100% !important; +} +.openerp .oe_tags .text-wrap textarea { + width: 100% !important; +} +.openerp .oe_tags .text-core .text-wrap .text-dropdown .text-list .text-suggestion em { + font-style: italic; + text-decoration: none; +} +.openerp.oe_tooltip { + font-size: 12px; +} +.openerp.oe_tooltip .oe_tooltip_string { + color: #ffdd55; + font-weight: bold; + font-size: 13px; +} +.openerp.oe_tooltip .oe_tooltip_help { + white-space: pre-wrap; +} +.openerp.oe_tooltip .oe_tooltip_technical { + padding: 0 0 4px 0; + margin: 5px 0 0 15px; +} +.openerp.oe_tooltip .oe_tooltip_technical li { + list-style: circle; +} +.openerp.oe_tooltip .oe_tooltip_technical_title { + font-weight: bold; +} +.openerp .oe_notebook { + margin: 8px 0; + padding: 0 16px; + list-style: none; + zoom: 1; +} +.openerp .oe_notebook.ui-corner-all { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.openerp .oe_notebook:before, .openerp .oe_notebook:after { + display: table; + content: ""; + zoom: 1; +} +.openerp .oe_notebook:after { + clear: both; +} +.openerp .oe_notebook > li { + float: left; +} +.openerp .oe_notebook > li > a { + display: block; + color: #4c4c4c; +} +.openerp .oe_notebook { + border-color: #dddddd; + border-style: solid; + border-width: 0 0 1px; +} +.openerp .oe_notebook > li { + position: relative; +} +.openerp .oe_notebook > li > a { + padding: 0 12px; + margin-right: 2px; + line-height: 30px; + border: 1px solid transparent; + -moz-border-radius: 4px 4px 0 0; + -webkit-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.openerp .oe_notebook > li > a:hover { + text-decoration: none; + background-color: #eeeeee; + border-color: #eeeeee #eeeeee #dddddd; +} +.openerp .oe_notebook > li.ui-state-active > a, .openerp .oe_notebook > li.ui-state-active > a:hover { + background-color: white; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.openerp .oe_notebook_page { + padding: 0; +} +.openerp div.ui-tabs { + padding: 3px 0px 3px 0px; +} +.openerp .ui-tabs-hide { + display: none; +} +.openerp .oe_dropdown, .openerp .oe_dropdown_hover, .openerp .oe_dropdown_toggle { + position: relative; + cursor: pointer; +} +.openerp .oe_dropdown_toggle { + color: #404040; + font-weight: normal; +} +.openerp .oe_dropdown_hover:hover .oe_dropdown_menu, .openerp .oe_dropdown_menu.oe_opened { + display: block; +} +.openerp .oe_dropdown_menu { + display: none; + position: absolute; + top: 26px; + left: 0; + z-index: 1; + border: 1px solid #afafb6; + background: white; + padding: 4px 0; + min-width: 140px; + text-align: left; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +.openerp .oe_dropdown_menu > li { + list-style-type: none; + float: none; + display: block; + position: relative; + padding: 2px 8px; +} +.openerp .oe_dropdown_menu > li:hover { + background-color: #f0f0fa; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_dropdown_menu > li > a { + white-space: nowrap; + display: block; + color: #4c4c4c; + text-decoration: none; +} +.openerp .oe_dropdown_menu > li > a:hover { + text-decoration: none; +} +.openerp .oe_dropdown_arrow:after { + width: 0; + height: 0; + display: inline-block; + content: "&darr"; + text-indent: -99999px; + vertical-align: top; + margin-top: 8px; + margin-left: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #404040; + filter: alpha(opacity=50); + opacity: 0.5; +} +.openerp .oe_sidebar { + white-space: nowrap; +} +.openerp .oe_sidebar .oe_dropdown_menu .oe_sidebar_add_attachment { + height: 20px; + cursor: pointer; + padding-left: 6px; + margin-top: 6px; +} +.openerp .oe_sidebar .oe_dropdown_menu .oe_sidebar_add_attachment span { + font-weight: bold; +} +.openerp .oe_sidebar .oe_dropdown_menu .oe_sidebar_add_attachment .oe_hidden_input_file { + width: 200px; +} +.openerp .oe_sidebar .oe_dropdown_menu .oe_sidebar_add_attachment:hover { + background-color: #f0f0fa; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_sidebar .oe_dropdown_menu li .oe_sidebar_delete_item { + position: absolute; + top: 4px; + right: 4px; + display: none; + width: 12px; + height: 12px; + padding: 1px; + color: #8786b7; + line-height: 8px; + text-align: center; + font-weight: bold; + text-shadow: 0 1px 1px white; +} +.openerp .oe_sidebar .oe_dropdown_menu li .oe_sidebar_delete_item:hover { + text-decoration: none; + color: white; + background: #8786b7; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.openerp .oe_sidebar .oe_dropdown_menu li:hover .oe_sidebar_delete_item { + display: inline-block; +} +.openerp .oe_loading { + display: none; + z-index: 100; + position: fixed; + top: 0; + right: 50%; + padding: 4px 12px; + background: #a61300; + color: white; + text-align: center; + border: 1px solid #990000; + border-top: none; + -moz-border-radius-bottomright: 8px; + -moz-border-radius-bottomleft: 8px; + border-bottom-right-radius: 8px; + border-bottom-left-radius: 8px; +} +.openerp .oe_notification { + z-index: 1050; +} +.openerp .oe_login { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=); + text-align: center; + font-size: 14px; + height: 100%; +} +.openerp .oe_login li { + list-style-type: none; + padding-bottom: 4px; +} +.openerp .oe_login button { + float: right; + display: inline-block; + cursor: pointer; + padding: 6px 16px; + border: 1px solid #222222; + color: white; + margin: 0; + background-color: #b92020; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b92020), to(#600606)); + background-image: -webkit-linear-gradient(top, #b92020, #600606); + background-image: -moz-linear-gradient(top, #b92020, #600606); + background-image: -ms-linear-gradient(top, #b92020, #600606); + background-image: -o-linear-gradient(top, #b92020, #600606); + background-image: linear-gradient(to bottom, #b92020, #600606); + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; +} +.openerp .oe_login input, .openerp .oe_login select { + width: 252px; + font-family: "Lucida Grande", Helvetica, Verdana, Arial; + border: 1px solid #999999; + background: whitesmoke; + -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.openerp .oe_login input { + margin-bottom: 9px; + padding: 5px 6px; +} +.openerp .oe_login select { + padding: 1px; +} +.openerp .oe_login .oe_login_dbpane { + position: fixed; + top: 0; + right: 8px; + padding: 5px 10px; + color: #eeeeee; + border: solid 1px #333333; + background: #1e1e1e; + background: rgba(30, 30, 30, 0.94); + -moz-border-radius: 0 0 8px 8px; + -webkit-border-radius: 0 0 8px 8px; + border-radius: 0 0 8px 8px; +} +.openerp .oe_login .oe_login_dbpane input { + padding: 2px 4px; + margin: 4px 0; +} +.openerp .oe_login .oe_login_bottom { + position: absolute; + top: 50%; + left: 0; + right: 0; + bottom: 0; + text-shadow: 0 1px 1px #999999; + background-color: #b41616; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606)); + background-image: -webkit-linear-gradient(top, #b41616, #600606); + background-image: -moz-linear-gradient(top, #b41616, #600606); + background-image: -ms-linear-gradient(top, #b41616, #600606); + background-image: -o-linear-gradient(top, #b41616, #600606); + background-image: linear-gradient(to bottom, #b41616, #600606); +} +.openerp .oe_login .oe_login_pane { + position: absolute; + top: 50%; + left: 50%; + margin: -160px -166px; + border: solid 1px #333333; + background: #1e1e1e; + background: rgba(30, 30, 30, 0.94); + padding: 22px 32px; + color: #eeeeee; + text-align: left; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); + -webkit-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); + box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); +} +.openerp .oe_login .oe_login_pane h2 { + margin-top: 0; + font-size: 18px; +} +.openerp .oe_login .oe_login_logo { + position: absolute; + top: -70px; + left: 0; + width: 100%; + margin: 0 auto; + text-align: center; +} +.openerp .oe_login .oe_login_footer { + position: absolute; + bottom: -40px; + left: 0; + width: 100%; + text-align: center; +} +.openerp .oe_login .oe_login_footer a { + color: #eeeeee; + margin: 0 8px; +} +.openerp .oe_login .oe_login_footer a:hover { + text-decoration: underline; +} +.openerp .oe_login .oe_login_footer span { + font-weight: bold; + font-size: 16px; +} +.openerp .oe_login .oe_login_error_message { + display: none; + background-color: #b41616; + color: #eeeeee; + padding: 14px 18px; + margin-top: 15px; + text-align: center; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); +} +.openerp .oe_login_invalid .oe_login_error_message { + display: inline-block; +} +.openerp .oe_database_manager { + background: white; + color: black; + text-align: left; +} +.openerp .oe_database_manager .oe_database_manager_menu { + color: black; +} +.openerp .oe_webclient { + width: 100%; + height: 100%; + border-spacing: 0px; +} +.openerp .oe_content_full_screen .oe_application { + top: 0; + left: 0; +} +.openerp .oe_content_full_screen .oe_topbar, .openerp .oe_content_full_screen .oe_leftbar { + display: none; +} +.openerp .oe_topbar { + width: 100%; + height: 31px; + border-top: solid 1px #d3d3d3; + background-color: #646060; + background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626)); + background-image: -webkit-linear-gradient(top, #646060, #262626); + background-image: -moz-linear-gradient(top, #646060, #262626); + background-image: -ms-linear-gradient(top, #646060, #262626); + background-image: -o-linear-gradient(top, #646060, #262626); + background-image: linear-gradient(to bottom, #646060, #262626); +} +.openerp .oe_topbar .oe_topbar_item { + display: block; + padding: 5px 10px 7px; + line-height: 20px; + height: 20px; + color: #eeeeee; + vertical-align: top; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_topbar .oe_topbar_item:hover { + background: #303030; + color: white; + -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + -webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; +} +.openerp .oe_topbar .oe_topbar_item .oe_active { + background: #303030; + font-weight: bold; + color: white; + -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + -webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; +} +.openerp .oe_topbar .oe_topbar_avatar { + width: 24px; + height: 24px; + margin: -2px 2px 0 0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.openerp .oe_topbar .oe_topbar_avatar { + vertical-align: top; +} +.openerp .oe_topbar .oe_dropdown_arrow:after { + border-top: 4px solid white; +} +.openerp .oe_topbar .oe_dropdown_menu { + top: 32px; + background: #333333; + background: rgba(37, 37, 37, 0.9); + border-color: #999999; + border-color: rgba(0, 0, 0, 0.2); + border-style: solid; + border-width: 0 1px 1px; + -moz-border-radius: 0 0 6px 6px; + -webkit-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.openerp .oe_topbar .oe_dropdown_menu li { + float: none; + padding: 3px 12px; +} +.openerp .oe_topbar .oe_dropdown_menu li a { + color: #eeeeee; +} +.openerp .oe_topbar .oe_dropdown_menu li:hover { + background-color: #292929; + background-image: -webkit-gradient(linear, left top, left bottom, from(#292929), to(#191919)); + background-image: -webkit-linear-gradient(top, #292929, #191919); + background-image: -moz-linear-gradient(top, #292929, #191919); + background-image: -ms-linear-gradient(top, #292929, #191919); + background-image: -o-linear-gradient(top, #292929, #191919); + background-image: linear-gradient(to bottom, #292929, #191919); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_leftbar { + display: none; + width: 220px; + background: #f0eeee; + border-right: 1px solid #afafb6; + text-shadow: 0 1px 1px white; + padding-bottom: 16px; +} +.openerp a.oe_logo { + width: 220px; + display: block; + text-align: center; + height: 70px; + line-height: 70px; +} +.openerp a.oe_logo img { + height: 40px; + width: 157px; + margin: 14px 0; +} +.openerp .oe_footer { + position: fixed; + bottom: 0; + padding: 4px 0; + background: #f0eeee; + width: 220px; + text-align: center; +} +.openerp .oe_footer a { + font-weight: 800; + font-family: serif; + font-size: 16px; + color: black; +} +.openerp .oe_footer a span { + color: #c81010; + font-style: italic; +} +.openerp .oe_user_menu { + float: right; + padding: 0; + margin: 0; +} +.openerp .oe_user_menu li { + list-style-type: none; + float: left; +} +.openerp .oe_user_menu .oe_dropdown_menu { + right: -1px; +} +.openerp .oe_systray > div { + float: left; + padding: 0 4px 0 4px; +} +.openerp .oe_systray { + float: right; +} +.openerp .oe_menu { + float: left; + padding: 0; + margin: 0; +} +.openerp .oe_menu li { + float: left; +} +.openerp .oe_menu a { + display: block; + padding: 5px 10px 7px; + line-height: 20px; + height: 20px; + color: #eeeeee; + vertical-align: top; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_menu a:hover { + background: #303030; + color: white; + -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + -webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; +} +.openerp .oe_menu .oe_active { + background: #303030; + font-weight: bold; + color: white; + -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + -webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; +} +.openerp .oe_secondary_menu_section { + font-weight: bold; + margin-left: 8px; + color: #8a89ba; +} +.openerp .oe_secondary_submenu { + padding: 2px 0 8px 0; + margin: 0; + width: 100%; + display: inline-block; +} +.openerp .oe_secondary_submenu > li { + position: relative; + padding: 1px 0 1px 20px; +} +.openerp .oe_secondary_submenu > li a { + display: block; + color: #4c4c4c; + padding: 2px 4px 2px 0; +} +.openerp .oe_secondary_submenu > li .oe_menu_label { + position: absolute; + top: 1px; + right: 1px; + font-size: 10px; + background: #8a89ba; + color: white; + padding: 2px 4px; + margin: 1px 6px 0 0; + border: 1px solid lightGray; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_secondary_submenu .oe_menu_counter { + float: right; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + margin: 0px; + padding: 1px 4px; +} +.openerp .oe_secondary_submenu .oe_active { + background: #8a89ba; + border-top: 1px solid lightGray; + border-bottom: 1px solid lightGray; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_secondary_submenu .oe_active a { + color: white; +} +.openerp .oe_secondary_submenu .oe_active .oe_menu_label { + background: #eeeeee; + color: #8a89ba; + text-shadow: 0 1px 1px white; + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_secondary_submenu .oe_active .oe_menu_counter { + background: #eeeeee; + color: #8a89ba; +} +.openerp .oe_secondary_submenu .oe_menu_toggler:before { + width: 0; + height: 0; + display: inline-block; + content: "&darr"; + text-indent: -99999px; + vertical-align: top; + margin-left: -12px; + margin-top: 4px; + margin-right: 4px; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + border-left: 4px solid #4c4c4c; + filter: alpha(opacity=50); + opacity: 0.5; +} +.openerp .oe_secondary_submenu .oe_menu_opened:before { + margin-top: 6px; + margin-left: -16px; + margin-right: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #4c4c4c; +} +.openerp .oe_application { + width: 100%; +} +.openerp .oe_application a { + color: #8a89ba; +} +.openerp .oe_application a:hover { + text-decoration: underline; +} +.openerp .oe_application > div { + height: 100%; +} +.openerp .oe_view_manager .oe_view_manager_body { + height: inherit; +} +.openerp .oe_view_manager .oe_view_manager_view_kanban { + height: inherit; +} +.openerp .oe_view_manager table.oe_view_manager_header { + width: 100%; + table-layout: fixed; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row { + clear: both; + text-shadow: 0 1px 1px white; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row:last-child td { + padding-top: 0; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_view_manager_sidebar { + margin: 0px auto; + text-align: center; +} +.openerp .oe_view_manager table.oe_view_manager_header td { + line-height: 26px; +} +.openerp .oe_view_manager table.oe_view_manager_header h2 { + font-size: 18px; + margin: 0; + float: left; +} +.openerp .oe_view_manager table.oe_view_manager_header h2 a { + color: #8a89ba; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group { + display: inline-block; + border: 1px solid #ababab; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group li { + float: left; + border-right: 1px solid #ababab; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group li:last-child { + border: none; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group a { + color: #4c4c4c; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group a:hover { + text-decoration: none; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group .active { + background: #999999; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group .active a { + color: white; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_view_manager_buttons { + white-space: nowrap; +} +.openerp .oe_view_manager .oe_view_manager_pager { + line-height: 26px; +} +.openerp .oe_view_manager .oe_view_manager_pager .oe_list_pager_single_page .oe_pager_group { + display: none; +} +.openerp .oe_view_manager .oe_pager_value { + float: left; + margin-right: 8px; +} +.openerp .oe_view_manager .oe_pager_group { + float: left; + height: 24px; + line-height: 24px; + display: inline-block; + border: 1px solid #ababab; + cursor: pointer; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} +.openerp .oe_view_manager .oe_pager_group li { + height: 24px; + line-height: 24px; + padding: 0; + float: left; + border-right: 1px solid #ababab; +} +.openerp .oe_view_manager .oe_pager_group li:last-child { + border: none; +} +.openerp .oe_view_manager .oe_pager_group a { + color: #4c4c4c; + padding: 0 8px; +} +.openerp .oe_view_manager .oe_pager_group a:hover { + text-decoration: none; +} +.openerp .oe_view_manager .oe_pager_group .active { + background: #999999; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; +} +.openerp .oe_view_manager .oe_pager_group .active a { + color: white; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); +} +.openerp .oe_view_manager .oe_view_manager_switch li { + text-align: center; + width: 24px; + height: 24px; + line-height: 16px; +} +.openerp .oe_view_manager .oe_view_manager_switch li a { + position: relative; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_list:after, .openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_tree:after { + padding: 2px; + content: "i"; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_form:after { + content: "m"; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_graph:after { + font-family: "mnmliconsRegular" !important; + font-size: 21px; + font-weight: 300 !important; + content: "}"; + top: -2px; + position: relative; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_gantt:after { + font-family: "mnmliconsRegular" !important; + font-size: 21px; + font-weight: 300 !important; + content: "y"; + top: -2px; + position: relative; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_calendar:after { + content: "P"; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_kanban:after { + content: "k"; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_diagram:after { + content: "f"; +} +.openerp .oe_view_manager_current { + height: 100%; +} +.openerp .oe_view_manager_current > .oe_view_manager_header { + border-top: 1px solid #cacaca; + border-bottom: 1px solid #cacaca; + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); + -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 9px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 9px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 9px rgba(0, 0, 0, 0.1); +} +.openerp .oe_view_manager_current > .oe_view_manager_header .oe_header_row td { + padding: 8px; +} +.openerp .oe_view_manager_current > .oe_view_manager_header .oe_header_row:first-child td { + padding-top: 8px; +} +.openerp .oe_view_manager_inline { + height: 100%; +} +.openerp .oe_view_manager_inline > .oe_view_manager_header { + display: none; +} +.openerp .oe_popup_form > .oe_formview > .oe_form_pager { + display: none !important; +} +.openerp .oe_searchview { + cursor: text; + position: relative; + float: right; + padding: 1px 0; + line-height: 18px; + width: 400px; + border: 1px solid #ababab; + background: white; + -moz-border-radius: 13px; + -webkit-border-radius: 13px; + border-radius: 13px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; +} +.openerp .oe_searchview input, .openerp .oe_searchview textarea { + padding: 3px; + height: 14px; + font-size: 12px; + line-height: 18px; +} +.openerp .oe_searchview.oe_focused { + border-color: #a6a6fe; + -moz-box-shadow: 0 1px 2px #a6a6fe inset; + -webkit-box-shadow: 0 1px 2px #a6a6fe inset; + box-shadow: 0 1px 2px #a6a6fe inset; +} +.openerp .oe_searchview .oe_searchview_clear { + cursor: pointer; + position: absolute; + top: 0; + right: 18px; + width: 15px; + height: 100%; + background: url(../img/search_reset.gif) center center no-repeat; +} +.openerp .oe_searchview .oe_searchview_unfold_drawer { + position: absolute; + top: 0; + right: 0; + height: 100%; + padding: 0 7px 0 4px; + color: #cccccc; + cursor: pointer; +} +.openerp .oe_searchview .oe_searchview_unfold_drawer:hover { + color: #999999; +} +.openerp .oe_searchview .oe_searchview_unfold_drawer:before { + position: absolute; + top: 10px; + right: 7px; + width: 0; + height: 0; + display: inline-block; + content: ""; + vertical-align: top; + border-top: 5px solid #4c4c4c; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + filter: alpha(opacity=50); + opacity: 0.5; +} +.openerp .oe_searchview .oe_searchview_search { + font-size: 1px; + letter-spacing: -1px; + color: transparent; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + position: absolute; + left: 3px; + top: 1px; + padding: 0; + border: none; + background: transparent; +} +.openerp .oe_searchview .oe_searchview_search:before { + font: 21px "mnmliconsRegular"; + content: "r"; + color: #a3a3a3; +} +.openerp .oe_searchview .oe_searchview_facets { + min-height: 22px; + margin-left: 15px; +} +.openerp .oe_searchview .oe_searchview_facets * { + vertical-align: top; + display: inline-block; + line-height: 17px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { + height: 18px; + margin: 1px 0; + font-size: 11px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet:focus { + outline: none; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_input { + padding: 0 0 0 6px; + font-size: 12px; + height: 16px; + margin-top: 3px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_input:focus { + outline: none; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { + position: relative; + cursor: pointer; + padding: 0; + -webkit-font-smoothing: auto; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet:focus { + border-color: #a6a6fe; + -moz-box-shadow: 0 0 3px 1px #a6a6fe; + -webkit-box-shadow: 0 0 3px 1px #a6a6fe; + box-shadow: 0 0 3px 1px #a6a6fe; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_values { + background: #f0f0fa; + -moz-border-radius: 0 3px 3px 0; + -webkit-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category, .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value { + height: 18px; + padding: 0 4px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category { + color: white; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category.oe_i { + font-size: 16px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value { + border-left: 1px solid #afafb6; + text-shadow: 0 1px 1px white; + color: #4c4c4c; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value:last-child { + padding-right: 16px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_remove { + position: absolute; + top: 3px; + right: 3px; + color: #8786b7; + line-height: 8px; + width: 12px; + height: 12px; + padding-top: 1px; + text-align: center; + font-weight: bold; + cursor: pointer; + text-shadow: 0 1px 1px white; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_remove:hover { + color: white; + background: #8786b7; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.openerp .oe_searchview.oe_searchview_open_drawer .oe_searchview_drawer { + display: block; +} +.openerp .oe_searchview .oe_searchview_drawer { + position: absolute; + z-index: 100; + margin-top: 4px; + top: 100%; + right: -1px; + background-color: white; + min-width: 100%; + display: none; + border: 1px solid #afafb6; + text-align: left; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +.openerp .oe_searchview .oe_searchview_drawer > div { + border-top: 1px solid #cccccc; + margin: 0; + padding: 8px; +} +.openerp .oe_searchview .oe_searchview_drawer > div:first-child { + border-top: none; + margin: 0; +} +.openerp .oe_searchview .oe_searchview_drawer h3 { + margin: 8px 4px 4px 12px; + color: #8786b7; + font-size: 13px; +} +.openerp .oe_searchview .oe_searchview_drawer h4, .openerp .oe_searchview .oe_searchview_drawer h4 * { + margin: 0; + cursor: pointer; + font-weight: normal; + display: inline-block; +} +.openerp .oe_searchview .oe_searchview_drawer h4:hover, .openerp .oe_searchview .oe_searchview_drawer h4 *:hover { + background-color: #f0f0fa; +} +.openerp .oe_searchview .oe_searchview_drawer h4:before { + content: "▸ "; + color: #a3a3a3; +} +.openerp .oe_searchview .oe_searchview_drawer button { + margin: 4px 0; +} +.openerp .oe_searchview .oe_searchview_drawer .button { + border: none; + background: transparent; + padding: 0 2px; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section { + display: table; + width: 100%; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section > div { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + display: table-cell; + width: 50%; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section ul { + margin: 0 8px 8px; + padding: 0; list-style: none; } - -.openerp .oe_app_tiles li img { +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li { + list-style: none; + padding: 2px 4px 2px 20px; + line-height: 14px; + color: inherit; + cursor: pointer; + position: relative; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li.oe_selected:before { + content: "W"; + font-family: "entypoRegular" !important; + font-size: 24px; + font-weight: 300 !important; + color: #a3a3a3; + position: absolute; + left: 4px; + top: -2px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li:hover { + background-color: #f0f0fa; +} +.openerp .oe_searchview .oe_searchview_drawer form { + margin-left: 12px; +} +.openerp .oe_searchview .oe_searchview_drawer form p { + margin: 4px 0; + line-height: 18px; +} +.openerp .oe_searchview .oe_searchview_drawer form button { + margin: 0 0 8px 0; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom { + padding: 0 8px 8px 8px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom form { + display: none; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li { + cursor: pointer; + position: relative; + line-height: 14px; + padding: 2px 4px 2px 20px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li:hover { + background-color: #f0f0fa; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li button { + position: absolute; + top: 0; + right: 5px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_dashboard form { + display: none; + margin-top: 2px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced form { + display: none; + margin-top: 8px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced button.oe_add_condition:before { + content: "Z"; + font-family: "entypoRegular" !important; + font-size: 24px; + font-weight: 300 !important; + margin-right: 4px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced ul { + list-style: none; + padding: 0; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced li { + position: relative; + list-style: none; + margin: 0; + white-space: nowrap; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_opened h4:before { + content: "▾ "; + position: relative; + top: -1px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_opened form { display: block; - margin: 0 auto; - height: 100px; - width: 100px; } -.openerp .oe_app_tiles li img.hover { - display: none; -} -.openerp .oe_app_tiles li:hover img { - display: none; -} -.openerp .oe_app_tiles li:hover img.hover { - display: block; -} - -.openerp .oe_app_tiles li a { - display: block; - height: 120px; - width: 194px; - color: #4C4C4C; - border: 1px solid #f4f2f2; - margin: 6px; - padding: 12px; +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete, .openerp .oe_searchview .oe_searchview_drawer .searchview_extended_delete_prop { + display: inline-block; + width: 12px; + height: 12px; + line-height: 12px; + padding: 1px; + color: #8786b7; + line-height: 8px; text-align: center; - text-transform: uppercase; + font-weight: bold; + text-shadow: 0 1px 1px white; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete:hover, .openerp .oe_searchview .oe_searchview_drawer .searchview_extended_delete_prop:hover { text-decoration: none; - font-size: 12px; - font-weight: 800; + color: white; + background: #8786b7; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete { + display: none; + position: absolute; + bottom: 1px; + right: 4px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_private:hover .oe_searchview_custom_delete, .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_public:hover .oe_searchview_custom_delete { + display: inline-block; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_public:after { + content: ","; + font-family: "entypoRegular" !important; + font-size: 22px; + font-weight: 300 !important; + margin: 0 0 0 4px; + padding: 0; +} +.openerp .oe_view_nocontent > img { + float: left; + margin: 1.5em; +} +.openerp .oe_view_nocontent > div { + overflow: hidden; + padding: 35px 0px 0px 0px; + max-width: 700px; + font-size: 125%; +} +.openerp .oe_formview { background: white; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - -ms-border-radius: 6px; - border-radius: 6px; - -moz-box-shadow: 0 1px 2px #bbb; - -webkit-box-shadow: 0 1px 2px #bbb; - -o-box-shadow: 0 1px 2px #bbb; - box-shadow: 0 1px 2px #bbb; } -/* changing icon for the change layout button */ - -.openerp .oe_dashboard_link_change_layout, .openerp .oe_dashboard_link_reset { - padding-top: 1px; - height: 22px; +.openerp .oe_form_dropdown_section { + position: relative; + display: inline-block; } -.openerp .oe_dashboard_link_change_layout > *, .openerp .oe_dashboard_link_reset > *{ - vertical-align: middle; +.openerp .oe_form_invalid input, .openerp .oe_form_invalid select, .openerp .oe_form_invalid textarea { + background-color: #ff6666 !important; + border: 1px solid #dd0000 !important; +} +.openerp .oe_view_manager_current .oe_form_editable .oe_highlight { + color: #404040; + background: none; +} +.openerp .oe_view_manager_current .oe_form_editable button.oe_highlight { + background-color: #efefef; + background-image: -webkit-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + background-image: -webkit-linear-gradient(top, #efefef, #d8d8d8); + background-image: -moz-linear-gradient(top, #efefef, #d8d8d8); + background-image: -ms-linear-gradient(top, #efefef, #d8d8d8); + background-image: -o-linear-gradient(top, #efefef, #d8d8d8); + background-image: linear-gradient(to bottom, #efefef, #d8d8d8); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; +} +.openerp .oe_view_manager_current .oe_form_editable button.oe_highlight:active { + background-color: #e3e3e3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f6f6f6)); + background-image: -webkit-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -moz-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -ms-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -o-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: linear-gradient(to bottom, #e3e3e3, #f6f6f6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_view_manager_current .oe_form_editable button.oe_highlight:hover { + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -moz-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -ms-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: linear-gradient(to bottom, #f6f6f6, #e3e3e3); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; +} +.openerp .oe_form_invisible { + display: none !important; +} +.openerp .oe_form_readonly .oe_edit_only, .openerp .oe_form_readonly .oe_form_field:empty { + display: none !important; +} +.openerp .oe_form_readonly .oe_form .oe_form_field_date { + width: auto; +} +.openerp .oe_form_nosheet { + margin: 8px; +} +.openerp .oe_form_nosheet > header { + margin-top: -20px; + margin-left: -20px; + margin-right: -20px; +} +.openerp .oe_form header { + position: relative; + border-bottom: 1px solid #cacaca; + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); + padding: 0 8px; + line-height: 30px; +} +.openerp .oe_form header ul { + display: inline-block; + float: right; +} +.openerp .oe_form div.oe_chatter { + min-width: 650px; + max-width: 860px; + margin: 0 auto; +} +.openerp ul.oe_form_steps { + height: 30px; + padding: 0; + margin: 0; + text-shadow: 0 1px 1px white; +} +.openerp ul.oe_form_steps img { + vertical-align: top; + margin-left: 8px; +} +.openerp ul.oe_form_steps li { + border-right: none; + padding: 0; + margin: 0; + float: left; + vertical-align: top; + height: 30px; + padding: 0 0 0 12px; +} +.openerp ul.oe_form_steps li:first-child { + border-left: 1px solid #cacaca; +} +.openerp ul.oe_form_steps li:last-child { + margin-right: 12px; + padding-right: 12px; + border-right: 1px solid #cacaca; +} +.openerp ul.oe_form_steps li a { + color: #4c4c4c; +} +.openerp ul.oe_form_steps li a:hover { + color: black; +} +.openerp ul.oe_form_steps .oe_form_steps_active { + font-weight: bold; + color: #b33630; +} +.openerp .oe_form .oe_subtotal_footer { + width: 1% !important; +} +.openerp .oe_form .oe_subtotal_footer td.oe_form_group_cell { + text-align: right; + padding: 0 !important; +} +.openerp .oe_form .oe_subtotal_footer td.oe_form_group_cell_label { + border-right: none; +} +.openerp .oe_form .oe_subtotal_footer .oe_subtotal_footer_separator { + width: 108px; + border-top: 1px solid #cacaca; + font-weight: bold; + font-size: 18px; +} +.openerp .oe_form .oe_subtotal_footer label:after { + content: ":"; +} +.openerp .oe_form .oe_subtotal_footer label.oe_subtotal_footer_separator { + font-weight: bold !important; + padding: 2px 11px 2px 0px !important; +} +.openerp .oe_form .oe_subtotal_footer label.oe_form_label_help { + font-weight: normal; +} +.openerp .oe_application .oe_form_sheetbg { + background: url(/web/static/src/img/form_sheetbg.png); + padding: 8px 0; + border-bottom: 1px solid #dddddd; +} +.openerp .oe_application .oe_form_sheet_width { + min-width: 650px; + max-width: 860px; + margin: 0 auto; +} +.openerp .oe_application .oe_form_sheet { + background: white; + min-height: 330px; + padding: 16px; + border: 1px solid #afafb6; + -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); +} +.openerp .oe_application .oe_form_sheet .ui-tabs { + margin: 0 -16px; +} +.openerp .oe_application .oe_form_sheet .oe_notebook_page { + padding: 0 16px; +} +.openerp .oe_form .oe_form_button { + margin: 2px; +} +.openerp .oe_form td.oe_form_group_cell_label { + border-right: 1px solid #dddddd; + padding: 2px 0px 2px 0px; +} +.openerp .oe_form td.oe_form_group_cell_label label { + line-height: 18px; + display: block; + min-width: 120px; +} +.openerp .oe_form td.oe_form_group_cell + .oe_form_group_cell { + padding-left: 6px; +} +.openerp .oe_form .oe_form_group { + width: 100%; + margin: 6px 0 6px 0; +} +.openerp .oe_form .oe_form_group .oe_form_group_cell.oe_group_right { + padding-left: 20px; +} +.openerp .oe_form .oe_form_label_help[for], .openerp .oe_form .oe_form_label[for] { + font-weight: bold; + white-space: nowrap; + padding-right: 6px; +} +.openerp .oe_form .oe_form_label_help[for] span, .openerp .oe_form .oe_form_label[for] span { + font-size: 80%; + color: darkGreen; + vertical-align: top; + position: relative; + top: -4px; + padding: 0 2px; +} +.openerp .oe_horizontal_border { + border-bottom: 1px solid black; +} +.openerp .oe_horizontal_separator { + font-weight: bold; + font-size: 20px; + margin: 8px 0px 8px 0px; + color: #aaaabb; +} +.openerp .oe_horizontal_separator:empty { + height: 5px; +} +.openerp .oe_vertical_separator { + border-left: 1px solid #666666; + padding: 0 4px 0 4px; +} +.openerp .oe_form_field_progressbar { + display: inline-block; + min-width: 70px; +} +.openerp .oe_form_field_progressbar.ui-progressbar { + height: 22px; + font-size: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #999999; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: white; + min-width: 50px; +} +.openerp .oe_form_field_progressbar.ui-progressbar span { + position: absolute; + margin-left: 10px; + font-weight: bold; +} +.openerp .oe_form_field_progressbar.ui-progressbar .ui-widget-header { + background: #cccccc url(/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; +} +.openerp .oe_form .oe_form_field_text { + width: 100%; +} +.openerp .oe_form .oe_form_field_char input, +.openerp .oe_form .oe_form_field_url input, +.openerp .oe_form .oe_form_field_email input, +.openerp .oe_form .oe_form_field_text textarea, +.openerp .oe_form .oe_form_field_selection select { + width: 100%; +} +.openerp .oe_form .oe_form_field_text.oe_inline, .openerp .oe_form .oe_form_field_text.oe_inline > textarea { + width: 500px; +} +.openerp .oe_form h1, .openerp .oe_form h2, .openerp .oe_form h3, .openerp .oe_form h4, .openerp .oe_form h5, .openerp .oe_form h6 { + margin: 0 0 4px 0; +} +.openerp .oe_form h1 input, .openerp .oe_form h2 input, .openerp .oe_form h3 input, .openerp .oe_form h4 input, .openerp .oe_form h5 input, .openerp .oe_form h6 input { + height: inherit !important; + font-size: inherit; +} +.openerp .oe_form .oe_form_field { + width: 100%; + display: inline-block; + padding: 2px 2px 2px 0px; + line-height: 18px; +} +.openerp .oe_form .oe_form_field input { + margin: 0px; +} +.openerp .oe_form input[type="text"], .openerp .oe_form input[type="password"], .openerp .oe_form input[type="file"], .openerp .oe_form select { + height: 22px; + padding-top: 2px; +} +.openerp .oe_form input[type="text"], .openerp .oe_form input[type="password"], .openerp .oe_form input[type="file"], .openerp .oe_form select, .openerp .oe_form textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + background: white; + min-width: 70px; + color: #1f1f1f; +} +.openerp .oe_form input[readonly], .openerp .oe_form select[readonly], .openerp .oe_form textarea[readonly], .openerp .oe_form input[disabled], .openerp .oe_form select[disabled] { + background: #e5e5e5 !important; + color: #666666; +} +.openerp .oe_form textarea[disabled] { + border: none; + border-left: 8px solid #eeeeee; + padding-left: 8px; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; +} +.openerp .oe_form .oe_form_field_url button img { + vertical-align: top; +} +.openerp .oe_form .oe_form_field_date, +.openerp .oe_form .oe_form_field_datetime { + white-space: nowrap; +} +.openerp .oe_form .oe_form_field_boolean { + padding-top: 4px; + width: auto; +} +.openerp .oe_form .oe_datepicker_container { + display: none; +} +.openerp .oe_form .oe_datepicker_root { + display: inline-block; +} +.openerp .oe_form .oe_form_required input, .openerp .oe_form .oe_form_required select, .openerp .oe_form .oe_form_required textarea { + background-color: #d2d2ff !important; +} +.openerp .oe_form .oe_form_invalid input, .openerp .oe_form .oe_form_invalid select, .openerp .oe_form .oe_form_invalid textarea { + background-color: #ff6666 !important; + border: 1px solid #dd0000 !important; +} +.openerp .oe_form .oe_input_icon { + cursor: pointer; + margin: 3px 0 0 -21px; + vertical-align: top; +} +.openerp .oe_form .oe_input_icon_disabled { + position: absolute; + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50); + right: 5px; + top: 3px; +} +.openerp .oe_form .oe_form_field_with_button.oe_no_button > .oe_button { + display: none; +} +.openerp .oe_form .oe_form_field_with_button:not(.oe_no_button) > .oe_button { + float: right; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border-bottom-left-radius: 0px; + height: 22px; +} +.openerp .oe_form .oe_form_field_with_button input { + width: 100%; +} +.openerp .oe_form .oe_form_field_with_button > div { + position: relative; + overflow: hidden; +} +.openerp .oe_form_editable .oe_form .oe_form_field_integer { + width: 7em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_float { + width: 8em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_date { + width: 7.5em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_datetime { + width: 11.5em !important; +} +.openerp .oe_hidden_input_file input.oe_form_binary_file { + z-index: 0; + line-height: 0; + font-size: 12px; + position: absolute; + top: 1px; + left: 0; + right: 0; + opacity: 0; + filter: alpha(opacity=0); + -ms-filter: "alpha(opacity=0)"; + margin: 0; + padding: 0; +} +.openerp .oe_form .oe_form_field_image { + padding: 0; + position: relative; + display: inline-block; + width: auto; + vertical-align: top; +} +.openerp .oe_form .oe_form_field_image .oe_form_field_image_controls { + position: absolute; + top: 1px; + padding: 4px; + width: 100%; + display: none; + text-align: center; + color: #eeeeee; + background: rgba(37, 37, 37, 0.9); + -moz-border-radius: 3px 3px 0 0; + -webkit-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} +.openerp .oe_form .oe_form_field_image:hover .oe_form_field_image_controls { + display: block; +} +.openerp .oe_form_field_many2one td:first-child { + position: relative; +} +.openerp .oe_form_field_many2one span.oe_m2o_drop_down_button { + position: absolute; + top: 2px; + right: 0px; +} +.openerp .oe_form_field_many2one .oe_m2o_cm_button { + line-height: 14px; +} +.openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page { + display: none; +} +.openerp .oe_form_field_one2many .oe_list_content > thead, .openerp .oe_form_field_many2many .oe_list_content > thead { + border-bottom: 1px; +} +.openerp .oe_form_field_one2many .oe_list_content > tbody tr:nth-child(odd), .openerp .oe_form_field_many2many .oe_list_content > tbody tr:nth-child(odd) { + background: transparent; +} +.openerp .oe_form_field_one2many .oe_list .oe_list_edit_row_save, .openerp .oe_form_field_many2many .oe_list .oe_list_edit_row_save { + background: url(/web/static/src/img/iconset-b-remove.png) 50% 50% no-repeat; +} +.openerp .oe_form_field_one2many .oe_list .oe_list_edit_row_save:before, .openerp .oe_form_field_many2many .oe_list .oe_list_edit_row_save:before { + visibility: hidden; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_header_row_top, .openerp .oe_form_field_many2many > .oe_view_manager .oe_header_row_top { + display: none; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td { + padding: 0px 8px; + line-height: 16px; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_i, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_i { + font-size: 13px; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group { + height: auto; + line-height: 16px; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group li, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group li { + height: auto; + line-height: 16px; +} +.openerp .oe_form_field_one2many .oe_list_buttons.oe_editing .oe_list_save, .openerp .oe_form_field_many2many .oe_list_buttons.oe_editing .oe_list_save { + visibility: hidden; +} +.openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { + display: none; +} +.openerp .oe_list_buttons .oe_list_save, .openerp .oe_list_buttons .oe_list_discard { + display: none; +} +.openerp .oe_list_buttons.oe_editing .oe_list_add, .openerp .oe_list_buttons.oe_editing .oe_list_button_import { + display: none; +} +.openerp .oe_list_buttons.oe_editing .oe_list_save { + display: inline-block; +} +.openerp .oe_list_buttons.oe_editing .oe_list_discard { + display: inline; +} +.openerp .oe_list { + position: relative; +} +.openerp .oe_list .oe_form .oe_form_field { + width: auto; + position: absolute; + margin: 0 !important; + padding: 0; +} +.openerp .oe_list_content { + width: 100%; +} +.openerp .oe_list_content td:first-child:after, .openerp .oe_list_content th:first-child:after { + border-width: 0; +} +.openerp .oe_list_content td.oe_number { + text-align: right !important; + max-width: 100px; +} +.openerp .oe_list_content > thead { + border-bottom: 2px solid #cacaca; + background: #eeeeee; + vertical-align: top; +} +.openerp .oe_list_content > thead th { + position: relative; +} +.openerp .oe_list_content td, .openerp .oe_list_content th { + padding: 3px 6px; + line-height: 18px; +} +.openerp .oe_list_content th:after { + position: absolute; + right: 6px; + content: ""; + margin-top: 7px; + border-width: 0 4px 4px; + border-style: solid; + border-color: black transparent; + visibility: hidden; +} +.openerp .oe_list_content th.sortup:after { + visibility: visible; + filter: alpha(opacity=60); + opacity: 0.6; +} +.openerp .oe_list_content th.sortdown:after { + border-bottom: none; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid black; + visibility: visible; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + filter: alpha(opacity=60); + opacity: 0.6; +} +.openerp .oe_list_content > tbody { + cursor: pointer; +} +.openerp .oe_list_content > tbody > tr { + border-top: 1px solid #dddddd; +} +.openerp .oe_list_content > tbody > tr > td.oe_list_field_cell { + padding: 3px 6px; + white-space: pre-line; +} +.openerp .oe_list_content > tbody > tr > td > button, .openerp .oe_list_content > tbody > tr > th > button { + border: none; + background: transparent; + padding: 0; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_list_content > tbody > tr > td.oe_list_checkbox:first-child, .openerp .oe_list_content > tbody > tr th.oe_list_checkbox:first-child { + width: 17px; +} +.openerp .oe_list_content > tbody > tr > td.oe_list_checkbox:first-child:after, .openerp .oe_list_content > tbody > tr th.oe_list_checkbox:first-child:after { + border-width: 0; +} +.openerp .oe_list_content > tbody > tr:nth-child(odd) { + background-color: #f0f0fa; + background-color: #f0f0fa; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6); +} +.openerp .oe_list_content > tfoot { + border-top: 2px solid #cacaca; + border-bottom: 1px solid #cacaca; + background: #eeeeee; + font-weight: bold; +} +.openerp .oe_list_content > tbody tr:hover td, .openerp .oe_list_content tbody tr:hover th { + background-color: #eeeeee; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dedede)); + background-image: -webkit-linear-gradient(top, #eeeeee, #dedede); + background-image: -moz-linear-gradient(top, #eeeeee, #dedede); + background-image: -ms-linear-gradient(top, #eeeeee, #dedede); + background-image: -o-linear-gradient(top, #eeeeee, #dedede); + background-image: linear-gradient(to bottom, #eeeeee, #dedede); +} +.openerp .oe_list_content .numeric { + text-align: right; + width: 82px; +} +.openerp .oe_list_content .numeric input { + text-align: right; +} +.openerp .tree_header { + background-color: #f0f0f0; + border-bottom: 1px solid #cacaca; + color: #4c4c4c; + padding: 5px; + height: 25px; +} +.openerp .tree_header button { + float: right; + height: 27px; + margin-right: 5px; +} +.openerp .oe-treeview-table { + width: 100%; + background-color: white; + border-spacing: 0; +} +.openerp .oe-treeview-table th { + padding: 10px; + color: #4c4c4c; + font-weight: bold; + background-color: #f0f0f0; + border-bottom: 2px solid #cacaca; +} +.openerp .oe-treeview-table .treeview-tr, .openerp .oe-treeview-table .treeview-td { + cursor: pointer; + border-right: 1px dotted #afafb6; + vertical-align: top; + text-align: left; + border-bottom: 1px solid #cfcccc; +} +.openerp .oe-treeview-table tr:hover { + background-color: #e0e0f8; +} +.openerp .oe-treeview-table .oe-number { + text-align: right !important; +} +.openerp .oe-treeview-table span { + font-size: 90%; + font-weight: normal; + white-space: nowrap; + display: block; +} +.openerp .oe-treeview-table .treeview-tr.oe-treeview-first { + background: transparent url(/web/static/src/img/expand.gif) 0 50% no-repeat; +} +.openerp .oe-treeview-table .oe_open .treeview-tr.oe-treeview-first { + background-image: url(/web/static/src/img/collapse.gif); +} +.openerp .oe-treeview-table .treeview-tr.oe-treeview-first span, .openerp .oe-treeview-table .treeview-td.oe-treeview-first span { + margin-left: 16px; +} +.openerp .oe_trad_field.touched { + border: 1px solid green !important; +} +.openerp .oe_view_editor { + width: 100%; + border-collapse: collapse; + margin-left: -12px; + width: 100%; + background-color: white; + border-spacing: 0; +} +.openerp .oe_view_editor td { + text-align: center; + white-space: nowrap; + border: 1px solid #d8d8d8; + cursor: pointer; + font-size: 90%; +} +.openerp .oe_view_editor_field td { + border: 0px !important; +} +.openerp .oe_view_editor tr:hover { + background-color: #ecebf2; +} +.openerp .oe_layout_debugging .oe_form_group { + outline: 2px dashed green; +} +.openerp .oe_layout_debugging .oe_form_group_cell { + outline: 1px solid blue; +} +.openerp .oe_layout_debugging .oe_form_group:hover, .openerp .oe_layout_debugging .oe_form_group_cell:hover { + outline-color: red; +} +.openerp .oe_layout_debugging .oe_form_group_row_incomplete > td:last-child:after { + content: "[Incomplete Row]"; + background: red; + padding: 2px; + font-weight: bold; + color: white; + float: right; +} +.openerp .oe_layout_debugging .oe_form_group_row_incomplete.oe_form_group_row_newline > td:last-child:after { + content: "[newline]"; +} +.openerp .oe_debug_view { + float: left; +} +.openerp .oe_debug_view_log { + font-size: 95%; +} +.openerp .oe_debug_view_log label { + display: block; + width: 49%; + text-align: right; + float: left; + font-weight: bold; + color: #000099; +} +.openerp .oe_debug_view_log span { + display: block; + width: 49%; + float: right; + color: #333333; } -.openerp .oe_welcome_message { - display:none; +.kitten-mode-activated { + background-image: url(http://placekitten.com/g/1365/769); + background-size: cover; + background-attachment: fixed; } -.openerp .oe_initial_welcome_message { - width:30%; - text-align:center; - margin:10px 35% 0 35%; - padding: 5px 10px; - border: 1px solid #ccc; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - background: #eeeded; - box-shadow: 0 1px 0 #fff; - -moz-box-shadow: 0 1px 0 #fff; - -webkit-box-shadow: 0 1px 0 #fff; - color: #8c8c8c; - font-size: 90%; - text-transform: uppercase; - font-weight: bold; - text-shadow: #fff 0 1px 0; +.kitten-mode-activated > * { + opacity: 0.7; } -.openerp .oe_initial_welcome_message ul{ - padding:10px 0 0 0; - margin:0; - list-style-type: none; - padding: 7px 0 5px 5px; - background-position: 0 50%; - background-repeat: no-repeat; - cursor: pointer; +div.ui-widget-overlay { + background: black; + filter: alpha(opacity=30); + opacity: 0.3; } -.openerp .oe_initial_welcome_message ul a, .openerp .initial_welcome_message ul a:hover, .openerp .initial_welcome_message ul a:active, .openerp .initial_welcome_message ul a:focus { - color:#222; - text-decoration:none; + +.openerp .oe_dashboard_links { + text-align: right; + margin: 0 4px 6px 0; +} +.openerp .oe_dashboard { + width: 100%; +} +.openerp .oe_dashboard .oe_action { + margin: 0 8px 8px 0; + background-color: white; + border: 1px solid; + border-color: #e5e5e5 #dbdbdb #d2d2d2; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 0 2px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 2px rgba(0, 0, 0, 0.2); +} +.openerp .oe_dashboard .oe_action .oe_header { + font-size: 16px; + vertical-align: middle; + margin: 0; + padding: 12px; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; +} +.openerp .oe_dashboard .oe_action .oe_header:hover { + cursor: move; +} +.openerp .oe_dashboard .oe_action .oe_header .oe_icon { + float: right; + cursor: pointer; + color: #b3b3b3; +} +.openerp .oe_dashboard .oe_action .oe_header .oe_icon:hover { + color: #666666; + text-decoration: none; +} +.openerp .oe_dashboard .oe_action .oe_header .oe_close:after { + content: "×"; + margin-left: 4px; +} +.openerp .oe_dashboard .oe_action .oe_header .oe_minimize:after { + content: "-"; + margin-left: 4px; +} +.openerp .oe_dashboard .oe_action .oe_header .oe_maximize:after { + content: "+"; + margin-left: 4px; +} +.openerp .oe_dashboard .oe_action .oe_header_empty { + padding-top: 0; + padding-bottom: 2px; +} +.openerp .oe_dashboard .oe_action .oe_button_create { + margin-left: 4px; + padding: 0 4px 0 4px; + height: 16px !important; +} +.openerp .oe_dashboard .oe_action .oe_content { + padding: 0 12px 12px 12px; +} +.openerp .oe_dashboard .oe_action .oe_content .oe_view_manager_header { + display: none; +} +.openerp .oe_dashboard .oe_action .oe_content .oe_list_content > thead { + border-bottom: 1px; +} +.openerp .oe_dashboard .oe_action .oe_content .oe_list_content > tbody tr:nth-child(odd) { + background: transparent; } diff --git a/addons/web_dashboard/static/src/css/dashboard.sass b/addons/web_dashboard/static/src/css/dashboard.sass new file mode 100644 index 00000000000..4a73d6f6f3b --- /dev/null +++ b/addons/web_dashboard/static/src/css/dashboard.sass @@ -0,0 +1,74 @@ +@import "base.sass" +.openerp + .oe_dashboard_links + text-align: right + margin: 0 4px 6px 0 + .oe_dashboard + width: 100% + .oe_action + margin: 0 8px 8px 0 + background-color: white + border: 1px solid + border-color: #e5e5e5 #dbdbdb #d2d2d2 + @include radius(3px) + @include box-shadow(0 0 2px rgba(0,0,0,0.2)) + .oe_header + font-size: 16px + vertical-align: middle + margin: 0 + padding: 12px + @include radius(3px 3px 0 0) + + //border-bottom: 1px dotted #dbdbdb + //@include radius(2px 2px 0 0) + //@include vertical-gradient(#FCFCFC, #DEDEDE) + &:hover + cursor: move + .oe_icon + float: right + cursor: pointer + color: #b3b3b3 + &:hover + color: #666 + text-decoration: none + .oe_close:after + content: "×" + margin-left: 4px + .oe_minimize:after + content: "-" + margin-left: 4px + .oe_maximize:after + content: "+" + margin-left: 4px + .oe_header_empty + padding-top: 0 + padding-bottom: 2px + .oe_button_create + margin-left: 4px + padding: 0 4px 0 4px + height: 16px !important + //.oe_rename + //float: left + //padding-right: 4px + //position: relative + //top: 1px + //.oe_input + //height: 16px; + //position: relative; + //top: 2px; + //.ui-sortable-placeholder + //border: 1px dotted black; + //visibility: visible !important; + //height: 50px !important; + //* + //visibility: hidden; + .oe_content + padding: 0 12px 12px 12px + .oe_view_manager_header + display: none + .oe_list_content + > thead + border-bottom: 1px + > tbody + tr:nth-child(odd) + background: transparent diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js index fea775d4ee8..d17906d1c4f 100644 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -20,7 +20,7 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ this.$element.find('.oe_dashboard_column').sortable({ connectWith: '.oe_dashboard_column', - handle: '.oe_dashboard_action_header', + handle: '.oe_header', scroll: false }).disableSelection().bind('sortstop', self.do_save_dashboard); @@ -28,8 +28,8 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ this.$element.find('.oe_dashboard_link_reset').click(this.on_reset); this.$element.find('.oe_dashboard_link_change_layout').click(this.on_change_layout); - this.$element.delegate('.oe_dashboard_column .oe_dashboard_fold', 'click', this.on_fold_action); - this.$element.delegate('.oe_dashboard_column .ui-icon-closethick', 'click', this.on_close_action); + this.$element.delegate('.oe_dashboard_column .oe_fold', 'click', this.on_fold_action); + this.$element.delegate('.oe_dashboard_column .oe_close', 'click', this.on_close_action); // Init actions _.each(this.node.children, function(column, column_index) { @@ -80,7 +80,7 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ var $last_column = $(); $dashboard.find('.oe_dashboard_column').each(function(k, v) { if (k >= nlayout) { - $(v).find('.oe_dashboard_action').appendTo($last_column); + $(v).find('.oe_action').appendTo($last_column); } else { $last_column = $(v); } @@ -93,20 +93,20 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ }, on_fold_action: function(e) { var $e = $(e.currentTarget), - $action = $e.parents('.oe_dashboard_action:first'), + $action = $e.parents('.oe_action:first'), id = parseInt($action.attr('data-id'), 10); - if ($e.is('.ui-icon-minusthick')) { + if ($e.is('.oe_minimize')) { $action.data('action_attrs').fold = '1'; } else { delete($action.data('action_attrs').fold); } - $e.toggleClass('ui-icon-minusthick ui-icon-plusthick'); - $action.find('.oe_dashboard_action_content').toggle(); + $e.toggleClass('oe_minimize oe_maximize'); + $action.find('.oe_content').toggle(); this.do_save_dashboard(); }, on_close_action: function(e) { if (confirm(_t("Are you sure you want to remove this item ?"))) { - $(e.currentTarget).parents('.oe_dashboard_action:first').remove(); + $(e.currentTarget).parents('.oe_action:first').remove(); this.do_save_dashboard(); } }, @@ -119,7 +119,7 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ }; this.$element.find('.oe_dashboard_column').each(function() { var actions = []; - $(this).find('.oe_dashboard_action').each(function() { + $(this).find('.oe_action').each(function() { var action_id = $(this).attr('data-id'), new_attrs = _.clone($(this).data('action_attrs')); if (new_attrs.domain) { diff --git a/addons/web_dashboard/static/src/xml/web_dashboard.xml b/addons/web_dashboard/static/src/xml/web_dashboard.xml index 68dda7d7f67..6155ebc7fe5 100644 --- a/addons/web_dashboard/static/src/xml/web_dashboard.xml +++ b/addons/web_dashboard/static/src/xml/web_dashboard.xml @@ -21,16 +21,16 @@
    -
    -

    +
    +

      - - - - + + + +

    -
    +
    From 1a3bd4596143b27cd7679b30711846eac88c5bf9 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 15:48:51 +0200 Subject: [PATCH 071/119] [FIX] Used json with binary/image controller bzr revid: fme@openerp.com-20120809134851-3yl6skfch2q1f7q0 --- addons/web/static/src/js/view_form.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b8acdfea4cd..4d06cb2d767 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -4616,8 +4616,9 @@ instance.web.form.FieldBinaryImage = instance.web.form.FieldBinary.extend({ if (this.get('value') && ! /^\d+(\.\d*)? \w+$/.test(this.get('value'))) { url = 'data:image/png;base64,' + this.get('value'); } else if (this.get('value')) { + var id = escape(JSON.stringify(this.view.datarecord.id || null)); url = '/web/binary/image?session_id=' + this.session.session_id + '&model=' + - this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name + '&t=' + (new Date().getTime()); + this.view.dataset.model +'&id=' + id + '&field=' + this.name + '&t=' + (new Date().getTime()); } else { url = "/web/static/src/img/placeholder.png"; } From 594862e93a97b98be7b71e0ab0801d8724d74082 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 16:23:46 +0200 Subject: [PATCH 072/119] [IMP] binary/image should be backward compatible when id url parameter is empty bzr revid: fme@openerp.com-20120809142346-79xiq48qbgx7743i --- addons/web/controllers/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index c5a5cfec5b6..38553502fc7 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1373,7 +1373,7 @@ class Binary(openerpweb.Controller): retag = hashed_session try: - id = simplejson.loads(id) + id = None if not id else simplejson.loads(id) if type(id) is list: id = id[0] # m2o if not id: From 5afe606fd868695b57d9c985e1e93efc0b2ce54c Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 16:31:53 +0200 Subject: [PATCH 073/119] [FIX] res.users small and medium images has no default value bzr revid: fme@openerp.com-20120809143153-goevnqtq1l6f0y73 --- openerp/addons/base/res/res_users.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index a3ae0bfa9eb..1729e9e7784 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -325,6 +325,8 @@ class users(osv.osv): 'context_lang': lambda self, cr, uid, context: context.get('lang', 'en_US'), 'context_tz': lambda self, cr, uid, context: context.get('tz', False), 'image': _get_default_image, + 'image_small': _get_default_image, + 'image_medium': _get_default_image, 'active' : True, 'menu_id': _get_menu, 'company_id': _get_company, From f51eb19e4cea27d1749782cf09c7d60cd4cc701a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 17:01:26 +0200 Subject: [PATCH 074/119] [FIX] res.partners small and medium images has no default value bzr revid: fme@openerp.com-20120809150126-9rrikeyqi5uww5pd --- openerp/addons/base/res/res_partner.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index ec6d023a150..d275c0c7b4e 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -232,6 +232,8 @@ class res_partner(osv.osv): 'type': 'default', 'use_parent_address': True, 'image': lambda self, cr, uid, context: self._get_default_image(cr, uid, False, context), + 'image_small': lambda self, cr, uid, context: self._get_default_image(cr, uid, False, context), + 'image_medium': lambda self, cr, uid, context: self._get_default_image(cr, uid, False, context), } def copy(self, cr, uid, id, default=None, context=None): From fb86ddb644bf717f457b3f647f91b186caa64046 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Thu, 9 Aug 2012 17:20:43 +0200 Subject: [PATCH 075/119] [IMP] merge web_dashboard module into board module of addons branch [IMP] extract dashboard part of web into board module bzr revid: chs@openerp.com-20120809152043-0yfm6l2zt44eiqrb --- addons/web/controllers/main.py | 40 --- addons/web/static/src/js/search.js | 90 +---- addons/web/static/src/xml/base.xml | 15 +- addons/web_dashboard/__init__.py | 2 - addons/web_dashboard/__openerp__.py | 15 - addons/web_dashboard/controllers.py | 31 -- addons/web_dashboard/i18n/ar.po | 93 ----- addons/web_dashboard/i18n/bg.po | 95 ----- addons/web_dashboard/i18n/bn.po | 95 ----- addons/web_dashboard/i18n/bs.po | 85 ----- addons/web_dashboard/i18n/ca.po | 63 ---- addons/web_dashboard/i18n/cs.po | 96 ----- addons/web_dashboard/i18n/da.po | 84 ----- addons/web_dashboard/i18n/de.po | 93 ----- addons/web_dashboard/i18n/en_GB.po | 95 ----- addons/web_dashboard/i18n/es.po | 95 ----- addons/web_dashboard/i18n/es_CL.po | 95 ----- addons/web_dashboard/i18n/es_CR.po | 96 ----- addons/web_dashboard/i18n/es_EC.po | 95 ----- addons/web_dashboard/i18n/et.po | 63 ---- addons/web_dashboard/i18n/fi.po | 95 ----- addons/web_dashboard/i18n/fr.po | 96 ----- addons/web_dashboard/i18n/gl.po | 95 ----- addons/web_dashboard/i18n/hr.po | 93 ----- addons/web_dashboard/i18n/id.po | 86 ----- addons/web_dashboard/i18n/it.po | 95 ----- addons/web_dashboard/i18n/ja.po | 93 ----- addons/web_dashboard/i18n/ka.po | 94 ----- addons/web_dashboard/i18n/mk.po | 88 ----- addons/web_dashboard/i18n/mn.po | 94 ----- addons/web_dashboard/i18n/nb.po | 69 ---- addons/web_dashboard/i18n/nl.po | 95 ----- addons/web_dashboard/i18n/nl_BE.po | 94 ----- addons/web_dashboard/i18n/pl.po | 95 ----- addons/web_dashboard/i18n/pt.po | 95 ----- addons/web_dashboard/i18n/pt_BR.po | 95 ----- addons/web_dashboard/i18n/ro.po | 95 ----- addons/web_dashboard/i18n/ru.po | 94 ----- addons/web_dashboard/i18n/sk.po | 63 ---- addons/web_dashboard/i18n/sl.po | 93 ----- addons/web_dashboard/i18n/sq.po | 63 ---- addons/web_dashboard/i18n/sr@latin.po | 88 ----- addons/web_dashboard/i18n/sv.po | 94 ----- addons/web_dashboard/i18n/tr.po | 94 ----- addons/web_dashboard/i18n/uk.po | 63 ---- addons/web_dashboard/i18n/web_dashboard.pot | 64 ---- addons/web_dashboard/i18n/zh_CN.po | 93 ----- .../static/src/css/dashboard.css | 309 ---------------- .../static/src/img/layout_1-1-1.png | Bin 306 -> 0 bytes .../static/src/img/layout_1-1.png | Bin 313 -> 0 bytes .../static/src/img/layout_1-2.png | Bin 313 -> 0 bytes .../web_dashboard/static/src/img/layout_1.png | Bin 292 -> 0 bytes .../static/src/img/layout_2-1.png | Bin 304 -> 0 bytes .../static/src/img/view_todo_arrow.png | Bin 3389 -> 0 bytes .../web_dashboard/static/src/js/dashboard.js | 333 ------------------ .../static/src/xml/web_dashboard.xml | 64 ---- 56 files changed, 12 insertions(+), 4506 deletions(-) delete mode 100644 addons/web_dashboard/__init__.py delete mode 100644 addons/web_dashboard/__openerp__.py delete mode 100644 addons/web_dashboard/controllers.py delete mode 100644 addons/web_dashboard/i18n/ar.po delete mode 100644 addons/web_dashboard/i18n/bg.po delete mode 100644 addons/web_dashboard/i18n/bn.po delete mode 100644 addons/web_dashboard/i18n/bs.po delete mode 100644 addons/web_dashboard/i18n/ca.po delete mode 100644 addons/web_dashboard/i18n/cs.po delete mode 100644 addons/web_dashboard/i18n/da.po delete mode 100644 addons/web_dashboard/i18n/de.po delete mode 100644 addons/web_dashboard/i18n/en_GB.po delete mode 100644 addons/web_dashboard/i18n/es.po delete mode 100644 addons/web_dashboard/i18n/es_CL.po delete mode 100644 addons/web_dashboard/i18n/es_CR.po delete mode 100644 addons/web_dashboard/i18n/es_EC.po delete mode 100644 addons/web_dashboard/i18n/et.po delete mode 100644 addons/web_dashboard/i18n/fi.po delete mode 100644 addons/web_dashboard/i18n/fr.po delete mode 100644 addons/web_dashboard/i18n/gl.po delete mode 100644 addons/web_dashboard/i18n/hr.po delete mode 100644 addons/web_dashboard/i18n/id.po delete mode 100644 addons/web_dashboard/i18n/it.po delete mode 100644 addons/web_dashboard/i18n/ja.po delete mode 100644 addons/web_dashboard/i18n/ka.po delete mode 100644 addons/web_dashboard/i18n/mk.po delete mode 100644 addons/web_dashboard/i18n/mn.po delete mode 100644 addons/web_dashboard/i18n/nb.po delete mode 100644 addons/web_dashboard/i18n/nl.po delete mode 100644 addons/web_dashboard/i18n/nl_BE.po delete mode 100644 addons/web_dashboard/i18n/pl.po delete mode 100644 addons/web_dashboard/i18n/pt.po delete mode 100644 addons/web_dashboard/i18n/pt_BR.po delete mode 100644 addons/web_dashboard/i18n/ro.po delete mode 100644 addons/web_dashboard/i18n/ru.po delete mode 100644 addons/web_dashboard/i18n/sk.po delete mode 100644 addons/web_dashboard/i18n/sl.po delete mode 100644 addons/web_dashboard/i18n/sq.po delete mode 100644 addons/web_dashboard/i18n/sr@latin.po delete mode 100644 addons/web_dashboard/i18n/sv.po delete mode 100644 addons/web_dashboard/i18n/tr.po delete mode 100644 addons/web_dashboard/i18n/uk.po delete mode 100644 addons/web_dashboard/i18n/web_dashboard.pot delete mode 100644 addons/web_dashboard/i18n/zh_CN.po delete mode 100644 addons/web_dashboard/static/src/css/dashboard.css delete mode 100644 addons/web_dashboard/static/src/img/layout_1-1-1.png delete mode 100644 addons/web_dashboard/static/src/img/layout_1-1.png delete mode 100644 addons/web_dashboard/static/src/img/layout_1-2.png delete mode 100644 addons/web_dashboard/static/src/img/layout_1.png delete mode 100644 addons/web_dashboard/static/src/img/layout_2-1.png delete mode 100644 addons/web_dashboard/static/src/img/view_todo_arrow.png delete mode 100644 addons/web_dashboard/static/src/js/dashboard.js delete mode 100644 addons/web_dashboard/static/src/xml/web_dashboard.xml diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 7e79fd9d2ea..acc24c36f38 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1311,46 +1311,6 @@ class SearchView(View): del filter['domain'] return filters - - @openerpweb.jsonrequest - def add_to_dashboard(self, req, menu_id, action_id, context_to_save, domain, view_mode, name=''): - to_eval = common.nonliterals.CompoundContext(context_to_save) - to_eval.session = req.session - ctx = dict((k, v) for k, v in to_eval.evaluate().iteritems() - if not k.startswith('search_default_')) - ctx['dashboard_merge_domains_contexts'] = False # TODO: replace this 6.1 workaround by attribute on - domain = common.nonliterals.CompoundDomain(domain) - domain.session = req.session - domain = domain.evaluate() - - dashboard_action = load_actions_from_ir_values(req, 'action', 'tree_but_open', - [('ir.ui.menu', menu_id)], False) - if dashboard_action: - action = dashboard_action[0][2] - if action['res_model'] == 'board.board' and action['views'][0][1] == 'form': - # Maybe should check the content instead of model board.board ? - view_id = action['views'][0][0] - board = req.session.model(action['res_model']).fields_view_get(view_id, 'form') - if board and 'arch' in board: - xml = ElementTree.fromstring(board['arch']) - column = xml.find('./board/column') - if column is not None: - new_action = ElementTree.Element('action', { - 'name' : str(action_id), - 'string' : name, - 'view_mode' : view_mode, - 'context' : str(ctx), - 'domain' : str(domain) - }) - column.insert(0, new_action) - arch = ElementTree.tostring(xml, 'utf-8') - return req.session.model('ir.ui.view.custom').create({ - 'user_id': req.session._uid, - 'ref_id': view_id, - 'arch': arch - }, req.session.eval_context(req.context)) - - return False class Binary(openerpweb.Controller): _cp_path = "/web/binary" diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 53daa40ae31..d8611b924cf 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -635,6 +635,16 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea return null; } }, + + add_common_inputs: function() { + // add Filters to this.inputs, need view.controls filled + (new instance.web.search.Filters(this)); + // add custom filters to this.inputs + (new instance.web.search.CustomFilters(this)); + // add Advanced to this.inputs + (new instance.web.search.Advanced(this)); + }, + on_loaded: function(data) { var self = this; this.fields_view = data.fields_view; @@ -649,20 +659,13 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea data.fields_view['arch'].children, data.fields_view.fields); - // add Filters to this.inputs, need view.controls filled - (new instance.web.search.Filters(this)); - // add custom filters to this.inputs - (new instance.web.search.CustomFilters(this)); - // add Advanced to this.inputs - (new instance.web.search.Advanced(this)); + this.add_common_inputs(); // build drawer var drawer_started = $.when.apply( null, _(this.select_for_drawer()).invoke( 'appendTo', this.$element.find('.oe_searchview_drawer'))); - new instance.web.search.AddToReporting(this).appendTo($('.oe_searchview_drawer', this.$element)); - // load defaults var defaults_fetched = $.when.apply(null, _(this.inputs).invoke( 'facet_for_defaults', this.defaults)).then(function () { @@ -683,9 +686,6 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea case 'advanced_filter': this.extended_search.on_activate(); break; - case 'add_to_dashboard': - this.on_add_to_dashboard(); - break; case '': this.do_clear(); } @@ -1678,74 +1678,6 @@ instance.web.search.Filters = instance.web.search.Input.extend({ })); } }); -instance.web.search.AddToReporting = instance.web.Widget.extend({ - template: 'SearchView.addtoreporting', - _in_drawer: true, - start: function () { - var self = this; - this.$element - .on('click', 'h4', this.proxy('show_option')) - .on('submit', 'form', function (e) { - e.preventDefault(); - self.add_dashboard(); - }); - return this.load_data().then(this.proxy("render_data")); - }, - load_data:function(){ - if (!instance.webclient) { return $.Deferred().reject(); } - var dashboard_menu = instance.webclient.menu.data.data.children; - return new instance.web.Model('ir.model.data') - .query(['res_id']) - .filter([['name','=','menu_reporting_dashboard']]) - .first().pipe(function (result) { - var menu = _(dashboard_menu).chain() - .pluck('children') - .flatten(true) - .find(function (child) { return child.id === result.res_id; }) - .value(); - return menu ? menu.children : []; - }); - }, - render_data: function(dashboard_choices){ - var selection = instance.web.qweb.render( - "SearchView.addtoreporting.selection", { - selections: dashboard_choices}); - this.$("input").before(selection) - }, - add_dashboard:function(){ - var self = this; - var getParent = this.getParent(); - var view_parent = this.getParent().getParent(); - if (! view_parent.action || ! this.$element.find("select").val()) - return this.do_warn("Can't find dashboard action"); - var data = getParent.build_search_data(); - var context = new instance.web.CompoundContext(getParent.dataset.get_context() || []); - var domain = new instance.web.CompoundDomain(getParent.dataset.get_domain() || []); - _.each(data.contexts, context.add, context); - _.each(data.domains, domain.add, domain); - this.rpc('/web/searchview/add_to_dashboard', { - menu_id: this.$element.find("select").val(), - action_id: view_parent.action.id, - context_to_save: context, - domain: domain, - view_mode: view_parent.active_view, - name: this.$element.find("input").val() - }, function(r) { - if (r === false) { - self.do_warn("Could not add filter to dashboard"); - } else { - self.$element.toggleClass('oe_opened'); - self.do_notify("Filter added to dashboard", ''); - } - }); - }, - show_option:function(){ - this.$element.toggleClass('oe_opened'); - if (! this.$element.hasClass('oe_opened')) - return; - this.$("input").val(this.getParent().fields_view.name || "" ); - } -}); instance.web.search.Advanced = instance.web.search.Input.extend({ template: 'SearchView.advanced', diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index d16c34a6c5f..e6566c7974d 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1453,20 +1453,7 @@

    -
    -

    Add to Dashboard

    -
    -

    - -
    -
    - - - +

    Advanced Search

    diff --git a/addons/web_dashboard/__init__.py b/addons/web_dashboard/__init__.py deleted file mode 100644 index 80b891a3d7a..00000000000 --- a/addons/web_dashboard/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env python -import controllers diff --git a/addons/web_dashboard/__openerp__.py b/addons/web_dashboard/__openerp__.py deleted file mode 100644 index 54f9ae294ac..00000000000 --- a/addons/web_dashboard/__openerp__.py +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "Web Dashboard", - "category": "Hidden", - "description":"""OpenERP Web Dashboard view.""", - "version": "2.0", - "depends": ['web'], - "js": [ - 'static/src/js/dashboard.js' - ], - "css": ['static/src/css/dashboard.css'], - 'qweb' : [ - "static/src/xml/*.xml", - ], - 'auto_install': True -} diff --git a/addons/web_dashboard/controllers.py b/addons/web_dashboard/controllers.py deleted file mode 100644 index f7af6180e41..00000000000 --- a/addons/web_dashboard/controllers.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -try: - import openerp.addons.web.common.http as openerpweb -except ImportError: - import web.common.http as openerpweb - -WIDGET_CONTENT_PATTERN = """ - - [[Widget %(id)d]] - - %(content)s - - - -""" -class Widgets(openerpweb.Controller): - _cp_path = '/web_dashboard/widgets' - - @openerpweb.httprequest - def content(self, request, widget_id): - return WIDGET_CONTENT_PATTERN % request.session.model('res.widget').read( - [int(widget_id)], ['content'], request.session.eval_context(request.context) - )[0] diff --git a/addons/web_dashboard/i18n/ar.po b/addons/web_dashboard/i18n/ar.po deleted file mode 100644 index 83cefe801f0..00000000000 --- a/addons/web_dashboard/i18n/ar.po +++ /dev/null @@ -1,93 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-08 00:47+0000\n" -"Last-Translator: kifcaliph \n" -"Language-Team: Arabic \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "تعديل التنسيق" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "هل متأكد من إزالة هذا البند" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "إعادة هيئة النسق..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "إستعادة" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "تغيير النسق..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "تغيير النسق" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "إنشاء" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "اختر مخطط للعرض" - -#~ msgid "progress:" -#~ msgstr "التقدم:" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "أهلاً و مرحباً بكم في Openerp عربي" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "اضغط علي الوظائف الموجودة بالأسفل للبدء في إعداد نظامك" - -#~ msgid "Your login:" -#~ msgstr "اسم الدخول لك:" - -#~ msgid "Remember to bookmark" -#~ msgstr "تذكر كمفضلة" - -#~ msgid "This url" -#~ msgstr "هذا الرابط" - -#~ msgid "Uncategorized" -#~ msgstr "غير مصنف" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "تنفيذ المهمة \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "علم هذه المهمة كمنجزة" diff --git a/addons/web_dashboard/i18n/bg.po b/addons/web_dashboard/i18n/bg.po deleted file mode 100644 index 6c15d390f8e..00000000000 --- a/addons/web_dashboard/i18n/bg.po +++ /dev/null @@ -1,95 +0,0 @@ -# Bulgarian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-07-09 13:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Редакция План" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Сигурни ли сте, че искате да изтриете този елемент ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Връщане в начално състояние Подредба.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Връщане в начално състояние" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Смяна Подредба.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Промяна Подредба" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Създаване" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Избери подредба на табло" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Изпълни задача \"%s\"" - -#~ msgid "Uncategorized" -#~ msgstr "Без категория" - -#~ msgid "Remember to bookmark" -#~ msgstr "Запомни като отметка" - -#~ msgid "This url" -#~ msgstr "Този url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Кликнете върху фунциите изброени по-долу за да ги изпълните и конфигурирате " -#~ "системата" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Добре дошли в OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Вашето потребителско име:" - -#~ msgid "progress:" -#~ msgstr "обработка:" - -#~ msgid "Mark this task as done" -#~ msgstr "Маркирай задачата като приключена" diff --git a/addons/web_dashboard/i18n/bn.po b/addons/web_dashboard/i18n/bn.po deleted file mode 100644 index a5e1a61127d..00000000000 --- a/addons/web_dashboard/i18n/bn.po +++ /dev/null @@ -1,95 +0,0 @@ -# Bengali 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-11-24 12:53+0000\n" -"Last-Translator: nasir khan saikat \n" -"Language-Team: Bengali \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "স্থাপনকৌশল সম্পাদনা করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "আপনি কি নিশ্চিত যে আপনি এই জিনিসটি মুছে ফেলতে চাইছেন?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "স্থাপনকৌশল পুনঃনির্ধারণ করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "পুনঃনির্ধারণ করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "স্থাপনকৌশল পরিবর্তন করুন.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "স্থাপনকৌশল পরিবর্তন করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "তৈরি করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "ড্যাশবোর্ড বিন্যাস নির্বাচন করুন" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "\"%s\" কাজ চালু করুন" - -#~ msgid "Mark this task as done" -#~ msgstr "কাজটি সম্পন্ন হিসাবে চিহ্নিত করন" - -#~ msgid "Uncategorized" -#~ msgstr "অশ্রেণীভুক্ত" - -#~ msgid "Your login:" -#~ msgstr "আপনার প্রবেশ দ্বার" - -#~ msgid "Remember to bookmark" -#~ msgstr "চিহ্নিত করতে মনে রাখুন" - -#~ msgid "This url" -#~ msgstr "এই ইউ-আর-এল" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "আপনার পদ্ধতিটি চালু এবং আকৃতিদান করার জন্য নিম্ন তালিকাভুক্ত " -#~ "কার্যকারিতাগুলিতে চাপুন" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "ওপেন-ই-আর-পি তে স্বাগতম" - -#~ msgid "progress:" -#~ msgstr "অগ্রগতি:" diff --git a/addons/web_dashboard/i18n/bs.po b/addons/web_dashboard/i18n/bs.po deleted file mode 100644 index d90ada2c822..00000000000 --- a/addons/web_dashboard/i18n/bs.po +++ /dev/null @@ -1,85 +0,0 @@ -# Bosnian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-04-15 00:11+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bosnian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Jeste li sigurni da želite ukloniti predmet?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Resetuj" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Izmijeni izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Napravi" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" - -#~ msgid "Mark this task as done" -#~ msgstr "Označi zadatak kao izvršen" - -#~ msgid "Uncategorized" -#~ msgstr "Nekategorisano" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Izvrši zadatak \"%s\"" - -#~ msgid "This url" -#~ msgstr "Ovaj url" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Dobro došli na OpenERP" - -#~ msgid "progress:" -#~ msgstr "Napredak:" - -#~ msgid "Your login:" -#~ msgstr "Vaš login:" diff --git a/addons/web_dashboard/i18n/ca.po b/addons/web_dashboard/i18n/ca.po deleted file mode 100644 index 1942107d284..00000000000 --- a/addons/web_dashboard/i18n/ca.po +++ /dev/null @@ -1,63 +0,0 @@ -# Catalan translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-06-16 17:52+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Catalan \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/cs.po b/addons/web_dashboard/i18n/cs.po deleted file mode 100644 index a0432719477..00000000000 --- a/addons/web_dashboard/i18n/cs.po +++ /dev/null @@ -1,96 +0,0 @@ -# Czech translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-22 11:16+0000\n" -"Last-Translator: Jiří Hajda \n" -"Language-Team: openerp-i18n-czech \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" -"X-Poedit-Language: Czech\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Upravit rozvržení" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Jste si jistit, že chcete odstranit tuto položku?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Vynulovat rozvržení..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Vynulovat" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Změnit rozvržení..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Změnit rozvržení" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Vytvořit" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Vybrat rozvržení nástěnky" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Vítejte v OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Bez kategorie" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Vykonat úlohu \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Označit úlohu jako dokončenou" - -#~ msgid "progress:" -#~ msgstr "průběh:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klikněte na seznam funkčností vypsaných níže k jejich spuštění a nastavení " -#~ "systému" - -#~ msgid "Remember to bookmark" -#~ msgstr "Pamatovat do záložek" - -#~ msgid "This url" -#~ msgstr "Toto url" - -#~ msgid "Your login:" -#~ msgstr "Vaše přihlášení:" diff --git a/addons/web_dashboard/i18n/da.po b/addons/web_dashboard/i18n/da.po deleted file mode 100644 index 2e0a147b870..00000000000 --- a/addons/web_dashboard/i18n/da.po +++ /dev/null @@ -1,84 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-07-01 09:05+0000\n" -"Last-Translator: Aputsiaq Niels Janussen \n" -"Language-Team: Danish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Redigér layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Er du sikker på at du vil fjerne dette element?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Nulstil" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Skift layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Opret" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Vælg layout for kontrolpanel" - -#~ msgid "progress:" -#~ msgstr "fremskridt:" - -#~ msgid "Uncategorized" -#~ msgstr "Uden kategori" - -#~ msgid "Mark this task as done" -#~ msgstr "Markér denne opgave som løst" - -#~ msgid "Your login:" -#~ msgstr "Dit logind:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Husk at sætte bogmærke" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Velkommen til OpenERP" - -#~ msgid "This url" -#~ msgstr "Denne url" diff --git a/addons/web_dashboard/i18n/de.po b/addons/web_dashboard/i18n/de.po deleted file mode 100644 index 0501cf2b260..00000000000 --- a/addons/web_dashboard/i18n/de.po +++ /dev/null @@ -1,93 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-07 19:10+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" -"Language-Team: German \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Layout bearbeiten" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Wollen Sie dieses Element wirklich löschen?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Layout zurücksetzen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Zurücksetzen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Layout ändern" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Layout ändern" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Anlegen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Wählen Sie das Dashboard Layout" - -#~ msgid "progress:" -#~ msgstr "Fortschritt:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "Wähle untenstehende Funktionen um diese zu konfigurieren" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Willkommen bei OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Ihr Login:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Lesezeichen nicht vergessen!" - -#~ msgid "This url" -#~ msgstr "Diese URL" - -#~ msgid "Uncategorized" -#~ msgstr "Nicht kategorisiert" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Aufgabe \"%s\" ausführen" - -#~ msgid "Mark this task as done" -#~ msgstr "Als erledigt markieren" diff --git a/addons/web_dashboard/i18n/en_GB.po b/addons/web_dashboard/i18n/en_GB.po deleted file mode 100644 index 2d1071c68fc..00000000000 --- a/addons/web_dashboard/i18n/en_GB.po +++ /dev/null @@ -1,95 +0,0 @@ -# English (United Kingdom) translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-09 11:37+0000\n" -"Last-Translator: John Bradshaw \n" -"Language-Team: English (United Kingdom) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Edit Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Are you sure you want to remove this item ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reset Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reset" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Change Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Change Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Create" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Choose dashboard layout" - -#~ msgid "Uncategorized" -#~ msgstr "Uncategorised" - -#~ msgid "Your login:" -#~ msgstr "Your login:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Remember to bookmark" - -#~ msgid "This url" -#~ msgstr "This url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Click on the functionalities listed below to launch them and configure your " -#~ "system" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Welcome to OpenERP" - -#~ msgid "progress:" -#~ msgstr "progress:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Execute task \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Mark this task as done" diff --git a/addons/web_dashboard/i18n/es.po b/addons/web_dashboard/i18n/es.po deleted file mode 100644 index e82b441ae25..00000000000 --- a/addons/web_dashboard/i18n/es.po +++ /dev/null @@ -1,95 +0,0 @@ -# Spanish 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-22 10:34+0000\n" -"Last-Translator: Jorge L Tupac-Yupanqui \n" -"Language-Team: Spanish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Esta seguro que quiere eliminar este item?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reiniciar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reiniciar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar Disposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Elegir disposición del tablero" - -#~ msgid "progress:" -#~ msgstr "progreso:" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Haga click en las funcionalidades listadas debajo para lanzarlas y " -#~ "configurar su sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenido a OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Sin categoría" - -#~ msgid "Your login:" -#~ msgstr "Su inicio de sesión:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recordar en marcadores" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Ejecutar tarea \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarea como terminada" diff --git a/addons/web_dashboard/i18n/es_CL.po b/addons/web_dashboard/i18n/es_CL.po deleted file mode 100644 index 5a4a7b62396..00000000000 --- a/addons/web_dashboard/i18n/es_CL.po +++ /dev/null @@ -1,95 +0,0 @@ -# Spanish (Chile) translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-04-14 15:21+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Spanish (Chile) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Modificar diseño" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Esta seguro que quiere eliminar este item?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reiniciar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reiniciar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar Disposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Elegir disposición del tablero" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Ejecutar tarea \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarea como terminada" - -#~ msgid "Uncategorized" -#~ msgstr "Sin categoría" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recordar en marcadores" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Haga click en las funcionalidades listadas debajo para lanzarlas y " -#~ "configurar su sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenido a OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Su inicio de sesión:" - -#~ msgid "progress:" -#~ msgstr "progreso:" diff --git a/addons/web_dashboard/i18n/es_CR.po b/addons/web_dashboard/i18n/es_CR.po deleted file mode 100644 index 8d9fc9696c5..00000000000 --- a/addons/web_dashboard/i18n/es_CR.po +++ /dev/null @@ -1,96 +0,0 @@ -# Spanish 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 22:16+0000\n" -"Last-Translator: Freddy Gonzalez \n" -"Language-Team: Spanish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" -"Language: es\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar formato" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Está seguro/a que desea eliminar este elemento?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Re-establecer formato..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reiniciar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar formato..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar formato" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Escoger disposición del tablero" - -#~ msgid "Uncategorized" -#~ msgstr "Sin categoría" - -#~ msgid "progress:" -#~ msgstr "progreso:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Haga clic en las funcionalidades enumeradas abajo para lanzarlas y " -#~ "configurar su sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenido a OpenERP" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recuerde marcar como favorito" - -#~ msgid "This url" -#~ msgstr "Esta dirección" - -#~ msgid "Your login:" -#~ msgstr "Su usuario:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Ejecutar tarea \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarea como terminada" diff --git a/addons/web_dashboard/i18n/es_EC.po b/addons/web_dashboard/i18n/es_EC.po deleted file mode 100644 index c44fa6dce54..00000000000 --- a/addons/web_dashboard/i18n/es_EC.po +++ /dev/null @@ -1,95 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-10-07 15:56+0000\n" -"Last-Translator: Cristian Salamea (Gnuthink) \n" -"Language-Team: Spanish (Ecuador) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Esta seguro que quiere eliminar este item?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reiniciar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reset" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar Disposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Elegir el diseño del panel de control" - -#~ msgid "progress:" -#~ msgstr "progreso:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Ejecutar tarea \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarea como terminada" - -#~ msgid "Uncategorized" -#~ msgstr "Sin categoría" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#~ msgid "Your login:" -#~ msgstr "Su inicio de sesión:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recordar en favoritos" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Haga click en las funcionalidades listadas debajo para lanzarlas y " -#~ "configurar su sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenido a OpenERP" diff --git a/addons/web_dashboard/i18n/et.po b/addons/web_dashboard/i18n/et.po deleted file mode 100644 index c7f5dd63220..00000000000 --- a/addons/web_dashboard/i18n/et.po +++ /dev/null @@ -1,63 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-10-10 19:29+0000\n" -"Last-Translator: Aare Vesi \n" -"Language-Team: Estonian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Lähtesta" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/fi.po b/addons/web_dashboard/i18n/fi.po deleted file mode 100644 index e11b22a20c6..00000000000 --- a/addons/web_dashboard/i18n/fi.po +++ /dev/null @@ -1,95 +0,0 @@ -# Finnish translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-19 12:00+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Muokkaa näkymää" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Oletko varma että haluat poistaa tämän osan ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Palauta asettelu.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Palauta" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Muuta asettelu.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Muuta asettelu" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Luo" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Valitse työpöydän asetttelu" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Suorita tehtävä \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Merkitse tämä tehtävä valmiiksi" - -#~ msgid "Uncategorized" -#~ msgstr "Luokittelemattomat" - -#~ msgid "Your login:" -#~ msgstr "Käyttäjätunnuksesi:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Muista luoda kirjainmerkki" - -#~ msgid "This url" -#~ msgstr "Tämä osoite" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klikkaa allalistattuja toimintoja käynnistääksesi ne ja määritelläksesi " -#~ "järjestelmäsi" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Tervetuloa OpenERP järjestelmään" - -#~ msgid "progress:" -#~ msgstr "edistyminen:" diff --git a/addons/web_dashboard/i18n/fr.po b/addons/web_dashboard/i18n/fr.po deleted file mode 100644 index 987722dbd7a..00000000000 --- a/addons/web_dashboard/i18n/fr.po +++ /dev/null @@ -1,96 +0,0 @@ -# French 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-15 09:15+0000\n" -"Last-Translator: Olivier Dony (OpenERP) \n" -"Language-Team: French \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Modifier l'agencement" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Voulez-vous réellement supprimer cet élément?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Réinitialiser l'agencement" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Réinitialiser" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Modifier l'agencement..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Modifier l'agencement" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Créer" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Choisissez la mise en page du tableau de bord" - -#~ msgid "Your login:" -#~ msgstr "Votre identifiant:" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenue dans OpenERP" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Démarrer la tâche \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marquer cette tâche comme accomplie" - -#~ msgid "Uncategorized" -#~ msgstr "Sans catégorie" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Les raccourcis ci-dessous permettent de démarrer les étapes principales de " -#~ "configuration de votre système" - -#~ msgid "Remember to bookmark" -#~ msgstr "" -#~ "Pensez à ajouter cette page à vos signets/marque pages en cliquant sur" - -#~ msgid "This url" -#~ msgstr "ce lien" - -#~ msgid "progress:" -#~ msgstr "Progression :" diff --git a/addons/web_dashboard/i18n/gl.po b/addons/web_dashboard/i18n/gl.po deleted file mode 100644 index fffdba5cd71..00000000000 --- a/addons/web_dashboard/i18n/gl.po +++ /dev/null @@ -1,95 +0,0 @@ -# Galician 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 09:13+0000\n" -"Last-Translator: Vicente \n" -"Language-Team: Galician \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Está seguro de querer eliminar este elemento?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reiniciar Dosposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reiniciar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar Disposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar Disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Cambiar disposición do taboleiro" - -#~ msgid "progress:" -#~ msgstr "progreso:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Pinchar nas funcionalidades listadas a continuación para lanzar e configurar " -#~ "o seu sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Benvido a OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Sen categorizar" - -#~ msgid "Your login:" -#~ msgstr "Seu inicio de sesión:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recordar o marcador" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Executar Tarefa \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarefa como feita" diff --git a/addons/web_dashboard/i18n/hr.po b/addons/web_dashboard/i18n/hr.po deleted file mode 100644 index 85303a24bb8..00000000000 --- a/addons/web_dashboard/i18n/hr.po +++ /dev/null @@ -1,93 +0,0 @@ -# Croatian 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-22 10:13+0000\n" -"Last-Translator: Goran Kliska \n" -"Language-Team: Croatian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Uredi raspored" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Želite li doista ukloniti ovu stavku ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Resetiraj razmještaj..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Vrati izvorno" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Promjeni razmještaj..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Promjeni raspored" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Kreiraj" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Odaberi raspored" - -#~ msgid "progress:" -#~ msgstr "napredak:" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Dobrodošli u svijet OpenERP-a" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "Odaberite funkcionalnost koju želite postaviti" - -#~ msgid "This url" -#~ msgstr "Ovaj url" - -#~ msgid "Your login:" -#~ msgstr "Vaša prijava:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Zabilježi u knjižne oznake" - -#~ msgid "Uncategorized" -#~ msgstr "Nekategorizirano" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Izvrši zadatak \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Označi ovaj zadatak kao obavljen" diff --git a/addons/web_dashboard/i18n/id.po b/addons/web_dashboard/i18n/id.po deleted file mode 100644 index 6bf1fa7a126..00000000000 --- a/addons/web_dashboard/i18n/id.po +++ /dev/null @@ -1,86 +0,0 @@ -# Indonesian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-08 15:13+0000\n" -"Last-Translator: Budi Iskandar \n" -"Language-Team: Indonesian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Ubah Tampilan" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Apakah Anda yakin untuk menghapus item ini ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Atur Ulang Tampilan" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Atur Ulang" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Ubah Tampilan.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Ubah Tampilan" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Buat" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Pilih Tampilan Dasbor" - -#~ msgid "Uncategorized" -#~ msgstr "Tanpa kategori" - -#~ msgid "Your login:" -#~ msgstr "Akun Anda :" - -#~ msgid "Remember to bookmark" -#~ msgstr "Ingatkan untuk menandai" - -#~ msgid "This url" -#~ msgstr "URL ini" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "Pilih Fungsi dibawah ini yang akan dikonfigurasikan ke sistem Anda" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Selamat Datang di OpenERP" - -#~ msgid "progress:" -#~ msgstr "Sedang diproses.." diff --git a/addons/web_dashboard/i18n/it.po b/addons/web_dashboard/i18n/it.po deleted file mode 100644 index dbe169dd27f..00000000000 --- a/addons/web_dashboard/i18n/it.po +++ /dev/null @@ -1,95 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 21:54+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" -"Language-Team: Italian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Modifica Layour" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Sicuro di voler cancellare questo elemento?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reimposta Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Ripristina" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambia Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambia Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crea" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Scegli layout dashboard" - -#~ msgid "progress:" -#~ msgstr "avanzamento:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Esegui task \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marca questa attività come completata" - -#~ msgid "Uncategorized" -#~ msgstr "Non categorizzato" - -#~ msgid "Remember to bookmark" -#~ msgstr "Salva nei bookmark" - -#~ msgid "Your login:" -#~ msgstr "Il tuo login:" - -#~ msgid "This url" -#~ msgstr "Questo url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Clicca sulla lista di funzionalità seguenti per eseguirle e configurare il " -#~ "sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Benvenuto su OpenERP" diff --git a/addons/web_dashboard/i18n/ja.po b/addons/web_dashboard/i18n/ja.po deleted file mode 100644 index 63544ec22f9..00000000000 --- a/addons/web_dashboard/i18n/ja.po +++ /dev/null @@ -1,93 +0,0 @@ -# Japanese translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-07-19 01:29+0000\n" -"Last-Translator: Akira Hiyama \n" -"Language-Team: Japanese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "レイアウトの編集" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "この項目を削除しますか?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "レイアウトのリセット" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "リセット" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "レイアウトの変更…" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "レイアウトの変更" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "作成" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "ダッシュボードレイアウトの選択" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "タスク \"%s\" を実行" - -#~ msgid "Mark this task as done" -#~ msgstr "このタスクを完了" - -#~ msgid "Uncategorized" -#~ msgstr "未分類" - -#~ msgid "Your login:" -#~ msgstr "あなたのログイン:" - -#~ msgid "Remember to bookmark" -#~ msgstr "ブックマークをお忘れなく" - -#~ msgid "This url" -#~ msgstr "このURL" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "あなたのシステムを設定するために下記に示した機能をクリックしてください。" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "OpenERPへようこそ" - -#~ msgid "progress:" -#~ msgstr "プロセス" diff --git a/addons/web_dashboard/i18n/ka.po b/addons/web_dashboard/i18n/ka.po deleted file mode 100644 index 5e816e13dab..00000000000 --- a/addons/web_dashboard/i18n/ka.po +++ /dev/null @@ -1,94 +0,0 @@ -# Georgian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-15 18:30+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Georgian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "განლაგების შეცვლა" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "დარწმუნებული ხართ რომ გსურთ ამ კომპონენტის წაშლა?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "საწყისი განლაგება" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "ხელახალი კონფიგურაცია" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "განლაგების შეცვლა.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "განლაგების შეცვლა" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "შექმნა" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "აირჩიეთ საინფორმაციო დაფის განლაგება" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "შეასრულე ამოცანა \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "მონიშნე ეს ამოცანა როგორც დასრულებული" - -#~ msgid "Uncategorized" -#~ msgstr "კატეგორიის გარეშე" - -#~ msgid "Your login:" -#~ msgstr "თქვენი მოხმარებელი:" - -#~ msgid "Remember to bookmark" -#~ msgstr "ჩაინიშნე ფავორიტებში" - -#~ msgid "This url" -#~ msgstr "ეს URL" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "დააწკაპუნეთ ქვემოთ ჩამოთვლილ ფუნქციონალზე რათა გაააქტიუროთ და დააკონფიგურიროთ" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "მოგესალმებით!" - -#~ msgid "progress:" -#~ msgstr "პროგრესი:" diff --git a/addons/web_dashboard/i18n/mk.po b/addons/web_dashboard/i18n/mk.po deleted file mode 100644 index cc7015f9e6d..00000000000 --- a/addons/web_dashboard/i18n/mk.po +++ /dev/null @@ -1,88 +0,0 @@ -# Macedonian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-08 11:07+0000\n" -"Last-Translator: Nikola Stojanoski \n" -"Language-Team: Macedonian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Измени изглед" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Дали сте стигурни дека сакате да го отстраните ојој предмет?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Ресетирај Изглед.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Ресетирај" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Измени изглед.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Измени изглед" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Креирај" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Одбери изглед на таблата" - -#~ msgid "Uncategorized" -#~ msgstr "Некатегоризирано" - -#~ msgid "Your login:" -#~ msgstr "Ваше корисничко име:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Не заборавајте да го обележите" - -#~ msgid "This url" -#~ msgstr "Овој линк" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Кликнете на функционалностите листани подоле за да ги стартувате и да го " -#~ "конфигуриате вашиот систем" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Добредојдовте во OpenERP" - -#~ msgid "progress:" -#~ msgstr "прогрес:" diff --git a/addons/web_dashboard/i18n/mn.po b/addons/web_dashboard/i18n/mn.po deleted file mode 100644 index 093966f7e72..00000000000 --- a/addons/web_dashboard/i18n/mn.po +++ /dev/null @@ -1,94 +0,0 @@ -# Mongolian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-06-13 17:34+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Mongolian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Бүрэлдэхүүнийг засах" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Энэ зүйлийг хасахдаа итгэлтэй байна уу?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Бүрэлдэхүүнийг сэргээх" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Сэргээх" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Бүрэлдэхүүнийг солих" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Бүрэлдэхүүнийг солих" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Үүсгэх" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Хянах самбарын зохиомжийг сонгох" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "\"%s\" Даалгаврыг хэрэгжүүлэх" - -#~ msgid "Mark this task as done" -#~ msgstr "Энэ даалгаврыг хийснээр тэмдэглэх" - -#~ msgid "Uncategorized" -#~ msgstr "Ангилагдаагүй" - -#~ msgid "Your login:" -#~ msgstr "Таны нэвтрэх нэр:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Доорх функционалийн жагсаалт дээр дарж ажилллуулж өөрийн системийн тохируулна" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "OpenERP-д тавтай морил" - -#~ msgid "progress:" -#~ msgstr "явц:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Тэмдэглэж авахаа мартаваа" - -#~ msgid "This url" -#~ msgstr "Энэ url нь" diff --git a/addons/web_dashboard/i18n/nb.po b/addons/web_dashboard/i18n/nb.po deleted file mode 100644 index b0e0847e04f..00000000000 --- a/addons/web_dashboard/i18n/nb.po +++ /dev/null @@ -1,69 +0,0 @@ -# Norwegian Bokmal translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-28 13:07+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Bokmal \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Rediger layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Tilbakestill" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Endre layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Endre layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" - -#~ msgid "Mark this task as done" -#~ msgstr "Merk denne oppgaven som ferdig" - -#~ msgid "Uncategorized" -#~ msgstr "Ikke kategorisert" diff --git a/addons/web_dashboard/i18n/nl.po b/addons/web_dashboard/i18n/nl.po deleted file mode 100644 index 1d3f241f6c8..00000000000 --- a/addons/web_dashboard/i18n/nl.po +++ /dev/null @@ -1,95 +0,0 @@ -# Dutch 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-19 08:25+0000\n" -"Last-Translator: Erwin \n" -"Language-Team: Dutch \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Bewerk Opmaak" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Weet u zeker dat u dit item wilt verwijderen?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reset Opmaak" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reset" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Verander Opmaak..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Opmaak wijzigen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Nieuw" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Kies dashboard layout" - -#~ msgid "progress:" -#~ msgstr "voortgang:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klink op de onderstaande functionaliteiten om ze de starten en uw systeem te " -#~ "configureren" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Welkom bij OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Geen categorie" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Voer taak \"%s\" uit" - -#~ msgid "Mark this task as done" -#~ msgstr "Markeer deze taak als voltooid" - -#~ msgid "Your login:" -#~ msgstr "Uw login:" - -#~ msgid "This url" -#~ msgstr "Deze pagina" - -#~ msgid "Remember to bookmark" -#~ msgstr "Vergeet niet een bladwijzer aan te maken van" diff --git a/addons/web_dashboard/i18n/nl_BE.po b/addons/web_dashboard/i18n/nl_BE.po deleted file mode 100644 index be9dd4e2610..00000000000 --- a/addons/web_dashboard/i18n/nl_BE.po +++ /dev/null @@ -1,94 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-05-15 14:13+0000\n" -"Last-Translator: Els Van Vossel (Agaplan) \n" -"Language-Team: Dutch (Belgium) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Lay-out bewerken" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Wilt u dit onderdeel verwijderen?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Lay-out herstellen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Beginwaarden herstellen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Lay-out wijzigen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Lay-out wijzigen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Maken" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Dashboardlay-out kiezen" - -#~ msgid "Your login:" -#~ msgstr "Uw gegevens:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Vergeet geen bladwijzer te maken" - -#~ msgid "This url" -#~ msgstr "naar deze url" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Welkom bij OpenERP" - -#~ msgid "progress:" -#~ msgstr "voortgang:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klik op een optie in de lijst hieronder om de functionaliteit in te stellen" - -#~ msgid "Uncategorized" -#~ msgstr "Zonder categorie" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Taak \"%s\" uitvoeren" - -#~ msgid "Mark this task as done" -#~ msgstr "Taak als voltooid markeren" diff --git a/addons/web_dashboard/i18n/pl.po b/addons/web_dashboard/i18n/pl.po deleted file mode 100644 index 3a82cc270b1..00000000000 --- a/addons/web_dashboard/i18n/pl.po +++ /dev/null @@ -1,95 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-11-04 16:28+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" -"Language-Team: Polish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Edytuj układ" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Jesteś pewien, że chcesz usunąć ten element?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Przywracanie układu..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Przywróć" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Zmiana układu..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Zmień układ" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Utwórz" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Wybierz układ konsoli" - -#~ msgid "progress:" -#~ msgstr "postęp:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Wykonaj zadanie \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Oznacz zadanie jako wykonane" - -#~ msgid "Uncategorized" -#~ msgstr "Bez kategorii" - -#~ msgid "Your login:" -#~ msgstr "Twój login:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Zapisz w zakładkach" - -#~ msgid "This url" -#~ msgstr "Ten url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Kliknij funkcjonalności z listy poniżej, aby je zainstalować i skonfigurować " -#~ "system" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Witamy w OpenERP" diff --git a/addons/web_dashboard/i18n/pt.po b/addons/web_dashboard/i18n/pt.po deleted file mode 100644 index c19046339a1..00000000000 --- a/addons/web_dashboard/i18n/pt.po +++ /dev/null @@ -1,95 +0,0 @@ -# Portuguese translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 02:22+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar Estrutura" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Tem a certeza que pretende remover este item?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Repôr Estrutura" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Repôr" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Modificar Estrutura" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Modificar Estrutura" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Criar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Escolha a configuração do painel" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Executar tarefa \"%s\"" - -#~ msgid "Uncategorized" -#~ msgstr "Sem categoria" - -#~ msgid "progress:" -#~ msgstr "progresso:" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarefa como concluída" - -#~ msgid "Remember to bookmark" -#~ msgstr "Relembrar para favoritos" - -#~ msgid "This url" -#~ msgstr "Este endereço" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Clique nas funcionalidades listadas abaixo para as lançar e configurar o seu " -#~ "sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bem-vindo ao OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Os seus acesso:" diff --git a/addons/web_dashboard/i18n/pt_BR.po b/addons/web_dashboard/i18n/pt_BR.po deleted file mode 100644 index b87ff340200..00000000000 --- a/addons/web_dashboard/i18n/pt_BR.po +++ /dev/null @@ -1,95 +0,0 @@ -# Brazilian Portuguese translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 01:35+0000\n" -"Last-Translator: Rafael Sales - http://www.tompast.com.br \n" -"Language-Team: Brazilian Portuguese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Você tem certeza que quer remover este item ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Resetar Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Restaurar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Mudar Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Mudar Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Criar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Escolha o Layout do Painel" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bem Vindo ao OpenERP" - -#~ msgid "progress:" -#~ msgstr "progresso:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Clique em alguma funcionalidade listada abaixo para ativa-lá e configurar no " -#~ "seu sistema" - -#~ msgid "Your login:" -#~ msgstr "Seu login:" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#~ msgid "Uncategorized" -#~ msgstr "Não Categorizado" - -#~ msgid "Remember to bookmark" -#~ msgstr "Marcar no bookmark" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Execute a tarefa \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarefa como realizada" diff --git a/addons/web_dashboard/i18n/ro.po b/addons/web_dashboard/i18n/ro.po deleted file mode 100644 index db8ef6da163..00000000000 --- a/addons/web_dashboard/i18n/ro.po +++ /dev/null @@ -1,95 +0,0 @@ -# Romanian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-10 13:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editare format" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Sunteti sigur(a) ca doriti sa stergeti acest element?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reseteaza formatul" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reseteaza" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Schimba formatul.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Modifica formatul" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Creati" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Alegeti formatul tabloului de bord" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bun venit in OpenERP" - -#~ msgid "progress:" -#~ msgstr "progres:" - -#~ msgid "This url" -#~ msgstr "Acest url" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Executa sarcina \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcheaza aceasta sarcina ca efectuata" - -#~ msgid "Uncategorized" -#~ msgstr "Neclasificat" - -#~ msgid "Your login:" -#~ msgstr "Autentificarea dumneavoastra:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Amintiti-va sa marcati" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Faceti clic pe functionalitatile de mai jos pentru a le porni si a va " -#~ "configura sistemul" diff --git a/addons/web_dashboard/i18n/ru.po b/addons/web_dashboard/i18n/ru.po deleted file mode 100644 index 0b4d9cd823f..00000000000 --- a/addons/web_dashboard/i18n/ru.po +++ /dev/null @@ -1,94 +0,0 @@ -# Russian 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-17 07:37+0000\n" -"Last-Translator: Aleksei Motsik \n" -"Language-Team: Russian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Редактировать макет" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Вы действительно хотите удалить этот объект?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Обнулить Макет..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Сбросить" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Изменить Макет..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Изменить Макет" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Создать" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Выбрать внешний вид" - -#~ msgid "progress:" -#~ msgstr "прогресс:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Нажмите на списке функций ниже для их запуска и конфигурации вашей системы" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Добро пожаловать в OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Без категории" - -#~ msgid "Your login:" -#~ msgstr "Ваше Имя пользователя:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Добавить в закладки" - -#~ msgid "This url" -#~ msgstr "Эта ссылка" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Выполнить задачу \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Отметить завершенной" diff --git a/addons/web_dashboard/i18n/sk.po b/addons/web_dashboard/i18n/sk.po deleted file mode 100644 index 570f22bdbeb..00000000000 --- a/addons/web_dashboard/i18n/sk.po +++ /dev/null @@ -1,63 +0,0 @@ -# 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-10-23 14:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/sl.po b/addons/web_dashboard/i18n/sl.po deleted file mode 100644 index 94f8ff7f35c..00000000000 --- a/addons/web_dashboard/i18n/sl.po +++ /dev/null @@ -1,93 +0,0 @@ -# Slovenian 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 , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-01-30 17:50+0000\n" -"Last-Translator: ERP Basing \n" -"Language-Team: Slovenian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Uredi izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Res želite odstraniti to postavko ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Povrni postavitev" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Povrni" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Spremeni postavitev" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Spremeni postavitev" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Ustvari" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Izberite postavitev nadzorne plošče" - -#~ msgid "progress:" -#~ msgstr "napredek:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "Kliknite spodnje nastavitve, da se odprejo in lahko nastavite sistem" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Dobrodošli v OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Vaša prijava:" - -#~ msgid "This url" -#~ msgstr "Ta naslov (url)" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Izvedi opravilo \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Označi to opravilo kot opravljeno" - -#~ msgid "Uncategorized" -#~ msgstr "Neopredeljeno" - -#~ msgid "Remember to bookmark" -#~ msgstr "Ustvarite zaznamek ( bookmark)" diff --git a/addons/web_dashboard/i18n/sq.po b/addons/web_dashboard/i18n/sq.po deleted file mode 100644 index 8e4494dfbbe..00000000000 --- a/addons/web_dashboard/i18n/sq.po +++ /dev/null @@ -1,63 +0,0 @@ -# Albanian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-01 00:15+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Albanian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/sr@latin.po b/addons/web_dashboard/i18n/sr@latin.po deleted file mode 100644 index 362bd001e38..00000000000 --- a/addons/web_dashboard/i18n/sr@latin.po +++ /dev/null @@ -1,88 +0,0 @@ -# Serbian Latin translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-09 21:03+0000\n" -"Last-Translator: zmmaj \n" -"Language-Team: Serbian Latin \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Uredi Izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Jesi li siguran da želiš ukloniti ovu stavku?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Resetuj Izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Resetuj" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Izmeni Izgled..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Izmeni Izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Kreiraj" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Izaberi Izgled kontrolnog panela" - -#~ msgid "Uncategorized" -#~ msgstr "Nekategorisano" - -#~ msgid "Your login:" -#~ msgstr "Vaša prijava:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Sačuvaj u podsetniku" - -#~ msgid "This url" -#~ msgstr "Ovaj url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klikni na neku od funkcija nabrojanu ispod kako bi je pokrenuo i uredio svoj " -#~ "sistem" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Dobrodošli u OpenERP" - -#~ msgid "progress:" -#~ msgstr "napredak:" diff --git a/addons/web_dashboard/i18n/sv.po b/addons/web_dashboard/i18n/sv.po deleted file mode 100644 index bfc7eca5cca..00000000000 --- a/addons/web_dashboard/i18n/sv.po +++ /dev/null @@ -1,94 +0,0 @@ -# Swedish translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-04-17 09:21+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Swedish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Ändra layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Är du säker på att du vill radera?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Återställ layouten" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Nollställ" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Ändra layout..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Ändra layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Skapa" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Välj infopanellayout" - -#~ msgid "Mark this task as done" -#~ msgstr "Markera denna uppgift som färdig" - -#~ msgid "Uncategorized" -#~ msgstr "Okategoriserad" - -#~ msgid "Remember to bookmark" -#~ msgstr "Kom ihåg att spara ett bokmärke till" - -#~ msgid "This url" -#~ msgstr "denna url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Välj bland funktionerna nedan för att starta och konfigurera ditt system" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Välkommen till OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Din inloggning:" - -#~ msgid "progress:" -#~ msgstr "framsteg:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Utför åtgärd \"%s\"" diff --git a/addons/web_dashboard/i18n/tr.po b/addons/web_dashboard/i18n/tr.po deleted file mode 100644 index 9c1ad0c54b7..00000000000 --- a/addons/web_dashboard/i18n/tr.po +++ /dev/null @@ -1,94 +0,0 @@ -# Turkish translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-24 11:28+0000\n" -"Last-Translator: Ahmet Altınışık \n" -"Language-Team: Turkish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Şablonu değiştir" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Bu kayıdı silmek istediğinize emin misiniz?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Düzeni Sıfırla..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Yeniden başlat" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Düzeni Değiştir..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Düzeni Değiştir" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Oluştur" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Yönetim Paneli Yerleşmini Seç" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Aşağıdaki fonksiyon adlarının üzerlerine tıklayarak ayarları yapabilirsiniz." - -#~ msgid "Welcome to OpenERP" -#~ msgstr "OpenERP ye hoşgeldiniz." - -#~ msgid "progress:" -#~ msgstr "İlerleme:" - -#~ msgid "Your login:" -#~ msgstr "Kullanıcı Adınız:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Yer imlerine ekleyin:" - -#~ msgid "This url" -#~ msgstr "Bu Sayfayı" - -#~ msgid "Uncategorized" -#~ msgstr "Sınıflandırılmamış" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Görevi Çalıştır \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Bu görevi yapıldı olarak işaretle" diff --git a/addons/web_dashboard/i18n/uk.po b/addons/web_dashboard/i18n/uk.po deleted file mode 100644 index fde0a60224f..00000000000 --- a/addons/web_dashboard/i18n/uk.po +++ /dev/null @@ -1,63 +0,0 @@ -# Ukrainian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-07-22 09:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/web_dashboard.pot b/addons/web_dashboard/i18n/web_dashboard.pot deleted file mode 100644 index a43640de0b8..00000000000 --- a/addons/web_dashboard/i18n/web_dashboard.pot +++ /dev/null @@ -1,64 +0,0 @@ -# Translations template for PROJECT. -# Copyright (C) 2012 ORGANIZATION -# This file is distributed under the same license as the PROJECT project. -# FIRST AUTHOR , 2012. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.6\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:61 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:107 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" - diff --git a/addons/web_dashboard/i18n/zh_CN.po b/addons/web_dashboard/i18n/zh_CN.po deleted file mode 100644 index 030afd10594..00000000000 --- a/addons/web_dashboard/i18n/zh_CN.po +++ /dev/null @@ -1,93 +0,0 @@ -# Chinese (Simplified) translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-15 13:18+0000\n" -"Last-Translator: Wei \"oldrev\" Li \n" -"Language-Team: Chinese (Simplified) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "编辑布局" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "您确定要移除此条目吗?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "重置布局..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "复位" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "更改布局..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "更改布局" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "创建" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "选择仪表盘布局" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "欢迎使用 OpenERP" - -#~ msgid "progress:" -#~ msgstr "进度:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "单击以下功能列表打开配置界面" - -#~ msgid "Your login:" -#~ msgstr "您的用户名:" - -#~ msgid "Remember to bookmark" -#~ msgstr "加入书签" - -#~ msgid "This url" -#~ msgstr "此网址" - -#~ msgid "Uncategorized" -#~ msgstr "未分类" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "执行任务“%s”" - -#~ msgid "Mark this task as done" -#~ msgstr "将此任务标记为完成" diff --git a/addons/web_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css deleted file mode 100644 index 74410b3e937..00000000000 --- a/addons/web_dashboard/static/src/css/dashboard.css +++ /dev/null @@ -1,309 +0,0 @@ -.openerp table.oe_dashboard { - width: 100%; -} -.openerp .oe_dashboard_links { - text-align: right; - margin: 0 4px 6px 0; -} -.openerp .oe_dashboard_action { - margin: 0 0.5em 0.5em 0; - padding: 0px; - background-color: white; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; -} - -.openerp .oe_dashboard_action .oe_dashboard_action_header { - font-size: 85%; - font-weight: bold; - text-transform: uppercase; - text-indent: 10px; - vertical-align: middle; - border-bottom: 1px solid #e5e5e5; - background: white url("/web/static/src/img/box-a-header-a.gif") 0% 0% repeat-x; -} - -.openerp h2.oe_dashboard_action_header { - margin: 0; - padding:4px 4px; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -.openerp h2.oe_dashboard_action_header_empty { - padding-top: 0; - padding-bottom: 2px; -} - -.openerp .oe_dashboard_button_create { - margin-left: 4px; - padding: 0 4px 0 4px; - height: 16px !important; -} - -.openerp a.oe_dashboard_action_rename { - float: left; - padding-right: 4px; - position: relative; - top: 1px; -} -.openerp .oe_dashboard_action_input { - height: 16px; - position: relative; - top: 2px; -} - -.openerp .oe_dashboard_action .oe_dashboard_action_header:hover { - cursor: move; -} -.openerp .oe_dashboard_action .ui-icon { - cursor: pointer; -} -.openerp .oe_dashboard_action .ui-icon:hover { - background-color: #ccc; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; -} - -.openerp .oe_dashboard_action .oe_dashboard_action_header .ui-icon { - float: right; -} - -.openerp .oe_dashboard .ui-sortable-placeholder { - border: 1px dotted black; - visibility: visible !important; - height: 50px !important; -} - -.openerp .oe_dashboard .ui-sortable-placeholder * { - visibility: hidden; -} - -/* Base overwriting */ -.openerp .oe_dashboard .oe_list_content, .openerp .oe_dashboard .ui-widget-header { - border-right:none !important; - padding:0 3px; -} - -/* Layouts */ -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_0 { - width: 100%; -} -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_1, -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_2 { - display: none; -} - -.openerp .oe_dashboard_layout_1-1 .oe_dashboard_column { - width: 50%; -} -.openerp .oe_dashboard_layout_1-1 .oe_dashboard_column.index_2 { - display: none; -} - -.openerp .oe_dashboard_layout_1-1-1 .oe_dashboard_column { - width: 33%; -} - -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_0 { - width: 70%; -} -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_1 { - width: 30%; -} -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_2 { - display: none; -} - -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_0 { - width: 30%; -} -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_1 { - width: 70%; -} -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_2 { - display: none; -} - - -.openerp .oe_dashboard_layout_selector { - overflow: auto; - padding: 10px; -} - -.openerp .oe_dashboard_layout_selector ul { - margin: 0; - padding: 0; -} - -.openerp .oe_dashboard_layout_selector ul li { - position: relative; - float: left; - height: 51px; - list-style-type: none; - margin: 5px; - padding: 0; - width: 82px; - cursor: pointer; - border: 1px solid white; -} -.openerp .oe_dashboard_layout_selector ul li:hover { - border: 1px solid #090; -} -.openerp .oe_dashboard_layout_selector ul li img.oe_dashboard_selected_layout { - position: absolute; - top: 0px; - right: 0px; -} - -.openerp .oe_dashboard_home_tile { - text-align: center; - margin: 10px; - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - -webkit-box-shadow: 3px 3px 5px 3px #DADDDD; - -moz-box-shadow: 3px 3px 5px 3px #DADDDD; - box-shadow: 3px 3px 5px 3px #DADDDD; -} -.openerp .oe_dashboard_home_tile span { - display: block; - padding: 0 0 15px; - font-weight: bold; - text-transform: uppercase; - color: #555; - white-space: nowrap; -} -.openerp .oe_dashboard_home_tile_icon { - height: 100px; -} -.openerp .oe_dashboard_home_tile_icon img { - display: block; - margin: 0 auto; -} -.openerp .oe_dashboard_home_tile_icon img.hover { - display: none; -} -.openerp .oe_dashboard_home_tile:hover { - background-color: #fafafa; - -webkit-box-shadow: 3px 3px 5px 3px #979797; - -moz-box-shadow: 3px 3px 5px 3px #979797; - box-shadow: 3px 3px 5px 3px #979797; -} -.openerp .oe_dashboard_home_tile:hover img { - display: none; -} -.openerp .oe_dashboard_home_tile:hover img.hover { - display: block; -} -.openerp .oe_dashboard_home_tile:hover span { - color: black; -} - -.openerp .oe_dashboard_action .view-manager-main-content { - padding: 2px; -} - -.openerp .oe_app_tiles h1, .openerp .oe_app_tiles h3 { - margin: 16px 24px; -} - -.openerp .oe_app_tiles { - padding: 0 10px; -} - -.openerp .oe_app_tiles li { - float: left; - list-style: none; -} - -.openerp .oe_app_tiles li img { - display: block; - margin: 0 auto; - height: 100px; - width: 100px; -} -.openerp .oe_app_tiles li img.hover { - display: none; -} -.openerp .oe_app_tiles li:hover img { - display: none; -} -.openerp .oe_app_tiles li:hover img.hover { - display: block; -} - -.openerp .oe_app_tiles li a { - display: block; - height: 120px; - width: 194px; - color: #4C4C4C; - border: 1px solid #f4f2f2; - margin: 6px; - padding: 12px; - text-align: center; - text-transform: uppercase; - text-decoration: none; - font-size: 12px; - font-weight: 800; - background: white; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - -ms-border-radius: 6px; - border-radius: 6px; - -moz-box-shadow: 0 1px 2px #bbb; - -webkit-box-shadow: 0 1px 2px #bbb; - -o-box-shadow: 0 1px 2px #bbb; - box-shadow: 0 1px 2px #bbb; -} -/* changing icon for the change layout button */ - -.openerp .oe_dashboard_link_change_layout, .openerp .oe_dashboard_link_reset { - padding-top: 1px; - height: 22px; -} -.openerp .oe_dashboard_link_change_layout > *, .openerp .oe_dashboard_link_reset > *{ - vertical-align: middle; -} - -.openerp .oe_welcome_message { - display:none; -} -.openerp .oe_initial_welcome_message { - width:30%; - text-align:center; - margin:10px 35% 0 35%; - padding: 5px 10px; - border: 1px solid #ccc; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - background: #eeeded; - box-shadow: 0 1px 0 #fff; - -moz-box-shadow: 0 1px 0 #fff; - -webkit-box-shadow: 0 1px 0 #fff; - color: #8c8c8c; - font-size: 90%; - text-transform: uppercase; - font-weight: bold; - text-shadow: #fff 0 1px 0; -} - -.openerp .oe_initial_welcome_message ul{ - padding:10px 0 0 0; - margin:0; - list-style-type: none; - padding: 7px 0 5px 5px; - background-position: 0 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.openerp .oe_initial_welcome_message ul a, .openerp .initial_welcome_message ul a:hover, .openerp .initial_welcome_message ul a:active, .openerp .initial_welcome_message ul a:focus { - color:#222; - text-decoration:none; -} diff --git a/addons/web_dashboard/static/src/img/layout_1-1-1.png b/addons/web_dashboard/static/src/img/layout_1-1-1.png deleted file mode 100644 index 5eda2823c46c11bcfed2b657847dba77ba568d52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*OR1|(Tp;!}VWV{wqX6T`Z5GB1G~wj^(N7l!{J zxM1({$v_d#0*}aI1_o|n5N2eUHAey{$X?><>&kwcjggO={}+qxO`y;wPZ!6Kid%2* zY~(s*AmVT_{9`i{U##_yn?Qo&=NvIDD-SpBNhty6?(R}4s8IF3m3a4h`ifn}E=Ou+ zdxn_AE;mo9yzqUhqRqk#VUGz4|G!`P7jkar>1B^odpbIv?)!6O*U~AII=^H!vuI9G zaO6?}s$mrZl1!XJOB|Y5ID-@%n^2`><>&kwcjggN>>c$NJuRx)lo-U3d6}R5r z*~`~tAkuKL`_%6V78{Iy+~8Zoqh`a$(#h8rD0JEFkLCSi*XG<==Iw15(;ls{)7izP zI?q$(%A8s3Pd+WY9^F>ZuH>)a*!1Ua@bAdl`}zA0{EBdQaVdXk7VjMzs&?rb8)pzu zTEt_5f+Lp-kYp87@n~e>6k6iY!~&Pvzb|v1!?P84rYq#;PWXTORqCIur=P#insdBA pvbz(cScqRbf7@lPKaL9i<>&kwcjggOsH`@D@5m0ESr;B4q#jUq@ z47r;eBpM!`KlNYPWQWz4&C)TlO!a+9LCzLxN9IoWx@UGbJOBN{)0u{M+TAsF2D`Xa z=X$DKiJ2w-8MOoBrGl{vBI;KYvq3?K)+pMY~IPA6m8Ql*_GK3XWVV z9ut^2g;YEmSvZB3I5e?nP5^2U@c@!gsVDDdKjTd4JC)3N=^ES5{cGcn#qX|}cgdoE s_P+ZrAeHe|H-4m9uRSEs^63l9x%sjacD6Gc13kgu>FVdQ&MBb@00A6wf&c&j diff --git a/addons/web_dashboard/static/src/img/layout_1.png b/addons/web_dashboard/static/src/img/layout_1.png deleted file mode 100644 index 69a0e30854c06cb060533c0c41963584cc0aaf71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*OR1|(Tp;!}VWV{wqX6T`Z5GB1G~wj^(N7l!{J zxM1({$v_d#0*}aI1_o|n5N2eUHAey{$X?><>&kwcjggPr#GC)hU!c$uPZ!6Kid%2* z7;-fmh%`J*U;F)}pp4D7X7>|?EZT1sn!1}*yl=n1zo~A|1XWMt{m;r*>_~SxV&bR5 z^{TzD`HuLm`*tn-BBe~6LQme$yOsWQ4yUY_=1h-hX%&w~7S13A$0iod2|!ZBV}b&! zkc!6yph~#ZpI_5T86y|3d+TuPmcsw-r%(R~pME}738-h~?e<>t+o`5?0xK@FA8ZpB URCT#*40JDpr>mdKI;Vst0C^K*^Z)<= diff --git a/addons/web_dashboard/static/src/img/layout_2-1.png b/addons/web_dashboard/static/src/img/layout_2-1.png deleted file mode 100644 index ed866add47c5e1c2384f18981f0fe13edc9cda0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*OR1|(Tp;!}VWV{wqX6T`Z5GB1G~wj^(N7l!{J zxM1({$v_d#0*}aI1_o|n5N2eUHAey{$X?><>&kwcjggOAlJ7!C2T*8(r;B4q#jUq@ zHgYu^h&Wta{=>16Zyn#?H$bAbrq9V+wkvt5>a-}!@?t^TJrh);dbfWR)LPfs@j~CW zvuRiH_m&vFFO{bSu4!!JRPmT_{O;EHsm1?RPtWwvb#dXj{!sh7zvfI2Z)p{eMi$N> z1;-{9%?UtK#AAX2s}N8F6DN>Fmdg5T@bA{c&$ecFm(RD|-pRr#wB+86oSMzCVNdy) bZksS4=9HQcS-jp2=ynEAS3j3^P6 zPjD^Dmc&Y-1$4Ph(m0MuDm*%d*k49b7lp2=fxwBaBWh7-(AG$8I7Q0TGGHK<3nDOV zRpkBLeeX^G*gNthkuph(>D!)nL%veJsI?BQG1?LdioymvjD!A{v-KdDaykjTbq8=_VnXF|IWs(7 z>Q8$&3{)z!1_aqWuSuoS0Pwd55BB|ZVq!x1epYXlG4tTPsPg%IG+LP4rKB3GROaGD z!XOYBfU4K4V8(X=pu4-8H&G+}Z>8KFQ4|^gviT=EnMym2 zdUfj1f!&|(G~QcR4pug4V^h7 z8Q|f<yUed4>59~VU5s8;3x z@a46pbrVT|ar*xI@4Qef7Nzg|TL1!}Ru;8}PbLyc0IZw*)@Ce>)*!+u0GOV>nYP4) zIO{q9FfvveNOx`fWW8RC7U^`X*vjOJP!cApEa8vz#xFg=XXXYPMq!m;m_)| zG5}sIF<9j$0PvZC`}!)KSU9hf2TqANJJ8otUROqIqZj>b05*F@+zde`9FdL# zU}=vcz-feafW=hY`{wPY1~BG6*x|9#PAQzv)~aO?(Gp(8)^S|uD4a3%>QCa(4|r1p z*eZYp(SymP2VR={0FYHm0l-g=9=&%iF1r2A>w&REpVg0!PrjeQpRd=epi9Jp%lwZ4 zAtbMFF2r0s_UJH%=pZ7}rw`vbOb?TG=fUfO#-03*#qhZ)!@Y3N6f|ZT}fS=#! zz5c%dFf;_-v;fYlCxY*FH^9p z+$5N>oG~OBqroIz-}C_H^Z6JsYj;^|;wEkx09tDxK(heQ+neQ031AQe0ss#WKXVfZ zJHx24+~dhw3y^L!iD0vO;4T3Gq!J%<-NcPXYhKRrM8re{1EDr`2>0}yqqr*OUvnJy zoy(W`Hjb@w6CkEvxugu*Yyi&8{3^#O6(3*WIhX)2+rF3s-`sp0NJO--_(LDnCR$eg z*X%@Oy{VpU>x` zLgCrOYA>3Is8D$J1HKQN%jL|(#ES|myrK;Sutofa=>1A11T$Ok3NM(Mtu z5BK-)Z3IElB_djB=rS`$K_Lk=CV-<;jgfZGU zN~OT~(eQUlzvcV6aA;_VR`ZV&;C0`)a*2*XVq>e&EL^7F5jSm+}pOb=* z`Tm}l;^Yvo26uON+g!Y7$d@qzH*ZB!3JJ|oR4LCwxrtkZ5XF%~={X^3(D!%0474_7 zcWSKD3du4(Fn&y7bo7~Dwo?5}N+)Bj;cFyr24Is(PuA;IFz}Rs`O8E7d(U2e?n@=G zv$m(FN0u8Odf9c|-Y~3NfJCdXPbNLtXw<-r#~VWUgAd&GR(lk^D*(3J=y>Tx>Qr2=zgUInxU5IoD9W`FE%-@qF&gyOa^1yw4mBkJkDU@DSDsgKR%>#JJ=cT<2 zDwWx{nfTAkZ|y1gK5UB{bGe+^Z~$9(aAd4B=yhfOqFR|-B@Zr2jSPkXK_=W3IgUaj ztV2iPc>pgFa1Iu)K+t)>{+|#;#^Pz|s2-yudj+Ks7))9^j!Gs{s8r^rE$q>O{yjg4 z!+Ju^%*>dz7_F`Vz&MP*`S`!Q&$aqhN2+dPw8h%52^)Yc5j)axNjVBc0+ua|j$n*| zWy8xWqu2t%xQT=U15sG}XBKAg@B??BYXP}`e_mh9h+#z`98AS4yd#ClM>3i1$L8iP zgaEngx8lbZAlsJ0shNdoXmFg0;TE&1cs@Qz3zkl!SwesW2yytAZ3@(g%WOnYt z8%iZyfY))ulthyzoF?CjRe*>1SQ52bMH2~`PH!8CAkPhtP5x1w`LnuMgj`MixZ)(z zx?3m4CqD%teq@aS;-#Wa85S`>+HsU}-2|%Dx&O3;V*>~Jo^O>sGc(UDn;%#8pv}a@ zgv#gh(MaL+LtUBf(em5{+pK6hXyO*rLn4uKj5Ua&@F|iQJp3np=iBLOT>xxPDkI~i zuY0M?@oIIB<1HBKu(2f@fJDmcqFS|FW6-zDZ#TZ>`}b4y}F&kJDiq5i(7*3AQ3#|Ht(_hCm0rLO?^t3=YH zM!nj4#G%vVdkc_JN+}|NFs%P8llaDw1D`p)Hd%NP{~sD64uUD?aDU(52q|uF)GI&k z>e{A+5X1}(qE3?V1z=?qg%J_K^D@6lZ0~LtGS=Dyuc#3LV7M?D5b$uyOFOk{84PG5 z$Q5gd8=ajQMkNxC6cY7%^*M$)a-@In^m>Nyq9qOhjE|Q-6j~ey;SW<@7wWYNm=OV1 zUQdapsg7wOq)H||)T(o@fNAj1!QD>-3yH>GTb#ROZS|_*(fbHPRAhfnDOAI+S&L=|r(ul+)8U&rkD4M^E2s z9dRGQ{(dr<{-BT&QP@DF!&pdI;N%Selr2D+GdTVS7kXf(WKpj{yT4G?`y z3g?$xH!-ikSZl!6!deT-ObaL_(-ksteW1?CZolcMZpBl+NB!!(b0cTnbcf{Ba@NBl_Jt}Ea~svr1#s6dUYvfJnnUq zNrx>X3LB@$go6(~^x4!TtB&d10Zz&#lW_k*<3HuL5jLKLqW%$s~bLtImC2Ncq(x2lo7|#dG`j z@7K({Zm*Q;SO6g?l8!=xQ^|Ux_EQpc>~Q~{AGSQM$)8a^pI_I@=r{m#x%p<|rfOxD zndyNe{e4fgYR%r>BE{jF-KbFDj{F)PoBYzq$aA;0ejYk=#(6icqf-H-*7qk*o>aiX z&l~+ko%$N&efx^?_S;w2eywTYy7eCEYnHILYzx3G0Ji|#0&vT=0Netw6Yc*2r9w(M Tu8hFi00000NkvXXu0mjfq2O{c diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js deleted file mode 100644 index 92166cc02b1..00000000000 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ /dev/null @@ -1,333 +0,0 @@ -openerp.web_dashboard = function(instance) { -var QWeb = instance.web.qweb, - _t = instance.web._t; - -if (!instance.web_dashboard) { - /** @namespace */ - instance.web_dashboard = {}; -} - -instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ - init: function(view, node) { - this._super(view, node); - this.form_template = 'DashBoard'; - this.actions_attrs = {}; - this.action_managers = []; - }, - start: function() { - var self = this; - this._super.apply(this, arguments); - - this.$element.find('.oe_dashboard_column').sortable({ - connectWith: '.oe_dashboard_column', - handle: '.oe_dashboard_action_header', - scroll: false - }).disableSelection().bind('sortstop', self.do_save_dashboard); - - // Events - this.$element.find('.oe_dashboard_link_reset').click(this.on_reset); - this.$element.find('.oe_dashboard_link_change_layout').click(this.on_change_layout); - - this.$element.delegate('.oe_dashboard_column .oe_dashboard_fold', 'click', this.on_fold_action); - this.$element.delegate('.oe_dashboard_column .ui-icon-closethick', 'click', this.on_close_action); - - // Init actions - _.each(this.node.children, function(column, column_index) { - _.each(column.children, function(action, action_index) { - delete(action.attrs.width); - delete(action.attrs.height); - delete(action.attrs.colspan); - var action_id = _.str.toNumber(action.attrs.name); - if (!_.isNaN(action_id)) { - self.rpc('/web/action/load', {action_id: action_id}, function(result) { - self.on_load_action(result, column_index + '_' + action_index, action.attrs); - }); - } - }); - }); - }, - on_reset: function() { - this.rpc('/web/view/undo_custom', { - view_id: this.view.fields_view.view_id, - reset: true - }, this.do_reload); - }, - on_change_layout: function() { - var self = this; - var qdict = { - current_layout : this.$element.find('.oe_dashboard').attr('data-layout') - }; - var $dialog = instance.web.dialog($('
    '), { - modal: true, - title: _t("Edit Layout"), - width: 'auto', - height: 'auto' - }).html(QWeb.render('DashBoard.layouts', qdict)); - $dialog.find('li').click(function() { - var layout = $(this).attr('data-layout'); - $dialog.dialog('destroy'); - self.do_change_layout(layout); - }); - }, - do_change_layout: function(new_layout) { - var $dashboard = this.$element.find('.oe_dashboard'); - var current_layout = $dashboard.attr('data-layout'); - if (current_layout != new_layout) { - var clayout = current_layout.split('-').length, - nlayout = new_layout.split('-').length, - column_diff = clayout - nlayout; - if (column_diff > 0) { - var $last_column = $(); - $dashboard.find('.oe_dashboard_column').each(function(k, v) { - if (k >= nlayout) { - $(v).find('.oe_dashboard_action').appendTo($last_column); - } else { - $last_column = $(v); - } - }); - } - $dashboard.toggleClass('oe_dashboard_layout_' + current_layout + ' oe_dashboard_layout_' + new_layout); - $dashboard.attr('data-layout', new_layout); - this.do_save_dashboard(); - } - }, - on_fold_action: function(e) { - var $e = $(e.currentTarget), - $action = $e.parents('.oe_dashboard_action:first'), - id = parseInt($action.attr('data-id'), 10); - if ($e.is('.ui-icon-minusthick')) { - $action.data('action_attrs').fold = '1'; - } else { - delete($action.data('action_attrs').fold); - } - $e.toggleClass('ui-icon-minusthick ui-icon-plusthick'); - $action.find('.oe_dashboard_action_content').toggle(); - this.do_save_dashboard(); - }, - on_close_action: function(e) { - if (confirm(_t("Are you sure you want to remove this item ?"))) { - $(e.currentTarget).parents('.oe_dashboard_action:first').remove(); - this.do_save_dashboard(); - } - }, - do_save_dashboard: function() { - var self = this; - var board = { - form_title : this.view.fields_view.arch.attrs.string, - style : this.$element.find('.oe_dashboard').attr('data-layout'), - columns : [] - }; - this.$element.find('.oe_dashboard_column').each(function() { - var actions = []; - $(this).find('.oe_dashboard_action').each(function() { - var action_id = $(this).attr('data-id'), - new_attrs = _.clone($(this).data('action_attrs')); - if (new_attrs.domain) { - new_attrs.domain = new_attrs.domain_string; - delete(new_attrs.domain_string); - } - if (new_attrs.context) { - new_attrs.context = new_attrs.context_string; - delete(new_attrs.context_string); - } - actions.push(new_attrs); - }); - board.columns.push(actions); - }); - var arch = QWeb.render('DashBoard.xml', board); - this.rpc('/web/view/add_custom', { - view_id: this.view.fields_view.view_id, - arch: arch - }, function() { - self.$element.find('.oe_dashboard_link_reset').show(); - }); - }, - on_load_action: function(result, index, action_attrs) { - var self = this, - action = result.result, - view_mode = action_attrs.view_mode; - - if (action_attrs.context && action_attrs.context['dashboard_merge_domains_contexts'] === false) { - // TODO: replace this 6.1 workaround by attribute on - action.context = action_attrs.context || {}; - action.domain = action_attrs.domain || []; - } else { - if (action_attrs.context) { - action.context = _.extend((action.context || {}), action_attrs.context); - } - if (action_attrs.domain) { - action.domain = action.domain || []; - action.domain.unshift.apply(action.domain, action_attrs.domain); - } - } - - var action_orig = _.extend({ flags : {} }, action); - - if (view_mode && view_mode != action.view_mode) { - action.views = _.map(view_mode.split(','), function(mode) { - mode = mode === 'tree' ? 'list' : mode; - return _(action.views).find(function(view) { return view[1] == mode; }) - || [false, mode]; - }); - } - - action.flags = { - search_view : false, - sidebar : false, - views_switcher : false, - action_buttons : false, - pager: false, - low_profile: true, - display_title: false, - list: { - selectable: false - } - }; - var am = new instance.web.ActionManager(this), - // FIXME: ideally the dashboard view shall be refactored like kanban. - $action = $('#' + this.view.element_id + '_action_' + index); - $action.parent().data('action_attrs', action_attrs); - this.action_managers.push(am); - am.appendTo($action); - am.do_action(action); - am.do_action = function (action) { - self.do_action(action); - }; - if (action_attrs.creatable && action_attrs.creatable !== 'false') { - var action_id = parseInt(action_attrs.creatable, 10); - $action.parent().find('button.oe_dashboard_button_create').click(function() { - if (isNaN(action_id)) { - action_orig.flags.default_view = 'form'; - self.do_action(action_orig); - } else { - self.rpc('/web/action/load', { - action_id: action_id - }, function(result) { - result.result.flags = result.result.flags || {}; - result.result.flags.default_view = 'form'; - self.do_action(result.result); - }); - } - }); - } - if (am.inner_widget) { - am.inner_widget.on_mode_switch.add(function(mode) { - var new_views = []; - _.each(action_orig.views, function(view) { - new_views[view[1] === mode ? 'unshift' : 'push'](view); - }); - if (!new_views.length || new_views[0][1] !== mode) { - new_views.unshift([false, mode]); - } - action_orig.views = new_views; - action_orig.res_id = am.inner_widget.dataset.ids[am.inner_widget.dataset.index]; - self.do_action(action_orig); - }); - } - }, - renderElement: function() { - this._super(); - - var check = _.detect(this.node.children, function(column, column_index) { - return _.detect(column.children,function(element){ - return element.tag === "action"? element: false; - }); - }); - if (!check) { - return this.no_result(); - } - // We should start with three columns available - for (var i = this.node.children.length; i < 3; i++) { - this.node.children.push({ - tag: 'column', - attrs: {}, - children: [] - }); - } - var rendered = QWeb.render(this.form_template, this); - this.$element.html(rendered); - }, - no_result: function() { - if (this.view.options.action.help) { - this.$element.append( - $('
    ') - .append($('
    ').html(this.view.options.action.help || " ")) - ); - } - }, - do_reload: function() { - var view_manager = this.view.getParent(), - action_manager = view_manager.getParent(); - this.view.destroy(); - action_manager.do_action(view_manager.action); - } -}); -instance.web.form.DashBoardLegacy = instance.web.form.DashBoard.extend({ - renderElement: function() { - if (this.node.tag == 'hpaned') { - this.node.attrs.style = '2-1'; - } else if (this.node.tag == 'vpaned') { - this.node.attrs.style = '1'; - } - this.node.tag = 'board'; - _.each(this.node.children, function(child) { - if (child.tag.indexOf('child') == 0) { - child.tag = 'column'; - var actions = [], first_child = child.children[0]; - if (first_child && first_child.tag == 'vpaned') { - _.each(first_child.children, function(subchild) { - actions.push.apply(actions, subchild.children); - }); - child.children = actions; - } - } - }); - this._super(this); - } -}); - -instance.web.form.tags.add('hpaned', 'instance.web.form.DashBoardLegacy'); -instance.web.form.tags.add('vpaned', 'instance.web.form.DashBoardLegacy'); -instance.web.form.tags.add('board', 'instance.web.form.DashBoard'); - -/* - * Widgets - * This client action designed to be used as a dashboard widget display - * the html content of a res_widget given as argument - */ -instance.web.client_actions.add( 'board.home.widgets', 'instance.web_dashboard.Widget'); -instance.web_dashboard.Widget = instance.web.View.extend(/** @lends instance.web_dashboard.Widgets# */{ - template: 'HomeWidget', - /** - * Initializes a "HomeWidget" client widget: handles the display of a given - * res.widget objects in an OpenERP view (mainly a dashboard). - * - * @constructs instance.web_dashboard.Widget - * @extends instance.web.View - * - * @param {Object} parent - * @param {Object} options - * @param {Number} options.widget_id - */ - init: function (parent, options) { - this._super(parent); - this.widget_id = options.widget_id; - }, - start: function () { - var ds = new instance.web.DataSet(this, 'res.widget'); - return ds.read_ids([this.widget_id], ['title']).then(this.on_widget_loaded); - }, - on_widget_loaded: function (widgets) { - var widget = widgets[0]; - var url = _.str.sprintf( - '/web_dashboard/widgets/content?session_id=%s&widget_id=%d', - this.session.session_id, widget.id); - this.$element.html(QWeb.render('HomeWidget.content', { - widget: widget, - url: url - })); - } -}); - - -}; diff --git a/addons/web_dashboard/static/src/xml/web_dashboard.xml b/addons/web_dashboard/static/src/xml/web_dashboard.xml deleted file mode 100644 index 68dda7d7f67..00000000000 --- a/addons/web_dashboard/static/src/xml/web_dashboard.xml +++ /dev/null @@ -1,64 +0,0 @@ -