From 9241bce4156129737fd7702afcd39dc55f6efe9c Mon Sep 17 00:00:00 2001 From: Tejas Tank Date: Wed, 9 May 2012 11:42:01 +0530 Subject: [PATCH 01/67] [IMP] Title improvement. bzr revid: tta@openerp.com-20120509061201-tcq537146cbvxwyp --- addons/web/static/src/xml/base.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 6c540fd6957..07b41cf1a2e 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -368,7 +368,7 @@
- Activate the developper mode + Activate the developer mode

OpenERP

Version

From 195cb2811dbce3bdbbfd4c470b581c3871fbdbf1 Mon Sep 17 00:00:00 2001 From: Tejas Tank Date: Wed, 9 May 2012 19:12:00 +0530 Subject: [PATCH 02/67] Improve the Title bzr revid: tta@openerp.com-20120509134200-byd11lj0eokr6gpy --- addons/web/static/src/js/view_form.js | 1 + addons/web/static/src/js/views.js | 2 +- 2 files 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 b1289512f4f..d0eda645196 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2930,6 +2930,7 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ _template: 'One2Many.listview', do_add_record: function () { if (this.options.editable) { + console.log("this.options :: ",this.options); this._super.apply(this, arguments); } else { var self = this; diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 798c5bb1493..c4ff0efd70c 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -730,7 +730,7 @@ instance.web.Sidebar = instance.web.Widget.extend({ var view = this.getParent(); this.sections = [ { 'name' : 'print', 'label' : _t('Print'), }, - { 'name' : 'files', 'label' : _t('Attachement'), }, + { 'name' : 'files', 'label' : _t('Attachment'), }, { 'name' : 'other', 'label' : _t('More'), } ]; this.items = { From b7210951a4569b8a9038f15acf67e5379f403fd8 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 10 May 2012 16:32:05 +0530 Subject: [PATCH 03/67] [IMP] Improved code for advance invoice. bzr revid: tpa@tinyerp.com-20120510110205-bbuu7wddtpeez7k6 --- addons/sale/sale_demo.xml | 1 + .../sale/wizard/sale_make_invoice_advance.py | 142 ++++++++++++------ .../sale/wizard/sale_make_invoice_advance.xml | 47 ++---- 3 files changed, 113 insertions(+), 77 deletions(-) diff --git a/addons/sale/sale_demo.xml b/addons/sale/sale_demo.xml index 3d8bbae9ad7..d9946c812c7 100644 --- a/addons/sale/sale_demo.xml +++ b/addons/sale/sale_demo.xml @@ -268,6 +268,7 @@ produce + diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py index 94cae45519d..9a9eda88c70 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.py +++ b/addons/sale/wizard/sale_make_invoice_advance.py @@ -24,16 +24,57 @@ from tools.translate import _ class sale_advance_payment_inv(osv.osv_memory): _name = "sale.advance.payment.inv" _description = "Sales Advance Payment Invoice" + + def _default_product_id(self, cr, uid, context=None): + if context is None: + context = {} + product_id = False + data_obj = self.pool.get('ir.model.data') + try: + product_id = data_obj.get_object_reference(cr, uid, 'sale', 'advance_product_0')[1] + finally: + return product_id + _columns = { - 'product_id': fields.many2one('product.product', 'Advance Product', required=True, + 'product_id': fields.many2one('product.product', 'Advance Product', required=False, help="Select a product of type service which is called 'Advance Product'. You may have to create it and set it as a default value on this field."), 'amount': fields.float('Advance Amount', digits=(16, 2), required=True, help="The amount to be invoiced in advance."), 'qtty': fields.float('Quantity', digits=(16, 2), required=True), + 'pay_type':fields.selection([('percentage','Percentage'), ('fixed','Fixed Price')], 'Pay Type', required=True), + 'advance': fields.boolean('Advance'), } + _defaults = { - 'qtty': 1.0 + 'qtty': 1.0, + 'pay_type': 'fixed', + 'product_id': _default_product_id, } + def onchange_pay_type(self, cr, uid, ids, pay_type,product_id, context=None): + if not product_id: + return {'value': {'amount': 0}} + if pay_type == 'percentage': + return {'value': {'amount':0,'product_id':False }} + product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) + return {'value': {'amount':product.list_price}} + + def onchange_advance_product(self, cr, uid, ids, product_id, context=None): + data_obj = self.pool.get('ir.model.data') + value = {} + value['advance'] = 'False' + if not product_id: + return {'value': {'amount': 0,'advance': False}} + product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) + value['amount'] = product.list_price + try: + res_id = data_obj._get_id(cr, uid, 'sale', 'advance_product_0') + if res_id: + advance_id = data_obj.browse(cr, uid, res_id, context=context).res_id + if product.id == advance_id: + value['advance'] = 'True' + finally: + return {'value': value} + def create_invoices(self, cr, uid, ids, context=None): """ To create invoices. @@ -66,21 +107,52 @@ class sale_advance_payment_inv(osv.osv_memory): val = obj_lines.product_id_change(cr, uid, [], sale_adv_obj.product_id.id, uom = False, partner_id = sale.partner_id.id, fposition_id = sale.fiscal_position.id) res = val['value'] + + if not sale_adv_obj.product_id.id : + prop = self.pool.get('ir.property').get(cr, uid, + 'property_account_income_categ', 'product.category', + context=context) + account_id = prop and prop.id or False + account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, sale.fiscal_position.id or False, account_id) + res['account_id'] = account_id + if not res.get('account_id'): + raise osv.except_osv(_('Configuration Error !'), + _('There is no income account defined ')) + if not res.get('account_id'): raise osv.except_osv(_('Configuration Error !'), _('There is no income account defined ' \ 'for this product: "%s" (id:%d)') % \ (sale_adv_obj.product_id.name, sale_adv_obj.product_id.id,)) - + + final_amount = 0 + if sale_adv_obj.amount <= 0.00: + raise osv.except_osv(_('Data Insufficient !'), + _('Please check the Advance Amount, it should not be 0 or less!')) + else: + if sale_adv_obj.pay_type == 'percentage': + final_amount = sale.amount_total * sale_adv_obj.amount / 100 + if not res.get('name'): + res['name'] = "Advance of %s"%(final_amount) + else: + final_amount = sale_adv_obj.amount + if not res.get('name'): + res['name'] = "Advance of %s %s"%(final_amount,sale.pricelist_id.currency_id.symbol) + + if res.get('invoice_line_tax_id'): + res['invoice_line_tax_id'] = [(6, 0, res.get('invoice_line_tax_id'))] + else: + res['invoice_line_tax_id'] = False + line_id = obj_lines.create(cr, uid, { 'name': res.get('name'), 'account_id': res['account_id'], - 'price_unit': sale_adv_obj.amount, - 'quantity': sale_adv_obj.qtty, + 'price_unit': final_amount, + 'quantity': sale_adv_obj.qtty or 1.0, 'discount': False, - 'uos_id': res.get('uos_id'), + 'uos_id': res.get('uos_id') or False, 'product_id': sale_adv_obj.product_id.id, - 'invoice_line_tax_id': [(6, 0, res.get('invoice_line_tax_id'))], + 'invoice_line_tax_id': res.get('invoice_line_tax_id'), 'account_analytic_id': sale.project_id.id or False, #'note':'', }) @@ -112,49 +184,29 @@ class sale_advance_payment_inv(osv.osv_memory): # If not, the advance will be deduced when generating the final invoice # if sale.order_policy == 'picking': - self.pool.get('sale.order.line').create(cr, uid, { + vals = { 'order_id': sale.id, - 'name': res.get('name'), - 'price_unit': -sale_adv_obj.amount, - 'product_uom_qty': sale_adv_obj.qtty, - 'product_uos_qty': sale_adv_obj.qtty, - 'product_uos': res.get('uos_id'), - 'product_uom': res.get('uos_id'), - 'product_id': sale_adv_obj.product_id.id, + 'name': res.get('name') or ("%s %s %s "%(sale_adv_obj.amount,sale_adv_obj.pay_type,"Advance.")), + 'price_unit': -final_amount, + 'product_uom_qty': sale_adv_obj.qtty or 1.0, + 'product_uos_qty': sale_adv_obj.qtty or 1.0, + 'product_uos': res.get('uos_id') or False, + 'product_id': sale_adv_obj.product_id.id or False, 'discount': False, - 'tax_id': [(6, 0, res.get('invoice_line_tax_id'))], - }, context) + 'tax_id': res.get('invoice_line_tax_id'), + } + if res.get('uos_id'): + vals.update({'product_uom': res.get('uos_id')}) + self.pool.get('sale.order.line').create(cr, uid, vals, context) context.update({'invoice_id':list_inv}) - return { - 'name': 'Open Invoice', - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'sale.open.invoice', - 'type': 'ir.actions.act_window', - 'target': 'new', - 'context': context - } + if context.get('open_invoices'): + return self.open_invoices( cr, uid, ids, context=context) + else: + return {'type': 'ir.actions.act_window_close'} -sale_advance_payment_inv() - -class sale_open_invoice(osv.osv_memory): - _name = "sale.open.invoice" - _description = "Sales Open Invoice" - - def open_invoice(self, cr, uid, ids, context=None): - - """ - To open invoice. - @param self: The object pointer. - @param cr: A database cursor - @param uid: ID of the user currently logged in - @param ids: the ID or list of IDs if we want more than one - @param context: A standard dictionary - @return: - - """ + def open_invoices(self, cr, uid, ids, context=None): if context is None: context = {} mod_obj = self.pool.get('ir.model.data') @@ -176,6 +228,6 @@ class sale_open_invoice(osv.osv_memory): 'type': 'ir.actions.act_window', } -sale_open_invoice() +sale_advance_payment_inv() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale/wizard/sale_make_invoice_advance.xml b/addons/sale/wizard/sale_make_invoice_advance.xml index 2cdcb9b8c99..0c3bb031b3b 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.xml +++ b/addons/sale/wizard/sale_make_invoice_advance.xml @@ -7,15 +7,24 @@ form

- + + + - - + + + + + + -
- + -
+
From e994580e1dd25452ae0841d37da86891759e7a46 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Wed, 16 May 2012 18:01:59 +0200 Subject: [PATCH 11/67] some improvements to kanban view bzr revid: mit@openerp.com-20120516160159-pnb6twf5oox356gs --- addons/web/static/src/css/base.sass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 071d5b3eeca..670696e025d 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1616,7 +1616,7 @@ $colour4: #8a89ba // KanbanView {{{ .oe_kanban_view position: absolute - top: 110px + top: 111px bottom: 0 .oe_kanban_groups height: 100% @@ -1631,6 +1631,8 @@ $colour4: #8a89ba background: #f0eeee border-left: 1px solid #f0f8f8 border-right: 1px solid #b9b9b9 + .oe_kanban_column + height: 100% .oe_kanban_record position: relative display: block From 7c06e4a5b641cd8f10280f22e084104e5714085f Mon Sep 17 00:00:00 2001 From: "Mayur Maheshwari (OpenERP)" Date: Fri, 18 May 2012 10:59:39 +0530 Subject: [PATCH 12/67] [IMP]module: improve tree and form view and remove complexity field from ir.module object bzr revid: mma@tinyerp.com-20120518052939-51ps201qaq51g2bp --- openerp/addons/base/module/module.py | 9 +--- openerp/addons/base/module/module_view.xml | 50 ++++++++++------------ openerp/modules/db.py | 6 +-- openerp/modules/module.py | 1 - 4 files changed, 27 insertions(+), 39 deletions(-) diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index 575a965fa11..e04e4e4a02b 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -161,9 +161,9 @@ class module(osv.osv): return res _columns = { - 'name': fields.char("Name", size=128, readonly=True, required=True, select=True), + 'name': fields.char("Technical Name", size=128, readonly=True, required=True, select=True), 'category_id': fields.many2one('ir.module.category', 'Category', readonly=True, select=True), - 'shortdesc': fields.char('Short Description', size=256, readonly=True, translate=True), + 'shortdesc': fields.char('Name', size=256, readonly=True, translate=True), 'description': fields.text("Description", readonly=True, translate=True), 'author': fields.char("Author", size=128, readonly=True), 'maintainer': fields.char('Maintainer', size=128, readonly=True), @@ -211,9 +211,6 @@ class module(osv.osv): 'certificate' : fields.char('Quality Certificate', size=64, readonly=True), 'application': fields.boolean('Application', readonly=True), 'icon': fields.char('Icon URL', size=128), - 'complexity': fields.selection([('easy','Easy'), ('normal','Normal'), ('expert','Expert')], - string='Complexity', readonly=True, - help='Level of difficulty of module. Easy: intuitive and easy to use for everyone. Normal: easy to use for business experts. Expert: requires technical skills.'), } _defaults = { @@ -221,7 +218,6 @@ class module(osv.osv): 'sequence': 100, 'demo': False, 'license': 'AGPL-3', - 'complexity': 'normal', } _order = 'sequence,name' @@ -464,7 +460,6 @@ class module(osv.osv): 'website': terp.get('website', ''), 'license': terp.get('license', 'AGPL-3'), 'certificate': terp.get('certificate') or False, - 'complexity': terp.get('complexity', ''), 'sequence': terp.get('sequence', 100), 'application': terp.get('application', False), 'auto_install': terp.get('auto_install', False), diff --git a/openerp/addons/base/module/module_view.xml b/openerp/addons/base/module/module_view.xml index 13f330753ff..e22f6ce3fc3 100644 --- a/openerp/addons/base/module/module_view.xml +++ b/openerp/addons/base/module/module_view.xml @@ -77,7 +77,6 @@ -
@@ -90,7 +89,6 @@



- Complex

@@ -125,15 +123,25 @@ ir.module.module form - - - + +
+
+ + - - - @@ -147,26 +155,15 @@ - -
- - - - diff --git a/openerp/addons/base/static/src/css/modules.css b/openerp/addons/base/static/src/css/modules.css index 47460a0972b..ed20ec0907d 100644 --- a/openerp/addons/base/static/src/css/modules.css +++ b/openerp/addons/base/static/src/css/modules.css @@ -36,6 +36,7 @@ .oe_module_desc p { margin: 3px 0 5px; + color: #808080; } .oe_module_desc .oe_button { From e4d2620631f82a79a87412fa5cd693f04ead076c Mon Sep 17 00:00:00 2001 From: "Rucha (Open ERP)" Date: Tue, 22 May 2012 15:19:28 +0530 Subject: [PATCH 17/67] [IMP]: sale: removed unwanted new field advance, improved code and usability bzr revid: rpa@tinyerp.com-20120522094928-qjmqaiwthsvt4sy3 --- .../sale/wizard/sale_make_invoice_advance.py | 30 +++++-------------- .../sale/wizard/sale_make_invoice_advance.xml | 13 +++----- 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py index 237d0254a1a..0d826fe1efa 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.py +++ b/addons/sale/wizard/sale_make_invoice_advance.py @@ -35,12 +35,10 @@ class sale_advance_payment_inv(osv.osv_memory): return product_id _columns = { - 'product_id': fields.many2one('product.product', 'Advance Product', required=False, - help="Select a product of type service which is called 'Advance Product'. You may have to create it and set it as a default value on this field."), + 'product_id': fields.many2one('product.product', 'Advance Product', help="Select a product of type service which is called 'Advance Product'. You may have to create it and set it as a default value on this field."), 'amount': fields.float('Advance Amount', digits=(16, 2), required=True, help="The amount to be invoiced in advance."), 'qtty': fields.float('Quantity', digits=(16, 2), required=True), - 'advance_payment_method':fields.selection([('percentage','Percentage'), ('fixed','Fixed Price')], 'Pay Type', required=True), - 'advance': fields.boolean('Advance'), + 'advance_payment_method':fields.selection([('percentage','Percentage'), ('fixed','Fixed Price')], 'Type', required=True, help="Use Fixed Price if you want to give specific amound in Advance, Use Percentage if you want to give percentage of Total Invoice Amount."), } _defaults = { @@ -49,27 +47,15 @@ class sale_advance_payment_inv(osv.osv_memory): 'product_id': _default_product_id, } - def onchange_advance_payment_method(self, cr, uid, ids, advance_payment_method,product_id, context=None): - if not product_id: - return {'value': {'amount': 0}} + def onchange_advance_payment_method(self, cr, uid, ids, advance_payment_method, product_id, context=None): if advance_payment_method == 'percentage': return {'value': {'amount':0,'product_id':False }} - product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) - return {'value': {'amount':product.list_price}} + else: + if not product_id: + return {'value': {'amount': 0}} + product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) + return {'value': {'amount': product.list_price}} - def onchange_advance_product(self, cr, uid, ids, product_id, context=None): - value = {} - value['advance'] = 'False' - if not product_id: - return {'value': {'amount': 0,'advance': False}} - product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) - value['amount'] = product.list_price - try: - advance_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'sale', 'advance_product_0')[1] - if product.id == advance_id: - value['advance'] = 'True' - finally: - return {'value': value} def create_invoices(self, cr, uid, ids, context=None): """ diff --git a/addons/sale/wizard/sale_make_invoice_advance.xml b/addons/sale/wizard/sale_make_invoice_advance.xml index 01742712668..8ab55c67c17 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.xml +++ b/addons/sale/wizard/sale_make_invoice_advance.xml @@ -7,16 +7,11 @@ form
- - - + - - - - - - + + +
From 15e41cb171508c80fbec0f354b9eb75822af4984 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 23 May 2012 10:53:58 +0200 Subject: [PATCH 30/67] [ADD] Added Kanban oe_kanban_auto_height class. bzr revid: fme@openerp.com-20120523085358-03mfl919f3b2w8yz --- addons/web_kanban/static/src/js/kanban.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 93a726d7dce..e6f9b23258f 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -424,18 +424,23 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ this.$element.data('widget', this); this.$records.data('widget', this); this.$has_been_started.resolve(); - this.compute_cards_height(); + this.compute_cards_auto_height(); return def; }, - compute_cards_height: function() { + compute_cards_auto_height: function() { + // oe_kanban_auto_height is an empty class used by the kanban view in order + // to normalize height amongst kanban cards. (by group) var self = this; var min_height = 0; + var els = []; _.each(this.records, function(r) { - min_height = Math.max(min_height, r.$element.outerHeight()); - }); - _.each(this.records, function(r) { - r.$element.css('min-height', min_height); + var $e = r.$element.find('.oe_kanban_auto_height').first(); + if ($e.length) { + els.push($e[0]); + min_height = Math.max(min_height, $e.outerHeight()); + } }); + $(els).css('min-height', min_height); }, destroy: function() { this._super(); From 2477e2a7e87fe43a843d9a322623f00c55f223a7 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 23 May 2012 10:55:14 +0200 Subject: [PATCH 31/67] [IMP] Kanban project improvements bzr revid: fme@openerp.com-20120523085514-ku1h80z88xbcg3cs --- addons/project/project_view.xml | 2 +- addons/project/static/src/css/project.css | 7 +++++-- addons/project/static/src/js/project.js | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 026b2be0430..a68a7217275 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -188,7 +188,7 @@ -
+
B
  • Edit...
  • diff --git a/addons/project/static/src/css/project.css b/addons/project/static/src/css/project.css index b429d4bf6ee..1d8f04aea65 100644 --- a/addons/project/static/src/css/project.css +++ b/addons/project/static/src/css/project.css @@ -1,9 +1,12 @@ +.oe_kanban_project { + width: 300px; +} .oe_kanban_project_list { margin: 8px 0 8px 0; } -.oe_kanban_project_list a:not(:first-child):before { +/*.oe_kanban_project_list a:not(:first-child):before { content: ' - '; -} +}*/ .oe_kanban_project_fields div { display: inline-block; width: 49%; diff --git a/addons/project/static/src/js/project.js b/addons/project/static/src/js/project.js index d73e49142a1..297aa7184b9 100644 --- a/addons/project/static/src/js/project.js +++ b/addons/project/static/src/js/project.js @@ -9,13 +9,15 @@ openerp.project = function(openerp) { we can implement return value of m2m fields like [(1,"Adminstration"),...]. */ var members_ids = []; - this.$element.find('.project_avatar').each(function() { + this.$element.find('.oe_kanban_project_avatars img').each(function() { members_ids.push($(this).data('member_id')); }); var dataset = new openerp.web.DataSetSearch(this, 'res.users', self.session.context, [['id', 'in', _.uniq(members_ids)]]); dataset.read_slice(['id', 'name']).then(function(result) { _.each(result, function(v, k) { - self.$element.find('.project_avatar[data-member_id=' + v.id + ']').attr('title', v.name).tipsy(); + self.$element.find('.oe_kanban_project_avatars img[data-member_id=' + v.id + ']').attr('title', v.name).tipsy({ + offset: 10 + }); }); }); } From 6d452e2319491b2c59ce9504ab0a13cab778993e Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 23 May 2012 11:00:58 +0200 Subject: [PATCH 32/67] [IMP] Kanban project title : do not wrap, hide overflow with ellipsis bzr revid: fme@openerp.com-20120523090058-mod53pxt0at65wry --- addons/project/static/src/css/project.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/project/static/src/css/project.css b/addons/project/static/src/css/project.css index 1d8f04aea65..ad57708687e 100644 --- a/addons/project/static/src/css/project.css +++ b/addons/project/static/src/css/project.css @@ -1,6 +1,11 @@ .oe_kanban_project { width: 300px; } +.oe_kanban_project h3 { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} .oe_kanban_project_list { margin: 8px 0 8px 0; } From dcd89bca6c47219c1688ae973e4c46213615fdb4 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Wed, 23 May 2012 14:15:17 +0200 Subject: [PATCH 33/67] [IMP] res.partner kaban bzr revid: mit@openerp.com-20120523121517-1mpj5axeedl02t2d --- openerp/addons/base/res/res_partner_view.xml | 58 +++++++------------- 1 file changed, 19 insertions(+), 39 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index efc13262a1b..43b7c4e4d1c 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -491,49 +491,28 @@ - -
    -
    +
    - + -
    -
    - - - - - -
    -

    -
    -

    -

    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    +
    +

    +

    +
      +
    • +
    • +
    • at
    • +
    • +
    • +
    • ,
    • +
    • +
    • Tel:
    • +
    • Mobile:
    • +
    • +
    + @@ -717,3 +696,4 @@ + From 1bee3848e16fe2c726f7ac31c155b2c0f4c356d9 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 23 May 2012 15:01:16 +0200 Subject: [PATCH 34/67] [ADD] Added new colorpicker + misc improvements bzr revid: fme@openerp.com-20120523130116-6yvv8krsryg5x5e5 --- addons/web_kanban/static/src/css/kanban.css | 298 ++++++------------ addons/web_kanban/static/src/css/kanban.sass | 244 ++++---------- addons/web_kanban/static/src/js/kanban.js | 70 ++-- .../web_kanban/static/src/xml/web_kanban.xml | 15 +- 4 files changed, 190 insertions(+), 437 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index ee0517807e6..7030580c1a7 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -107,6 +107,36 @@ .openerp .oe_kanban_view .oe_kanban_quick_create button { float: right; } +.openerp .oe_kanban_view .oe_kanban_vignette { + padding: 8px; + min-height: 100px; +} +.openerp .oe_kanban_view .oe_kanban_image { + display: inline-block; + vertical-align: top; + width: 64px; + height: 64px; + text-align: center; + overflow: hidden; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); + -box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); +} +.openerp .oe_kanban_view .oe_kanban_details { + display: inline-block; + vertical-align: top; + width: 240px; + font-size: 13px; + padding: 0 5px; + color: #4c4c4c; + min-height: 120px; +} +.openerp .oe_kanban_view .oe_kanban_details h4 { + margin: 0 0 4px 0; +} .openerp .oe_kanban_view .oe_kanban_record { position: relative; display: block; @@ -331,6 +361,11 @@ background: red; color: black; } +.openerp .oe_kanban_view .oe_kanban_ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} .openerp .oe_kanban_view a.oe_kanban_menuaction { position: absolute; top: 0px; @@ -349,7 +384,7 @@ right: -140px; padding: 4px; border: 1px solid #afafb6; - width: 160px; + min-width: 160px; overflow-x: hidden; z-index: 900; background: white; @@ -363,14 +398,14 @@ .openerp .oe_kanban_view .oe_kanban_menu p { margin-left: 12px; } -.openerp .oe_kanban_view .oe_kanban_menu li a { +.openerp .oe_kanban_view .oe_kanban_menu > li > a { display: block; padding: 3px 6px; line-height: 14px; color: #4c4c4c; text-decoration: none; } -.openerp .oe_kanban_view .oe_kanban_menu li a:hover { +.openerp .oe_kanban_view .oe_kanban_menu > li > a:hover { background: #f0f0fa; background: -moz-linear-gradient(#f0f0fa, #eeeef6); background: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); @@ -379,229 +414,88 @@ -webkit-box-shadow: none; -box-shadow: none; } -.openerp .oe_kanban_view .oe_kanban_color_picker { - position: absolute; - top: -10px; - border: 1px solid black; - -moz-box-shadow: 2px 2px 5px #666666; - -webkit-box-shadow: 2px 2px 5px #666666; - box-shadow: 2px 2px 5px #666666; - z-index: 2; +.openerp .oe_kanban_view .oe_kanban_colorpicker { + padding: 3px 6px; } -.openerp .oe_kanban_view .oe_kanban_color_picker a { - display: block; - width: 30px; - height: 30px; - border: 1px solid black; - text-align: center; - text-decoration: none; +.openerp .oe_kanban_view .oe_kanban_colorpicker li { + float: left; } -.openerp .oe_kanban_view .oe_kanban_color_picker a:hover { - border-color: white; +.openerp .oe_kanban_view .oe_kanban_colorpicker li a { + display: inline-block; + width: 18px; + height: 18px; + border: 1px solid white; } -.openerp .oe_kanban_view .oe_kanban_color_picker span { - border: none; - font-size: 120%; - font-weight: bold; - color: black; - line-height: 30px; +.openerp .oe_kanban_view .oe_kanban_colorpicker li a:hover { + border: 1px solid gray !important; } -.openerp .oe_kanban_view .oe_kanban_color_0 .oe_kanban_color_bglight { - background: white; +.openerp .oe_kanban_view .oe_kanban_colorpicker li:first-child a { + margin-top: 1px; + height: 16px; + border: 1px solid #cccccc; } -.openerp .oe_kanban_view .oe_kanban_color_0 .oe_kanban_color_bgdark { - background: #eeeeee; +.openerp .oe_kanban_view .oe_kanban_colorpicker li:first-child a:hover { + margin-top: 0px; + height: 18px; } -.openerp .oe_kanban_view .oe_kanban_color_0 .oe_kanban_color_border { - border-color: #cccccc; -} -.openerp .oe_kanban_view .oe_kanban_color_0 .oe_kanban_button { - background-color: #eeeeee; - border-color: #cccccc; - text-shadow: 0 1px white; -} -.openerp .oe_kanban_view .oe_kanban_color_0 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_0 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_0 button.oe_kanban_button:hover { - background-color: #999999; +.openerp .oe_kanban_view .oe_kanban_color_0 { color: white; - text-shadow: 0 1px black; + text-shadow: -1px -1px 0 black, 1px -1px 0 black, -1px 1px 0 black, 1px 1px 0 black; } -.openerp .oe_kanban_view .oe_kanban_color_1 .oe_kanban_color_bglight { - background: #cccccc; +.openerp .oe_kanban_view .oe_kanban_bgcolor_0 { + background-color: white; } -.openerp .oe_kanban_view .oe_kanban_color_1 .oe_kanban_color_bgdark { - background: #999999; +.openerp .oe_kanban_view .oe_kanban_color_1 { + color: #cccccc; } -.openerp .oe_kanban_view .oe_kanban_color_1 .oe_kanban_color_border { - border-color: #666666; +.openerp .oe_kanban_view .oe_kanban_bgcolor_1 { + background-color: #cccccc; } -.openerp .oe_kanban_view .oe_kanban_color_1 .oe_kanban_button { - background-color: #999999; - border-color: #666666; - text-shadow: 0 1px #cccccc; +.openerp .oe_kanban_view .oe_kanban_color_2 { + color: #ffc7c7; } -.openerp .oe_kanban_view .oe_kanban_color_1 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_1 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_1 button.oe_kanban_button:hover { - background-color: #666666; - color: white; - text-shadow: 0 1px black; +.openerp .oe_kanban_view .oe_kanban_bgcolor_2 { + background-color: #ffc7c7; } -.openerp .oe_kanban_view .oe_kanban_color_2 .oe_kanban_color_bglight { - background: #ffc7c7; +.openerp .oe_kanban_view .oe_kanban_color_3 { + color: #fff1c7; } -.openerp .oe_kanban_view .oe_kanban_color_2 .oe_kanban_color_bgdark { - background: #ff8f8f; +.openerp .oe_kanban_view .oe_kanban_bgcolor_3 { + background-color: #fff1c7; } -.openerp .oe_kanban_view .oe_kanban_color_2 .oe_kanban_color_border { - border-color: #d97979; +.openerp .oe_kanban_view .oe_kanban_color_4 { + color: #e3ffc7; } -.openerp .oe_kanban_view .oe_kanban_color_2 .oe_kanban_button { - background-color: #ff8f8f; - border-color: #d97979; - text-shadow: 0 1px #ffc7c7; +.openerp .oe_kanban_view .oe_kanban_bgcolor_4 { + background-color: #e3ffc7; } -.openerp .oe_kanban_view .oe_kanban_color_2 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_2 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_2 button.oe_kanban_button:hover { - background-color: #cc5c5c; - color: white; - text-shadow: 0 1px black; +.openerp .oe_kanban_view .oe_kanban_color_5 { + color: #c7ffd5; } -.openerp .oe_kanban_view .oe_kanban_color_3 .oe_kanban_color_bglight { - background: #fff1c7; +.openerp .oe_kanban_view .oe_kanban_bgcolor_5 { + background-color: #c7ffd5; } -.openerp .oe_kanban_view .oe_kanban_color_3 .oe_kanban_color_bgdark { - background: #ffe38f; +.openerp .oe_kanban_view .oe_kanban_color_6 { + color: #c7ffff; } -.openerp .oe_kanban_view .oe_kanban_color_3 .oe_kanban_color_border { - border-color: #d9c179; +.openerp .oe_kanban_view .oe_kanban_bgcolor_6 { + background-color: #c7ffff; } -.openerp .oe_kanban_view .oe_kanban_color_3 .oe_kanban_button { - background-color: #ffe38f; - border-color: #d9c179; - text-shadow: 0 1px #fff1c7; +.openerp .oe_kanban_view .oe_kanban_color_7 { + color: #c7d5ff; } -.openerp .oe_kanban_view .oe_kanban_color_3 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_3 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_3 button.oe_kanban_button:hover { - background-color: #ccb05c; - color: white; - text-shadow: 0 1px black; +.openerp .oe_kanban_view .oe_kanban_bgcolor_7 { + background-color: #c7d5ff; } -.openerp .oe_kanban_view .oe_kanban_color_4 .oe_kanban_color_bglight { - background: #e3ffc7; +.openerp .oe_kanban_view .oe_kanban_color_8 { + color: #e3c7ff; } -.openerp .oe_kanban_view .oe_kanban_color_4 .oe_kanban_color_bgdark { - background: #c7ff8f; +.openerp .oe_kanban_view .oe_kanban_bgcolor_8 { + background-color: #e3c7ff; } -.openerp .oe_kanban_view .oe_kanban_color_4 .oe_kanban_color_border { - border-color: #a9d979; +.openerp .oe_kanban_view .oe_kanban_color_9 { + color: #ffc7f1; } -.openerp .oe_kanban_view .oe_kanban_color_4 .oe_kanban_button { - background-color: #c7ff8f; - border-color: #a9d979; - text-shadow: 0 1px #e3ffc7; -} -.openerp .oe_kanban_view .oe_kanban_color_4 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_4 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_4 button.oe_kanban_button:hover { - background-color: #94cc5c; - color: white; - text-shadow: 0 1px black; -} -.openerp .oe_kanban_view .oe_kanban_color_5 .oe_kanban_color_bglight { - background: #c7ffd5; -} -.openerp .oe_kanban_view .oe_kanban_color_5 .oe_kanban_color_bgdark { - background: #8fffab; -} -.openerp .oe_kanban_view .oe_kanban_color_5 .oe_kanban_color_border { - border-color: #79d991; -} -.openerp .oe_kanban_view .oe_kanban_color_5 .oe_kanban_button { - background-color: #8fffab; - border-color: #79d991; - text-shadow: 0 1px #c7ffd5; -} -.openerp .oe_kanban_view .oe_kanban_color_5 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_5 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_5 button.oe_kanban_button:hover { - background-color: #5ccc78; - color: white; - text-shadow: 0 1px black; -} -.openerp .oe_kanban_view .oe_kanban_color_6 .oe_kanban_color_bglight { - background: #c7ffff; -} -.openerp .oe_kanban_view .oe_kanban_color_6 .oe_kanban_color_bgdark { - background: #8fffff; -} -.openerp .oe_kanban_view .oe_kanban_color_6 .oe_kanban_color_border { - border-color: #79d9d9; -} -.openerp .oe_kanban_view .oe_kanban_color_6 .oe_kanban_button { - background-color: #8fffff; - border-color: #79d9d9; - text-shadow: 0 1px #c7ffff; -} -.openerp .oe_kanban_view .oe_kanban_color_6 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_6 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_6 button.oe_kanban_button:hover { - background-color: #5ccccc; - color: white; - text-shadow: 0 1px black; -} -.openerp .oe_kanban_view .oe_kanban_color_7 .oe_kanban_color_bglight { - background: #c7d5ff; -} -.openerp .oe_kanban_view .oe_kanban_color_7 .oe_kanban_color_bgdark { - background: #8fabff; -} -.openerp .oe_kanban_view .oe_kanban_color_7 .oe_kanban_color_border { - border-color: #8fabff; -} -.openerp .oe_kanban_view .oe_kanban_color_7 .oe_kanban_button { - background-color: #8fabff; - border-color: #7995e9; - text-shadow: 0 1px #c7d5ff; -} -.openerp .oe_kanban_view .oe_kanban_color_7 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_7 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_7 button.oe_kanban_button:hover { - background-color: #5c78cc; - color: white; - text-shadow: 0 1px black; -} -.openerp .oe_kanban_view .oe_kanban_color_8 .oe_kanban_color_bglight { - background: #e3c7ff; -} -.openerp .oe_kanban_view .oe_kanban_color_8 .oe_kanban_color_bgdark { - background: #c78fff; -} -.openerp .oe_kanban_view .oe_kanban_color_8 .oe_kanban_color_border { - border-color: #a979d9; -} -.openerp .oe_kanban_view .oe_kanban_color_8 .oe_kanban_button { - background-color: #c78fff; - border-color: #a979d9; - text-shadow: 0 1px #e3c7ff; -} -.openerp .oe_kanban_view .oe_kanban_color_8 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_8 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_8 button.oe_kanban_button:hover { - background-color: #945ccc; - color: white; - text-shadow: 0 1px black; -} -.openerp .oe_kanban_view .oe_kanban_color_9 .oe_kanban_color_bglight { - background: #ffc7f1; -} -.openerp .oe_kanban_view .oe_kanban_color_9 .oe_kanban_color_bgdark { - background: #ff8fe3; -} -.openerp .oe_kanban_view .oe_kanban_color_9 .oe_kanban_color_border { - border-color: #d979c1; -} -.openerp .oe_kanban_view .oe_kanban_color_9 .oe_kanban_button { - background-color: #ff8fe3; - border-color: #d979c1; - text-shadow: 0 1px #ffc7f1; -} -.openerp .oe_kanban_view .oe_kanban_color_9 .oe_kanban_button_active, .openerp .oe_kanban_view .oe_kanban_color_9 a.oe_kanban_button:hover, .openerp .oe_kanban_view .oe_kanban_color_9 button.oe_kanban_button:hover { - background-color: #cc5cb0; - color: white; - text-shadow: 0 1px black; -} -.openerp .oe_kanban_view .oe_kanban_color_alert .oe_kanban_color_border, .openerp .oe_kanban_view .oe_kanban_color_red .oe_kanban_color_border { - border-color: #cc0000 !important; -} -.openerp .oe_kanban_view .oe_kanban_color_green .oe_kanban_color_border { - border-color: #00cc00 !important; -} -.openerp .oe_kanban_view .oe_kanban_color_blue .oe_kanban_color_border { - border-color: #0000cc !important; +.openerp .oe_kanban_view .oe_kanban_bgcolor_9 { + background-color: #ffc7f1; } diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index 59db3fc8743..bb012bd328d 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -292,6 +292,10 @@ .oe_kanban_text_red background: red color: #000 + .oe_kanban_ellipsis + overflow: hidden + text-overflow: ellipsis + white-space: nowrap // }}} // KanbanDropDown {{{ a.oe_kanban_menuaction @@ -310,7 +314,7 @@ right: -140px padding: 4px border: 1px solid #afafb6 - width: 160px + min-width: 160px overflow-x: hidden z-index: 900 background: white @@ -318,13 +322,13 @@ @include box-shadow(0 1px 4px rgba(0,0,0,0.3)) p margin-left: 12px - li a + > li > a display: block padding: 3px 6px line-height: 14px color: #4c4c4c text-decoration: none - li a:hover + > li > a:hover background: #f0f0fa background: -moz-linear-gradient(#f0f0fa, #eeeef6) background: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)) @@ -332,214 +336,76 @@ @include box-shadow(none) // }}} // KanbanColorPicker {{{ - .oe_kanban_color_picker - position: absolute - top: -10px - border: 1px solid black - -moz-box-shadow: 2px 2px 5px #666 - -webkit-box-shadow: 2px 2px 5px #666 - box-shadow: 2px 2px 5px #666 - z-index: 2 + .oe_kanban_colorpicker + padding: 3px 6px + .oe_kanban_colorpicker li + float: left a - display: block - width: 30px - height: 30px - border: 1px solid black - text-align: center - text-decoration: none - &:hover - border-color: white - span - border: none - font-size: 120% - font-weight: bold - color: black - line-height: 30px + display: inline-block + width: 18px + height: 18px + border: 1px solid white + a:hover + border: 1px solid gray !important + .oe_kanban_colorpicker li:first-child a + margin-top: 1px + height: 16px + border: 1px solid #ccc + &:hover + margin-top: 0px + height: 18px // }}} // KanbanColors {{{ - // Custom colors are also present in kanban.js - // Custom color#0 .oe_kanban_color_0 - .oe_kanban_color_bglight - background: #FFFFFF - .oe_kanban_color_bgdark - background: #EEEEEE - .oe_kanban_color_border - border-color: #CCCCCC - .oe_kanban_button - background-color: #EEEEEE - border-color: #CCCCCC - text-shadow: 0 1px #FFFFFF - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #999999 - color: #fff - text-shadow: 0 1px #000 + color: #FFFFFF + text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000 + .oe_kanban_bgcolor_0 + background-color: #FFFFFF - // Custom color#1 .oe_kanban_color_1 - .oe_kanban_color_bglight - background: #CCCCCC - .oe_kanban_color_bgdark - background: #999999 - .oe_kanban_color_border - border-color: #666666 - .oe_kanban_button - background-color: #999999 - border-color: #666666 - text-shadow: 0 1px #CCCCCC - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #666666 - color: #fff - text-shadow: 0 1px #000 + color: #CCCCCC + .oe_kanban_bgcolor_1 + background-color: #CCCCCC - // Custom color#2 .oe_kanban_color_2 - .oe_kanban_color_bglight - background: #FFC7C7 - .oe_kanban_color_bgdark - background: #FF8F8F - .oe_kanban_color_border - border-color: #D97979 - .oe_kanban_button - background-color: #FF8F8F - border-color: #D97979 - text-shadow: 0 1px #FFC7C7 - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #CC5C5C - color: #fff - text-shadow: 0 1px #000 + color: #FFC7C7 + .oe_kanban_bgcolor_2 + background-color: #FFC7C7 - // Custom color#3 .oe_kanban_color_3 - .oe_kanban_color_bglight - background: #FFF1C7 - .oe_kanban_color_bgdark - background: #FFE38F - .oe_kanban_color_border - border-color: #D9C179 - .oe_kanban_button - background-color: #FFE38F - border-color: #D9C179 - text-shadow: 0 1px #FFF1C7 - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #CCB05C - color: #fff - text-shadow: 0 1px #000 + color: #FFF1C7 + .oe_kanban_bgcolor_3 + background-color: #FFF1C7 - // Custom color#4 .oe_kanban_color_4 - .oe_kanban_color_bglight - background: #E3FFC7 - .oe_kanban_color_bgdark - background: #C7FF8F - .oe_kanban_color_border - border-color: #A9D979 - .oe_kanban_button - background-color: #C7FF8F - border-color: #A9D979 - text-shadow: 0 1px #E3FFC7 - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #94CC5C - color: #fff - text-shadow: 0 1px #000 + color: #E3FFC7 + .oe_kanban_bgcolor_4 + background-color: #E3FFC7 - // Custom color#5 .oe_kanban_color_5 - .oe_kanban_color_bglight - background: #C7FFD5 - .oe_kanban_color_bgdark - background: #8FFFAB - .oe_kanban_color_border - border-color: #79D991 - .oe_kanban_button - background-color: #8FFFAB - border-color: #79D991 - text-shadow: 0 1px #C7FFD5 - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #5CCC78 - color: #fff - text-shadow: 0 1px #000 + color: #C7FFD5 + .oe_kanban_bgcolor_5 + background-color: #C7FFD5 - // Custom color#6 .oe_kanban_color_6 - .oe_kanban_color_bglight - background: #C7FFFF - .oe_kanban_color_bgdark - background: #8FFFFF - .oe_kanban_color_border - border-color: #79D9D9 - .oe_kanban_button - background-color: #8FFFFF - border-color: #79D9D9 - text-shadow: 0 1px #C7FFFF - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #5CCCCC - color: #fff - text-shadow: 0 1px #000 + color: #C7FFFF + .oe_kanban_bgcolor_6 + background-color: #C7FFFF - // Custom color#7 .oe_kanban_color_7 - .oe_kanban_color_bglight - background: #C7D5FF - .oe_kanban_color_bgdark - background: #8FABFF - .oe_kanban_color_border - border-color: #8FABFF - .oe_kanban_button - background-color: #8FABFF - border-color: #7995E9 - text-shadow: 0 1px #C7D5FF - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #5C78CC - color: #fff - text-shadow: 0 1px #000 + color: #C7D5FF + .oe_kanban_bgcolor_7 + background-color: #C7D5FF - // Custom color#8 .oe_kanban_color_8 - .oe_kanban_color_bglight - background: #E3C7FF - .oe_kanban_color_bgdark - background: #C78FFF - .oe_kanban_color_border - border-color: #A979D9 - .oe_kanban_button - background-color: #C78FFF - border-color: #A979D9 - text-shadow: 0 1px #E3C7FF - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #945CCC - color: #fff - text-shadow: 0 1px #000 + color: #E3C7FF + .oe_kanban_bgcolor_8 + background-color: #E3C7FF - // Custom color#9 .oe_kanban_color_9 - .oe_kanban_color_bglight - background: #FFC7F1 - .oe_kanban_color_bgdark - background: #FF8FE3 - .oe_kanban_color_border - border-color: #D979C1 - .oe_kanban_button - background-color: #FF8FE3 - border-color: #D979C1 - text-shadow: 0 1px #FFC7F1 - .oe_kanban_button_active, a.oe_kanban_button:hover, button.oe_kanban_button:hover - background-color: #CC5CB0 - color: #fff - text-shadow: 0 1px #000 - - // Red border - .oe_kanban_color_alert .oe_kanban_color_border, .oe_kanban_color_red .oe_kanban_color_border - border-color: #c00 !important - - // Green border - .oe_kanban_color_green .oe_kanban_color_border - border-color: #0c0 !important - - // Blue border - .oe_kanban_color_blue .oe_kanban_color_border - border-color: #00c !important - // }}} + color: #FFC7F1 + .oe_kanban_bgcolor_9 + background-color: #FFC7F1 // au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers > "%:p:r.css" // vim:tabstop=4:shiftwidth=4:softtabstop=4:fdm=marker: diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index e6f9b23258f..1dfe39edc94 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -10,6 +10,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ display_name: _lt('Kanban'), default_nr_columns: 3, view_type: "kanban", + number_of_color_schemes: 10, init: function (parent, dataset, view_id, options) { this._super(parent, dataset, view_id, options); _.defaults(this.options, {"quick_creatable": true, "creatable": true}); @@ -114,7 +115,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ case 'button': case 'a': var type = node.attrs.type || ''; - if (_.indexOf('action,object,edit,delete,color'.split(','), type) !== -1) { + if (_.indexOf('action,object,edit,delete'.split(','), type) !== -1) { _.each(node.attrs, function(v, k) { if (_.indexOf('icon,type,name,args,string,context,states,kanban_states'.split(','), k) != -1) { node.attrs['data-' + k] = v; @@ -434,7 +435,7 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ var min_height = 0; var els = []; _.each(this.records, function(r) { - var $e = r.$element.find('.oe_kanban_auto_height').first(); + var $e = r.$element.find('.oe_kanban_auto_height').first().css('min-height', 0); if ($e.length) { els.push($e[0]); min_height = Math.max(min_height, $e.outerHeight()); @@ -559,6 +560,7 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ }, bind_events: function() { var self = this; + this.setup_color_picker(); var $show_on_click = self.$element.find('.oe_kanban_box_show_onclick'); $show_on_click.toggle(this.state.folded); this.$element.find('.oe_kanban_box_show_onclick_trigger').click(function() { @@ -602,6 +604,25 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ } }); }, + setup_color_picker: function() { + var self = this; + var $el = this.$element.find('ul.oe_kanban_colorpicker'); + if ($el.length) { + $el.html(QWeb.render('KanbanColorPicker', { + widget: this + })); + $el.on('click', 'a', function(ev) { + ev.preventDefault(); + var color_field = $(this).parents('.oe_kanban_colorpicker').first().data('field') || 'color'; + var data = {}; + data[color_field] = $(this).data('color'); + self.view.dataset.write(self.id, data, {}, function() { + self.record[color_field] = $(this).data('color'); + self.do_reload(); + }); + }); + } + }, do_action_delete: function($action) { var self = this; if (confirm(_t("Are you sure you want to delete this record ?"))) { @@ -621,28 +642,6 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ this.view.open_record(this.id); } }, - do_action_color: function($action) { - var self = this, - colors = '#FFFFFF,#CCCCCC,#FFC7C7,#FFF1C7,#E3FFC7,#C7FFD5,#C7FFFF,#C7D5FF,#E3C7FF,#FFC7F1'.split(','), - $cpicker = $(QWeb.render('KanbanColorPicker', { colors : colors, columns: 2 })); - $action.after($cpicker); - $cpicker.mouseenter(function() { - clearTimeout($cpicker.data('timeoutId')); - }).mouseleave(function(evt) { - var timeoutId = setTimeout(function() { $cpicker.remove(); }, 500); - $cpicker.data('timeoutId', timeoutId); - }); - $cpicker.find('a').click(function() { - var data = {}; - data[$action.data('name')] = $(this).data('color'); - self.view.dataset.write(self.id, data, {}, function() { - self.record[$action.data('name')] = $(this).data('color'); - self.do_reload(); - }); - $cpicker.remove(); - return false; - }); - }, do_action_object: function ($action) { var button_attrs = $action.data(); this.view.do_execute_action(button_attrs, this.view.dataset, this.id, this.do_reload); @@ -652,19 +651,18 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ this.view.dataset.read_ids([this.id], this.view.fields_keys.concat(['__last_update'])).then(function(records) { if (records.length) { self.set_record(records[0]); - self.do_render(); + var $render = $(self.render()); + self.$element.replaceWith($render); + self.$element = $render; + self.bind_events(); + self.group.compute_cards_auto_height(); } else { self.destroy(); } }); }, - do_render: function() { - this.$element.html(this.render()); - this.bind_events(); - }, - kanban_color: function(variable) { - var number_of_color_schemes = 10, - index = 0; + kanban_getcolor: function(variable) { + var index = 0; switch (typeof(variable)) { case 'string': for (var i=0, ii=variable.length; i - - - - - </tr><tr> - - -
    - - - -
    +
  • + +
  • From 6bb0e4fdc97df1877b5a8e5f80a505303d037758 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 23 May 2012 15:02:18 +0200 Subject: [PATCH 35/67] [IMP] Added new colorpicker to project and opportunities bzr revid: fme@openerp.com-20120523130218-nfrbs7y2p51k3z79 --- addons/crm/crm_lead_view.xml | 3 ++- addons/project/project_view.xml | 18 +++--------------- addons/project/static/src/css/project.css | 6 ------ 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index c2c4aa7756f..8b84edddc1a 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -251,11 +251,12 @@
-
+
B