From bd03e6aabfe178476894912df1025a17253c6ddc Mon Sep 17 00:00:00 2001 From: "RavishchanraMurari (Open ERP)" Date: Thu, 15 Sep 2011 18:06:42 +0530 Subject: [PATCH 01/83] project_issue_kanban bzr revid: rmu@tinyerp.com-20110915123642-hiq0sfcunrciytk3 --- addons/project_issue/project_issue.py | 18 ++++- addons/project_issue/project_issue_menu.xml | 2 +- addons/project_issue/project_issue_view.xml | 75 +++++++++++++++++++++ 3 files changed, 93 insertions(+), 2 deletions(-) diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 8237159af7a..128be8c2191 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -227,6 +227,7 @@ class project_issue(crm.crm_case, osv.osv): multi='compute_day', type="float", store=True), 'inactivity_days': fields.function(_compute_day, string='Days since last action', \ multi='compute_day', type="integer", help="Difference in days between last action and current date"), + 'color': fields.integer('Color Index'), 'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]), 'date_action_last': fields.datetime('Last Action', readonly=1), 'date_action_next': fields.datetime('Next Action', readonly=1), @@ -268,7 +269,22 @@ class project_issue(crm.crm_case, osv.osv): 'project_id':_get_project, 'categ_id' : lambda *a: False, #'assigned_to' : lambda obj, cr, uid, context: uid, - } + } + + def set_priority(self, cr, uid, ids, priority): + """Set lead priority + """ + return self.write(cr, uid, ids, {'priority' : priority}) + + def set_high_priority(self, cr, uid, ids, *args): + """Set lead priority to high + """ + return self.set_priority(cr, uid, ids, '1') + + def set_normal_priority(self, cr, uid, ids, *args): + """Set lead priority to normal + """ + return self.set_priority(cr, uid, ids, '3') def convert_issue_task(self, cr, uid, ids, context=None): case_obj = self.pool.get('project.issue') diff --git a/addons/project_issue/project_issue_menu.xml b/addons/project_issue/project_issue_menu.xml index 18c8779704f..0915b2b96d7 100644 --- a/addons/project_issue/project_issue_menu.xml +++ b/addons/project_issue/project_issue_menu.xml @@ -10,7 +10,7 @@ Issues project.issue form - tree,calendar + tree,calendar,kanban {"search_default_user_id": uid, "search_default_current":1, "search_default_project_id":project_id} diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 0bf171d6aeb..b54690a3deb 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -263,6 +263,81 @@ + + + + + Project Issue Kanban + project.issue + kanban + + + + + + + + + + + + +
+
+ + + + + + +
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
+ Version +
+
+ + +
+
+
+
+
+
+
+ + + + + + # ------------------------------------------------------ # Feature Requests # ------------------------------------------------------ From d7e38b95b498b8f1c8028327a8dbd636cddbd0d0 Mon Sep 17 00:00:00 2001 From: "RavishchanraMurari (Open ERP)" Date: Fri, 16 Sep 2011 12:05:55 +0530 Subject: [PATCH 02/83] project_issue_karban_view bzr revid: rmu@tinyerp.com-20110916063555-m9l28fb9ravuf7r9 --- addons/project_issue/project_issue_view.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index b54690a3deb..9c10b958d80 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -284,13 +284,13 @@
- - - +
+ + +
-
@@ -306,7 +306,7 @@
- Version + Version
From dc1ba50c5e1f857e869b1f6aa508f7517bc8a4a6 Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Fri, 16 Sep 2011 15:42:14 +0530 Subject: [PATCH 03/83] [IMP]:hr:added kanban view for hr employess. bzr revid: apa@tinyerp.com-20110916101214-hlff8uqv8y87h5bi --- addons/hr/__openerp__.py | 2 +- addons/hr/hr.py | 5 ++- addons/hr/hr_view.xml | 83 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 86 insertions(+), 4 deletions(-) diff --git a/addons/hr/__openerp__.py b/addons/hr/__openerp__.py index 598b49a725e..bca65c54cb2 100644 --- a/addons/hr/__openerp__.py +++ b/addons/hr/__openerp__.py @@ -38,7 +38,7 @@ You can manage: 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'images': ['images/hr_department.jpeg', 'images/hr_employee.jpeg','images/hr_job_position.jpeg'], - 'depends': ['base_setup', 'resource', 'board'], + 'depends': ['base_setup','mail', 'resource', 'board'], 'init_xml': [], 'update_xml': [ 'security/hr_security.xml', diff --git a/addons/hr/hr.py b/addons/hr/hr.py index 1424d5e3378..512985b9b32 100644 --- a/addons/hr/hr.py +++ b/addons/hr/hr.py @@ -149,7 +149,9 @@ class hr_employee(osv.osv): 'coach_id': fields.many2one('hr.employee', 'Coach'), 'job_id': fields.many2one('hr.job', 'Job'), 'photo': fields.binary('Photo'), - 'passport_id':fields.char('Passport No', size=64) + 'passport_id':fields.char('Passport No', size=64), + 'color': fields.integer('Color Index'), + 'city': fields.related('address_id', 'city', type='char', string='City'), } def unlink(self, cr, uid, ids, context=None): @@ -198,6 +200,7 @@ class hr_employee(osv.osv): 'active': 1, 'photo': _get_photo, 'marital': 'single', + 'color': 0, } def _check_recursion(self, cr, uid, ids, context=None): diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index fb10baedc9e..d71f78a3053 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -125,7 +125,72 @@
- + + + HR - Employess Kanban + hr.employee + kanban + + + + + + + + + + + + +
+ +
+ + + + + Employees Structure hr.employee @@ -149,13 +214,27 @@ Employees hr.employee form - tree,form + tree,form,kanban [] {"search_default_department_id": department_id,"search_default_active":eval('True')} Here you can manage your work force by creating employees and assigning them specific properties in the system. Maintain all employee related information and keep track of anything that needs to be recorded for them. The personal information tab will help you maintain their identity data. The Categories tab gives you the opportunity to assign them related employee categories depending on their position and activities within the company. A category can be a seniority level within the company or a department. The Timesheets tab allows to assign them a specific timesheet and analytic journal where they will be able to enter time through the system. In the note tab, you can enter text data that should be recorded for a specific employee. + + + + tree + + + + + + + form + + + From fce6f5932b1859db8e26dffff5fbb0d445885df5 Mon Sep 17 00:00:00 2001 From: "Tejas (OpenERP)" Date: Fri, 16 Sep 2011 16:15:01 +0530 Subject: [PATCH 04/83] [kanban] contacts view for kanban bzr revid: tta@openerp.com-20110916104501-tuwftefbl7lumix7 --- openerp/addons/base/res/res_partner.py | 1 + openerp/addons/base/res/res_partner_view.xml | 64 ++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 4b8f1279787..2e692e2d4b7 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -300,6 +300,7 @@ class res_partner_address(osv.osv): 'active': fields.boolean('Active', help="Uncheck the active field to hide the contact."), # 'company_id': fields.related('partner_id','company_id',type='many2one',relation='res.company',string='Company', store=True), 'company_id': fields.many2one('res.company', 'Company',select=1), + 'color': fields.integer('Color Index'), } _defaults = { 'active': lambda *a: 1, diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 8b26023701d..c47edc57aad 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -105,11 +105,75 @@ + + + res.partner.address.kanban + res.partner.address + kanban + + + + + + + + + + + + + +
+ +
+ + + + + + Addresses ir.actions.act_window res.partner.address form + tree,form,kanban {"search_default_customer":1} Customers (also called Partners in other areas of the system) helps you manage your address book of companies whether they are prospects, customers and/or suppliers. The partner form allows you to track and record all the necessary information to interact with your partners from the company address to their contacts as well as pricelists, and much more. If you installed the CRM, with the history tab, you can track all the interactions with a partner such as opportunities, emails, or sales orders issued. From 00a2a259301fe612f8d7247563ff956a3b5f929e Mon Sep 17 00:00:00 2001 From: "Tejas (OpenERP)" Date: Fri, 16 Sep 2011 16:45:26 +0530 Subject: [PATCH 05/83] [kanban] id changed and make email and phone italic bzr revid: tta@openerp.com-20110916111526-znb3mc918jfzosw7 --- openerp/addons/base/res/res_partner_view.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index c47edc57aad..35c31cb0b06 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -106,7 +106,7 @@ - + res.partner.address.kanban res.partner.address kanban @@ -143,9 +143,9 @@ ,
,
- + , - + From 2e35f396065201547bb289a458e9e51e6d343798 Mon Sep 17 00:00:00 2001 From: "Tejas (OpenERP)" Date: Fri, 16 Sep 2011 17:19:45 +0530 Subject: [PATCH 06/83] [kanban] bold tag removed bzr revid: tta@openerp.com-20110916114945-3zge1h6e6x2ohxnm --- openerp/addons/base/res/res_partner_view.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 35c31cb0b06..722d11c0770 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -106,7 +106,7 @@
- + res.partner.address.kanban res.partner.address kanban @@ -142,10 +142,10 @@ ,
- ,
- + ,
+ , -
+ From 7123f18cc0eb19c36b9cc08d3755864978ffa215 Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Fri, 16 Sep 2011 17:33:52 +0530 Subject: [PATCH 07/83] [IMP]:applied amb's patch and improved it for add the kanban view for hr_recruitment. bzr revid: apa@tinyerp.com-20110916120352-4o5ycwzx3p9zktax --- addons/hr_recruitment/hr_recruitment.py | 17 ++++ addons/hr_recruitment/hr_recruitment_menu.xml | 2 +- addons/hr_recruitment/hr_recruitment_view.xml | 79 +++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 7fde90dc8e9..1499243500b 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -177,6 +177,7 @@ class hr_applicant(crm.crm_case, osv.osv): multi='day_open', type="float", store=True), 'day_close': fields.function(_compute_day, string='Days to Close', \ multi='day_close', type="float", store=True), + 'color': fields.integer('Color Index'), } def _get_stage(self, cr, uid, context=None): @@ -191,6 +192,7 @@ class hr_applicant(crm.crm_case, osv.osv): 'priority': lambda *a: '', 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c), 'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0], + 'color': 0, } def onchange_job(self,cr, uid, ids, job, context=None): @@ -440,6 +442,21 @@ class hr_applicant(crm.crm_case, osv.osv): res = super(hr_applicant, self).case_reset(cr, uid, ids, *args) self.write(cr, uid, ids, {'date_open': False, 'date_closed': False}) return res + + def set_priority(self, cr, uid, ids, priority): + """Set lead priority + """ + return self.write(cr, uid, ids, {'priority' : priority}) + + def set_high_priority(self, cr, uid, ids, *args): + """Set lead priority to high + """ + return self.set_priority(cr, uid, ids, '1') + + def set_normal_priority(self, cr, uid, ids, *args): + """Set lead priority to normal + """ + return self.set_priority(cr, uid, ids, '3') hr_applicant() diff --git a/addons/hr_recruitment/hr_recruitment_menu.xml b/addons/hr_recruitment/hr_recruitment_menu.xml index 9883e311fba..0bac3f8615a 100644 --- a/addons/hr_recruitment/hr_recruitment_menu.xml +++ b/addons/hr_recruitment/hr_recruitment_menu.xml @@ -6,7 +6,7 @@ Applicants hr.applicant - tree,form,graph,calendar + tree,form,graph,calendar,kanban {"search_default_user_id":uid, 'search_default_current': 1,"search_default_department_id": department_id} diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index 629b1c68012..290dedd2fb3 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -283,7 +283,86 @@ + + + Hr Applicants kanban + hr.applicant + kanban + + + + + + + + + + +
+
+
+ + + + + +
+ + + + + +
+
+
+ + + + +
+
+ +
+
+ + + (Not Good) + (On Average) + (Good) + (Very Good) + (Excellent) +
+
+ +
+
+ +
+
+
+ +
+
+
+
+
+
+
# ------------------------------------------------------ # HR Job # ------------------------------------------------------ From dc54be9bb925f50008907dc657a8a5e8bcb2fcbe Mon Sep 17 00:00:00 2001 From: "Amit Bhavsar (Open ERP)" Date: Fri, 16 Sep 2011 18:17:25 +0530 Subject: [PATCH 08/83] [kabanization],kanban view for the partner bzr revid: amb@tinyerp.com-20110916124725-1d07ph63gx8nv3u1 --- openerp/addons/base/res/res_partner.py | 4 ++ openerp/addons/base/res/res_partner_view.xml | 72 ++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 4b8f1279787..d88bf8463a4 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -131,12 +131,15 @@ class res_partner(osv.osv): 'customer': fields.boolean('Customer', help="Check this box if the partner is a customer."), 'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."), 'city': fields.related('address', 'city', type='char', string='City'), + 'function': fields.related('address', 'function', type='char', string='function'), + 'subname': fields.related('address', 'name', type='char', string='Contact Name'), 'phone': fields.related('address', 'phone', type='char', string='Phone'), 'mobile': fields.related('address', 'mobile', type='char', string='Mobile'), 'country': fields.related('address', 'country_id', type='many2one', relation='res.country', string='Country'), 'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."), 'email': fields.related('address', 'email', type='char', size=240, string='E-mail'), 'company_id': fields.many2one('res.company', 'Company', select=1), + 'color': fields.integer('Color Index'), } def _default_category(self, cr, uid, context={}): @@ -150,6 +153,7 @@ class res_partner(osv.osv): 'address': [{'type': 'default'}], 'category_id': _default_category, 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=c), + 'color': 0, } def copy(self, cr, uid, id, default={}, context={}): diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 8b26023701d..8f7111bd738 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -353,12 +353,84 @@
+ + + + RES - PARTNER KANBAN + res.partner + kanban + + + + + + + + + + + + + +
+ +
+ + + + +
Customers ir.actions.act_window res.partner form + kanban {"search_default_customer":1} A customer is an entity you do business with, like a company or an organization. A customer can have several contacts or addresses which are the people working for this company. You can use the history tab, to follow all transactions related to a customer: sales order, emails, opportunities, claims, etc. If you use the email gateway, the Outlook or the Thunderbird plugin, don't forget to register emails to each contact so that the gateway will automatically attach incoming emails to the right partner. From e5e20ba47cfb68fb23d33b7a911f7ca5cb92108a Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Fri, 16 Sep 2011 18:43:02 +0530 Subject: [PATCH 09/83] [IMP]:improved bzr revid: apa@tinyerp.com-20110916131302-3jjj3ly3xy00f0so --- addons/project_issue/project_issue_view.xml | 93 +++++++++++---------- 1 file changed, 51 insertions(+), 42 deletions(-) diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 9c10b958d80..605c26f232b 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -274,58 +274,67 @@ - - - - - - - + + + + + + +
- - - - - -
- - - -
- -
-
- -
-
- -
-
- -
-
- Version -
-
- -
-
+
+ + + + + +
+ + + + + +
+
+
+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ -
+
+
From 0ee38e29ade5acc7fd9aa8955901c5fbc69c788f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 16 Sep 2011 15:22:28 +0200 Subject: [PATCH 10/83] [IMP] convert form widgets to use a root class to find themselves back in the rendered dom, instead of a root id bzr revid: xmo@openerp.com-20110916132228-h2qszo33q6z289qf --- addons/web/static/src/js/view_form.js | 22 ++++++++-------- addons/web/static/src/xml/base.xml | 37 +++++++++++++-------------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index e28936b850d..16a4ba908a7 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -82,7 +82,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# _.each(this.widgets, function(w) { w.start(); }); - this.$form_header = this.$element.find('#' + this.element_id + '_header'); + this.$form_header = this.$element.find('.oe_form_header'); this.$form_header.find('div.oe_form_pager button[data-pager-action]').click(function() { var action = $(this).data('pager-action'); self.on_pager_action(action); @@ -196,7 +196,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# } }, do_update_pager: function(hide_index) { - var $pager = this.$element.find('#' + this.element_id + '_header div.oe_form_pager'); + var $pager = this.$form_header.find('div.oe_form_pager'); var index = hide_index ? '-' : this.dataset.index + 1; $pager.find('span.oe_pager_index').html(index); $pager.find('span.oe_pager_count').html(this.dataset.ids.length); @@ -619,6 +619,7 @@ openerp.web.form.compute_domain = function(expr, fields) { openerp.web.form.Widget = openerp.web.Widget.extend(/** @lends openerp.web.form.Widget# */{ template: 'Widget', + identifier_prefix: 'formview-widget-', /** * @constructs openerp.web.form.Widget * @extends openerp.web.Widget @@ -632,11 +633,13 @@ openerp.web.form.Widget = openerp.web.Widget.extend(/** @lends openerp.web.form. this.modifiers = JSON.parse(this.node.attrs.modifiers || '{}'); this.type = this.type || node.tag; this.element_name = this.element_name || this.type; - this.element_id = [this.view.element_id, this.element_name, this.view.widgets_counter++].join("_"); + this.element_class = [ + 'formview', this.view.view_id, this.element_name, + this.view.widgets_counter++].join("_"); - this._super(view, this.element_id); + this._super(view); - this.view.widgets[this.element_id] = this; + this.view.widgets[this.element_class] = this; this.children = node.children; this.colspan = parseInt(node.attrs.colspan || 1, 10); this.decrease_max_width = 0; @@ -649,7 +652,7 @@ openerp.web.form.Widget = openerp.web.Widget.extend(/** @lends openerp.web.form. this.width = this.node.attrs.width; }, start: function() { - this.$element = $('#' + this.element_id); + this.$element = this.view.$element.find('.' + this.element_class); }, stop: function() { if (this.$element) { @@ -896,7 +899,7 @@ openerp.web.form.WidgetLabel = openerp.web.form.Widget.extend({ var self = this; this.$element.find("label").dblclick(function() { var widget = self['for'] || self; - console.log(widget.element_id , widget); + console.log(widget.element_class , widget); window.w = widget; }); } @@ -1932,9 +1935,8 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ }, validate: function() { this.invalid = false; - var self = this; - var view = self.viewmanager.views[self.viewmanager.active_view].controller; - if (self.viewmanager.active_view === "form") { + var view = this.viewmanager.views[this.viewmanager.active_view].controller; + if (this.viewmanager.active_view === "form") { for (var f in view.fields) { f = view.fields[f]; if (!f.is_valid()) { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index c2b6ca0bdf2..daf85c43ee7 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -649,7 +649,7 @@ -
+ + + + + + Customers From ad60a40879c05116fd9a4998e49fa1939569e21d Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Mon, 19 Sep 2011 14:47:01 +0530 Subject: [PATCH 16/83] [IMP]:improved bzr revid: apa@tinyerp.com-20110919091701-t4jzmqm4245knacb --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 221d5c34119..efac1a6c603 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -390,7 +390,7 @@
- +
From c8c52f6257fc2157ef979bf89435cb289dfb6644 Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Mon, 19 Sep 2011 15:03:43 +0530 Subject: [PATCH 17/83] improved bzr revid: apa@tinyerp.com-20110919093343-nykuuvw7d8d0o1xn --- addons/hr/hr_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index d71f78a3053..4b5d64746a9 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -157,8 +157,8 @@
-
- + +
From b4e8ac180c6811587e036c62a6c0603fadd2277c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 19 Sep 2011 12:15:17 +0200 Subject: [PATCH 18/83] [REM] redundant initializers in formview widgets: move most formview widget templates to the class-level bzr revid: xmo@openerp.com-20110919101517-40303tgi58cfshtk --- addons/web/static/src/js/view_form.js | 58 ++++++++------------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b1ce7542210..23a0f19f121 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -816,9 +816,9 @@ openerp.web.form.WidgetNotebookPage = openerp.web.form.WidgetFrame.extend({ }); openerp.web.form.WidgetSeparator = openerp.web.form.Widget.extend({ + template: 'WidgetSeparator', init: function(view, node) { this._super(view, node); - this.template = "WidgetSeparator"; this.orientation = node.attrs.orientation || 'horizontal'; if (this.orientation === 'vertical') { this.width = '1'; @@ -828,9 +828,9 @@ openerp.web.form.WidgetSeparator = openerp.web.form.Widget.extend({ }); openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ + template: 'WidgetButton', init: function(view, node) { this._super(view, node); - this.template = "WidgetButton"; if (this.string) { // We don't have button key bindings in the webclient this.string = this.string.replace(/_/g, ''); @@ -881,6 +881,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ }); openerp.web.form.WidgetLabel = openerp.web.form.Widget.extend({ + template: 'WidgetLabel', init: function(view, node) { this.element_name = 'label_' + node.attrs.name; @@ -891,7 +892,6 @@ openerp.web.form.WidgetLabel = openerp.web.form.Widget.extend({ this.template = "WidgetParagraph"; this.colspan = parseInt(this.node.attrs.colspan || 1, 10); } else { - this.template = "WidgetLabel"; this.colspan = 1; this.width = '1%'; this.decrease_max_width = 1; @@ -1049,10 +1049,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f }); openerp.web.form.FieldChar = openerp.web.form.Field.extend({ - init: function(view, node) { - this._super(view, node); - this.template = "FieldChar"; - }, + template: 'FieldChar', start: function() { this._super.apply(this, arguments); this.$element.find('input').change(this.on_ui_change); @@ -1085,10 +1082,7 @@ openerp.web.form.FieldChar = openerp.web.form.Field.extend({ }); openerp.web.form.FieldEmail = openerp.web.form.FieldChar.extend({ - init: function(view, node) { - this._super(view, node); - this.template = "FieldEmail"; - }, + template: 'FieldEmail', start: function() { this._super.apply(this, arguments); this.$element.find('button').click(this.on_button_clicked); @@ -1107,10 +1101,7 @@ openerp.web.form.FieldEmail = openerp.web.form.FieldChar.extend({ }); openerp.web.form.FieldUrl = openerp.web.form.FieldChar.extend({ - init: function(view, node) { - this._super(view, node); - this.template = "FieldUrl"; - }, + template: 'FieldUrl', start: function() { this._super.apply(this, arguments); this.$element.find('button').click(this.on_button_clicked); @@ -1136,9 +1127,9 @@ openerp.web.form.FieldFloat = openerp.web.form.FieldChar.extend({ }); openerp.web.form.FieldDatetime = openerp.web.form.Field.extend({ + template: 'FieldDate', init: function(view, node) { this._super(view, node); - this.template = "FieldDate"; this.jqueryui_object = 'datetimepicker'; }, start: function() { @@ -1229,10 +1220,7 @@ openerp.web.form.FieldDate = openerp.web.form.FieldDatetime.extend({ }); openerp.web.form.FieldText = openerp.web.form.Field.extend({ - init: function(view, node) { - this._super(view, node); - this.template = "FieldText"; - }, + template: 'FieldText', start: function() { this._super.apply(this, arguments); this.$element.find('textarea').change(this.on_ui_change); @@ -1265,10 +1253,7 @@ openerp.web.form.FieldText = openerp.web.form.Field.extend({ }); openerp.web.form.FieldBoolean = openerp.web.form.Field.extend({ - init: function(view, node) { - this._super(view, node); - this.template = "FieldBoolean"; - }, + template: 'FieldBoolean', start: function() { var self = this; this._super.apply(this, arguments); @@ -1299,10 +1284,7 @@ openerp.web.form.FieldBoolean = openerp.web.form.Field.extend({ }); openerp.web.form.FieldProgressBar = openerp.web.form.Field.extend({ - init: function(view, node) { - this._super(view, node); - this.template = "FieldProgressBar"; - }, + template: 'FieldProgressBar', start: function() { this._super.apply(this, arguments); this.$element.find('div').progressbar({ @@ -1325,10 +1307,10 @@ openerp.web.form.FieldTextXml = openerp.web.form.Field.extend({ }); openerp.web.form.FieldSelection = openerp.web.form.Field.extend({ + template: 'FieldSelection', init: function(view, node) { var self = this; this._super(view, node); - this.template = "FieldSelection"; this.values = this.field.selection; _.each(this.values, function(v, i) { if (v[0] === false && v[1] === '') { @@ -1435,9 +1417,9 @@ openerp.web.form.dialog = function(content, options) { }; openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ + template: 'FieldMany2One', init: function(view, node) { this._super(view, node); - this.template = "FieldMany2One"; this.limit = 7; this.value = null; this.cm_id = _.uniqueId('m2o_cm_'); @@ -1762,10 +1744,10 @@ var commands = { } }; openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ + template: 'FieldOne2Many', multi_selection: false, init: function(view, node) { this._super(view, node); - this.template = "FieldOne2Many"; this.is_started = $.Deferred(); this.form_last_update = $.Deferred(); this.disable_utility_classes = true; @@ -2020,10 +2002,10 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({ }); openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({ + template: 'FieldMany2Many', multi_selection: false, init: function(view, node) { this._super(view, node); - this.template = "FieldMany2Many"; this.list_id = _.uniqueId("many2many"); this.is_started = $.Deferred(); }, @@ -2365,9 +2347,9 @@ openerp.web.form.FormOpenDataset = openerp.web.ReadOnlyDataSetSearch.extend({ }); openerp.web.form.FieldReference = openerp.web.form.Field.extend({ + template: 'FieldReference', init: function(view, node) { this._super(view, node); - this.template = "FieldReference"; this.fields_view = { fields: { selection: { @@ -2502,10 +2484,7 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({ }); openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({ - init: function(view, node) { - this._super(view, node); - this.template = "FieldBinaryFile"; - }, + template: 'FieldBinaryFile', set_value: function(value) { this._super.apply(this, arguments); var show_value = (value != null && value !== false) ? value : ''; @@ -2533,10 +2512,7 @@ openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({ }); openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({ - init: function(view, node) { - this._super(view, node); - this.template = "FieldBinaryImage"; - }, + template: 'FieldBinaryImage', start: function() { this._super.apply(this, arguments); this.$image = this.$element.find('img.oe-binary-image'); From 04f843a986181a74d5512c9916f153faf8fb5080 Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Mon, 19 Sep 2011 15:54:16 +0530 Subject: [PATCH 19/83] set images bzr revid: apa@tinyerp.com-20110919102416-x0vk0x60llm1qjjb --- addons/hr/hr_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index 4b5d64746a9..7b7b25a1557 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -158,7 +158,7 @@ -
- +
From 2ad93ea0cd777538670dcab06c995586b14dbfc7 Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Mon, 19 Sep 2011 16:17:42 +0530 Subject: [PATCH 20/83] [IMP] bzr revid: apa@tinyerp.com-20110919104742-f52pkqpluov2aob6 --- addons/hr/hr_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index 7b7b25a1557..b5192b63d44 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -158,7 +158,7 @@
- +
From ea6299dae6e1a5341e6bec8d164c642492af0d12 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 19 Sep 2011 13:57:46 +0200 Subject: [PATCH 21/83] [FIX] form.FieldOne2Many, nesting itself inside itself, breaking the self-matcher bzr revid: xmo@openerp.com-20110919115746-16jz8hajcdgl010f --- addons/web/static/src/xml/base.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 498a8bb1dd2..c88b0116a27 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -855,8 +855,6 @@ -
-
From 566f9a43e8fce80cb53386aa4a003f4c6af21113 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 19 Sep 2011 14:24:16 +0200 Subject: [PATCH 22/83] [ADD] readonly branch to a bunch of form widgets bzr revid: xmo@openerp.com-20110919122416-h773tyz1kogazyy0 --- addons/web/static/src/js/view_form.js | 70 +++++++++++++++++++---- addons/web/static/src/xml/base.xml | 80 +++++++++++++++++++++------ 2 files changed, 122 insertions(+), 28 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 23a0f19f121..1a14cf1745d 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1057,7 +1057,12 @@ openerp.web.form.FieldChar = openerp.web.form.Field.extend({ set_value: function(value) { this._super.apply(this, arguments); var show_value = openerp.web.format_value(value, this, ''); - this.$element.find('input').val(show_value); + if (this.view.readonly) { + this.$element.find('div').text(show_value); + } else { + this.$element.find('input').val(show_value); + } + return show_value; }, update_dom: function() { this._super.apply(this, arguments); @@ -1095,8 +1100,12 @@ openerp.web.form.FieldEmail = openerp.web.form.FieldChar.extend({ } }, set_value: function(value) { - this._super.apply(this, arguments); - this.$element.find('a').attr('href', 'mailto:' + this.$element.find('input').val()); + var displayed = this._super.apply(this, arguments); + if (this.view.readonly) { + this.$element.find('a') + .attr('href', 'mailto:' + displayed) + .text(displayed); + } } }); @@ -1112,6 +1121,14 @@ openerp.web.form.FieldUrl = openerp.web.form.FieldChar.extend({ } else { window.open(this.value); } + }, + set_value: function(value) { + var displayed = this._super.apply(this, arguments); + if (this.view.readonly) { + this.$element.find('a') + .attr('href', displayed) + .text(displayed); + } } }); @@ -1130,11 +1147,14 @@ openerp.web.form.FieldDatetime = openerp.web.form.Field.extend({ template: 'FieldDate', init: function(view, node) { this._super(view, node); - this.jqueryui_object = 'datetimepicker'; + if (!this.view.readonly) { + this.jqueryui_object = 'datetimepicker'; + } }, start: function() { var self = this; this._super.apply(this, arguments); + if (this.view.readonly) { return; } this.$element.find('input').change(this.on_ui_change); this.picker({ onSelect: this.on_picker_select, @@ -1164,7 +1184,11 @@ openerp.web.form.FieldDatetime = openerp.web.form.Field.extend({ set_value: function(value) { value = this.parse(value); this._super(value); - this.$element.find('input').val(value ? this.format_client(value) : ''); + if (this.view.readonly) { + this.$element.find('div').text(value ? this.format_client(value) : ''); + } else { + this.$element.find('input').val(value ? this.format_client(value) : ''); + } }, get_value: function() { return this.format(this.value); @@ -1211,7 +1235,9 @@ openerp.web.form.FieldDatetime = openerp.web.form.Field.extend({ openerp.web.form.FieldDate = openerp.web.form.FieldDatetime.extend({ init: function(view, node) { this._super(view, node); - this.jqueryui_object = 'datepicker'; + if (!this.view.readonly) { + this.jqueryui_object = 'datepicker'; + } }, on_picker_select: function(text, instance) { this._super(text, instance); @@ -1228,7 +1254,11 @@ openerp.web.form.FieldText = openerp.web.form.Field.extend({ set_value: function(value) { this._super.apply(this, arguments); var show_value = openerp.web.format_value(value, this, ''); - this.$element.find('textarea').val(show_value); + if (this.view.readonly) { + this.$element.find('div').text(show_value); + } else { + this.$element.find('textarea').val(show_value); + } }, update_dom: function() { this._super.apply(this, arguments); @@ -1265,7 +1295,11 @@ openerp.web.form.FieldBoolean = openerp.web.form.Field.extend({ }, set_value: function(value) { this._super.apply(this, arguments); - this.$element.find('input')[0].checked = value; + if (this.view.readonly) { + this.$element.find('span').text(value ? '✔' : '✘'); + } else { + this.$element.find('input')[0].checked = value; + } }, set_value_from_ui: function() { this.value = this.$element.find('input').is(':checked'); @@ -1347,11 +1381,17 @@ openerp.web.form.FieldSelection = openerp.web.form.Field.extend({ value = value === null ? false : value; value = value instanceof Array ? value[0] : value; this._super(value); - var index = 0; - for (var i = 0, ii = this.values.length; i < ii; i++) { - if (this.values[i][0] === value) index = i; + if (this.view.readonly) { + var option = _(this.values) + .detect(function (record) { return record[0] === value; }); + this.$element.find('div').text(option ? option[1] : this.values[0][1]); + } else { + var index = 0; + for (var i = 0, ii = this.values.length; i < ii; i++) { + if (this.values[i][0] === value) index = i; + } + this.$element.find('select')[0].selectedIndex = index; } - this.$element.find('select')[0].selectedIndex = index; }, set_value_from_ui: function() { this.value = this.values[this.$element.find('select')[0].selectedIndex][0]; @@ -1362,6 +1402,7 @@ openerp.web.form.FieldSelection = openerp.web.form.Field.extend({ this.$element.find('select').attr('disabled', this.readonly); }, validate: function() { + if (this.view.readonly) { return; } var value = this.values[this.$element.find('select')[0].selectedIndex]; this.invalid = !(value && !(this.required && value[0] === false)); }, @@ -1428,6 +1469,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ }, start: function() { this._super(); + if (this.view.readonly) { return; } var self = this; this.$input = this.$element.find("input"); this.$drop_down = this.$element.find(".oe-m2o-drop-down-button"); @@ -1647,6 +1689,10 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ self.update_dom(); self.on_value_changed(); var real_set_value = function(rval) { + if (self.view.readonly) { + self.$element.find('div').text(rval ? rval[1] : ''); + return; + } self.tmp_value = undefined; self.value = rval; self.original_value = undefined; diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index c88b0116a27..45812e9fd08 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -730,15 +730,23 @@
- - - + + +

+ + +
+ + + + + @@ -764,7 +772,15 @@

+
+ +
- + + # + @@ -790,9 +807,10 @@ -
- + + # + @@ -801,7 +819,14 @@
+