From cb81b9b6d5647709f5705a47fb51f5c807f754d6 Mon Sep 17 00:00:00 2001 From: "Anand Patel (OpenERP)" Date: Wed, 18 Jul 2012 12:02:34 +0530 Subject: [PATCH 01/42] [FIX][TRUNK]Sale order reference changed in sale order calendar view lp bug: https://launchpad.net/bugs/1003861 fixed bzr revid: pan@tinyerp.com-20120718063234-jnhjkhrjnnocg4ag --- addons/web_calendar/static/src/js/calendar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js index 59ca58bec86..2989b31ddfa 100644 --- a/addons/web_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -387,8 +387,8 @@ instance.web_calendar.CalendarView = instance.web.View.extend({ } }, get_event_data: function(event_obj) { - var data = { - name: event_obj.text + var data = { + //name: event_obj.text }; data[this.date_start] = instance.web.datetime_to_str(event_obj.start_date); if (this.date_stop) { From aa6aa08f8d08d21834d72466f7f0518783052f90 Mon Sep 17 00:00:00 2001 From: "Anand Patel (OpenERP)" Date: Wed, 29 Aug 2012 15:46:42 +0530 Subject: [PATCH 02/42] [FIX][TRUNK]Sale order reference changed in sale order calendar view bzr revid: pan@tinyerp.com-20120829101642-04qta93yeifjew1i --- addons/web_calendar/static/src/js/calendar.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js index b1c164a3c61..4b839f0666a 100644 --- a/addons/web_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -388,9 +388,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({ } }, get_event_data: function(event_obj) { - var data = { - //name: event_obj.text - }; + var data = {}; data[this.date_start] = instance.web.datetime_to_str(event_obj.start_date); if (this.date_stop) { data[this.date_stop] = instance.web.datetime_to_str(event_obj.end_date); From 2a1bd62ed539a7613d04ed37ac631b8a8c2a6822 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Wed, 3 Oct 2012 11:18:46 +0530 Subject: [PATCH 03/42] [IMP] dialog after survey is completed says Complete Survey rename it to Survey Completed bzr revid: fka@tinyerp.com-20121003054846-6yy1eicqk5oqancq --- addons/survey/wizard/survey_answer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/survey/wizard/survey_answer.py b/addons/survey/wizard/survey_answer.py index 8ece1e184cf..76d2f012be8 100644 --- a/addons/survey/wizard/survey_answer.py +++ b/addons/survey/wizard/survey_answer.py @@ -435,7 +435,7 @@ class survey_question_wiz(osv.osv_memory): xml_form = etree.Element('form', {'string': _('Complete Survey Answer')}) xml_footer = etree.SubElement(xml_form, 'footer', {'col': '6', 'colspan': '4' ,'class': 'oe_survey_title_height'}) - etree.SubElement(xml_form, 'separator', {'string': 'Complete Survey', 'colspan': "4"}) + etree.SubElement(xml_form, 'separator', {'string': 'Survey Completed', 'colspan': "4"}) etree.SubElement(xml_form, 'label', {'string': 'Thanks for your Answer'}) etree.SubElement(xml_form, 'newline') etree.SubElement(xml_footer, 'button', {'special':"cancel",'string':"OK",'colspan':"2",'class':'oe_highlight'}) From 38bca04309f47d2e13b8f26374efeb28d900da54 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Wed, 3 Oct 2012 11:37:49 +0530 Subject: [PATCH 04/42] [IMP] remove Survey Open Date field in survey bzr revid: fka@tinyerp.com-20121003060749-wr41pmtkfhdfdcr5 --- addons/survey/survey.py | 3 +-- addons/survey/survey_demo.xml | 3 --- addons/survey/survey_view.xml | 3 --- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/addons/survey/survey.py b/addons/survey/survey.py index d01140092d4..a996c4312ab 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -53,7 +53,6 @@ class survey(osv.osv): 'id': fields.integer('ID'), 'title': fields.char('Survey Title', size=128, required=1), 'page_ids': fields.one2many('survey.page', 'survey_id', 'Page'), - 'date_open': fields.datetime('Survey Open Date', readonly=1), 'date_close': fields.datetime('Survey Close Date', readonly=1), 'max_response_limit': fields.integer('Maximum Answer Limit', help="Set to one if survey is answerable only once"), @@ -80,7 +79,7 @@ class survey(osv.osv): } def survey_open(self, cr, uid, ids, arg): - self.write(cr, uid, ids, {'state': 'open', 'date_open': strftime("%Y-%m-%d %H:%M:%S")}) + self.write(cr, uid, ids, {'state': 'open'}) return True def survey_close(self, cr, uid, ids, arg): diff --git a/addons/survey/survey_demo.xml b/addons/survey/survey_demo.xml index 6f89095c699..f9a3e8f3159 100644 --- a/addons/survey/survey_demo.xml +++ b/addons/survey/survey_demo.xml @@ -17,7 +17,6 @@ 1 1 5 - @@ -166,7 +165,6 @@ 1 1 5 - @@ -633,7 +631,6 @@ 1 1 5 - diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml index 01d6098df55..c71e4e8d537 100644 --- a/addons/survey/survey_view.xml +++ b/addons/survey/survey_view.xml @@ -220,7 +220,6 @@ - @@ -253,7 +252,6 @@ - @@ -295,7 +293,6 @@ - From 70d971c3d71ba0dd49cad49a3088e3b386b4bbf0 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Wed, 3 Oct 2012 12:04:32 +0530 Subject: [PATCH 05/42] [IMP] every field editable in survey when survey is in open state bzr revid: fka@tinyerp.com-20121003063432-nktuyqz1batgu0ne --- addons/survey/survey.py | 8 ++++---- addons/survey/survey_view.xml | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/survey/survey.py b/addons/survey/survey.py index a996c4312ab..999dec0aadc 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -60,10 +60,10 @@ class survey(osv.osv): help="Set to one if you require only one Answer per user"), 'state': fields.selection([('open', 'Open'), ('cancel', 'Cancelled'),('close', 'Closed') ], 'Status', readonly=True), 'responsible_id': fields.many2one('res.users', 'Responsible', help="User responsible for survey"), - 'tot_start_survey': fields.integer("Total Started Survey", readonly=1), - 'tot_comp_survey': fields.integer("Total Completed Survey", readonly=1), + 'tot_start_survey': fields.integer("Total Started Survey"), + 'tot_comp_survey': fields.integer("Total Completed Survey"), 'note': fields.text('Description', size=128), - 'history': fields.one2many('survey.history', 'survey_id', 'History Lines', readonly=True), + 'history': fields.one2many('survey.history', 'survey_id', 'History Lines'), 'users': fields.many2many('res.users', 'survey_users_rel', 'sid', 'uid', 'Users'), 'send_response': fields.boolean('Email Notification on Answer'), 'type': fields.many2one('survey.type', 'Type'), @@ -187,7 +187,7 @@ class survey_history(osv.osv): 'date': fields.datetime('Date started', readonly=1), } _defaults = { - 'date': lambda * a: datetime.datetime.now() + 'date': lambda * a: strftime("%Y-%m-%d %H:%M:%S") } survey_history() diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml index c71e4e8d537..a03df6800e7 100644 --- a/addons/survey/survey_view.xml +++ b/addons/survey/survey_view.xml @@ -49,8 +49,8 @@ - - + + @@ -215,7 +215,7 @@ - + From 9f79e73ac88f12770cffb43b41d5f81fafc30db0 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Wed, 3 Oct 2012 12:53:48 +0530 Subject: [PATCH 06/42] [IMP] Add m2m_tags for Select Partne & change default mail subject in send invitation bzr revid: fka@tinyerp.com-20121003072348-lw76eoym8i3jdqcc --- addons/survey/wizard/survey_send_invitation.py | 4 ++-- addons/survey/wizard/survey_send_invitation.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index 5677a985e09..61e1dd23665 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -50,8 +50,6 @@ class survey_send_invitation(osv.osv_memory): _defaults = { 'send_mail': lambda *a: 1, 'send_mail_existing': lambda *a: 1, - 'mail_subject': lambda *a: "Invitation", - 'mail_subject_existing': lambda *a: "Invitation", 'mail_from': lambda *a: tools.config['email_from'] } @@ -75,6 +73,8 @@ class survey_send_invitation(osv.osv_memory): data['mail'] = '''Hello %(name)s, \n\n We are inviting you for following survey. \ \n ''' + name + '''\n Your login ID: %(login)s, Your password: %(passwd)s \n link :- http://'''+ str(socket.gethostname()) + ''':8080 \n\n Thanks,''' + data['mail_subject'] = "Invitation for " + sur.title + data['mail_subject_existing'] = "Invitation for " + sur.title return data def create_report(self, cr, uid, res_ids, report_name=False, file_name=False): diff --git a/addons/survey/wizard/survey_send_invitation.xml b/addons/survey/wizard/survey_send_invitation.xml index 340cb58b5cf..a611973d772 100644 --- a/addons/survey/wizard/survey_send_invitation.xml +++ b/addons/survey/wizard/survey_send_invitation.xml @@ -16,7 +16,7 @@ - + From 6ff616dd04e02303c855dc0a51b397810e9f8739 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Wed, 3 Oct 2012 14:50:43 +0530 Subject: [PATCH 07/42] [IMP] improve code bzr revid: fka@tinyerp.com-20121003092043-e3id1isgm65itoef --- addons/survey/survey.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/survey/survey.py b/addons/survey/survey.py index 999dec0aadc..6e350ccf9ce 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -187,7 +187,7 @@ class survey_history(osv.osv): 'date': fields.datetime('Date started', readonly=1), } _defaults = { - 'date': lambda * a: strftime("%Y-%m-%d %H:%M:%S") + 'date': lambda * a: datetime.datetime.now() } survey_history() From f2ebee24e88f642dddfb339b00c8ca6f73467da1 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Wed, 3 Oct 2012 16:05:24 +0530 Subject: [PATCH 08/42] [IMP] improve code bzr revid: fka@tinyerp.com-20121003103524-j480eazwonxu1g4y --- addons/survey/wizard/survey_send_invitation.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index 61e1dd23665..8c9bb2a7fbe 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -50,7 +50,6 @@ class survey_send_invitation(osv.osv_memory): _defaults = { 'send_mail': lambda *a: 1, 'send_mail_existing': lambda *a: 1, - 'mail_from': lambda *a: tools.config['email_from'] } def genpasswd(self): @@ -68,13 +67,14 @@ class survey_send_invitation(osv.osv_memory): name += "\t --> " + sur.title + "\n" if sur.state != 'open': msg += sur.title + "\n" + data['mail_subject'] = "Invitation for " + sur.title + data['mail_subject_existing'] = "Invitation for " + sur.title + data['mail_from'] = sur.responsible_id.email if msg: raise osv.except_osv(_('Warning!'), _('%sSurvey is not in open state') % msg) data['mail'] = '''Hello %(name)s, \n\n We are inviting you for following survey. \ \n ''' + name + '''\n Your login ID: %(login)s, Your password: %(passwd)s \n link :- http://'''+ str(socket.gethostname()) + ''':8080 \n\n Thanks,''' - data['mail_subject'] = "Invitation for " + sur.title - data['mail_subject_existing'] = "Invitation for " + sur.title return data def create_report(self, cr, uid, res_ids, report_name=False, file_name=False): From 064d80917e76d52e133b6609cdc3ce3fbaf9d4f9 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Wed, 3 Oct 2012 17:19:46 +0530 Subject: [PATCH 09/42] [IMP] change old port 8080 bzr revid: fka@tinyerp.com-20121003114946-n25y3i5yx2s3bild --- addons/survey/wizard/survey_send_invitation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index 8c9bb2a7fbe..b6d68a47004 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -74,7 +74,7 @@ class survey_send_invitation(osv.osv_memory): raise osv.except_osv(_('Warning!'), _('%sSurvey is not in open state') % msg) data['mail'] = '''Hello %(name)s, \n\n We are inviting you for following survey. \ \n ''' + name + '''\n Your login ID: %(login)s, Your password: %(passwd)s - \n link :- http://'''+ str(socket.gethostname()) + ''':8080 \n\n Thanks,''' + \n link :- http://'''+ str(socket.gethostname()) + ''':8069 \n\n Thanks,''' return data def create_report(self, cr, uid, res_ids, report_name=False, file_name=False): From c2eb5616b7ed3ffb84ef1094b8296b20e5ab9174 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Thu, 4 Oct 2012 14:43:51 +0530 Subject: [PATCH 10/42] [IMP] improve code bzr revid: fka@tinyerp.com-20121004091351-sky1or0w62lqmf1d --- addons/survey/survey.py | 10 ++++++---- addons/survey/survey_demo.xml | 3 +++ addons/survey/survey_view.xml | 3 +++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/addons/survey/survey.py b/addons/survey/survey.py index 6e350ccf9ce..b3d38aeeb4d 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -53,6 +53,7 @@ class survey(osv.osv): 'id': fields.integer('ID'), 'title': fields.char('Survey Title', size=128, required=1), 'page_ids': fields.one2many('survey.page', 'survey_id', 'Page'), + 'date_open': fields.datetime('Survey Open Date', readonly=1), 'date_close': fields.datetime('Survey Close Date', readonly=1), 'max_response_limit': fields.integer('Maximum Answer Limit', help="Set to one if survey is answerable only once"), @@ -60,10 +61,10 @@ class survey(osv.osv): help="Set to one if you require only one Answer per user"), 'state': fields.selection([('open', 'Open'), ('cancel', 'Cancelled'),('close', 'Closed') ], 'Status', readonly=True), 'responsible_id': fields.many2one('res.users', 'Responsible', help="User responsible for survey"), - 'tot_start_survey': fields.integer("Total Started Survey"), - 'tot_comp_survey': fields.integer("Total Completed Survey"), + 'tot_start_survey': fields.integer("Total Started Survey", readonly=1), + 'tot_comp_survey': fields.integer("Total Completed Survey", readonly=1), 'note': fields.text('Description', size=128), - 'history': fields.one2many('survey.history', 'survey_id', 'History Lines'), + 'history': fields.one2many('survey.history', 'survey_id', 'History Lines', readonly=True), 'users': fields.many2many('res.users', 'survey_users_rel', 'sid', 'uid', 'Users'), 'send_response': fields.boolean('Email Notification on Answer'), 'type': fields.many2one('survey.type', 'Type'), @@ -76,10 +77,11 @@ class survey(osv.osv): 'tot_comp_survey': lambda * a: 0, 'send_response': lambda * a: 1, 'response_user': lambda * a:1, + 'date_open': strftime("%Y-%m-%d %H:%M:%S"), } def survey_open(self, cr, uid, ids, arg): - self.write(cr, uid, ids, {'state': 'open'}) + self.write(cr, uid, ids, {'state': 'open', 'date_open': strftime("%Y-%m-%d %H:%M:%S")}) return True def survey_close(self, cr, uid, ids, arg): diff --git a/addons/survey/survey_demo.xml b/addons/survey/survey_demo.xml index f9a3e8f3159..6f89095c699 100644 --- a/addons/survey/survey_demo.xml +++ b/addons/survey/survey_demo.xml @@ -17,6 +17,7 @@ 1 1 5 + @@ -165,6 +166,7 @@ 1 1 5 + @@ -631,6 +633,7 @@ 1 1 5 + diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml index a03df6800e7..e6d92b72ba1 100644 --- a/addons/survey/survey_view.xml +++ b/addons/survey/survey_view.xml @@ -220,6 +220,7 @@ + @@ -252,6 +253,7 @@ + @@ -293,6 +295,7 @@ + From 9dd89df9ce1132de0174ea56145237f9006787e8 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Thu, 4 Oct 2012 16:47:03 +0530 Subject: [PATCH 11/42] [IMP] make all fields readable in close state bzr revid: fka@tinyerp.com-20121004111703-nrzz774gjydu0oo8 --- addons/survey/survey_view.xml | 14 +++++++------- addons/survey/wizard/survey_answer.py | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml index e6d92b72ba1..c0bf7d25b7b 100644 --- a/addons/survey/survey_view.xml +++ b/addons/survey/survey_view.xml @@ -38,15 +38,15 @@
- - - + + + @@ -55,7 +55,7 @@ - +
- +
- + diff --git a/addons/survey/wizard/survey_answer.py b/addons/survey/wizard/survey_answer.py index 76d2f012be8..5a027601446 100644 --- a/addons/survey/wizard/survey_answer.py +++ b/addons/survey/wizard/survey_answer.py @@ -429,7 +429,7 @@ class survey_question_wiz(osv.osv_memory): vals['attachment_ids'] = [(0,0,{'name': a_name, 'datas_fname': a_name, 'datas': str(a_content).encode('base64')}) - for a_name, a_content in attachments] + for a_name, a_content in attachments.items()] self.pool.get('mail.mail').create(cr, uid, vals, context=context) xml_form = etree.Element('form', {'string': _('Complete Survey Answer')}) From f07e90b5cbfa0fbd8f8b57fa097bb5ba8f93a2cd Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Fri, 5 Oct 2012 11:08:34 +0530 Subject: [PATCH 12/42] [IMP] solve error When click on Edit Survey bzr revid: fka@tinyerp.com-20121005053834-62y619ae1xe10ojg --- addons/survey/wizard/survey_answer.py | 43 ++++++++++++++------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/addons/survey/wizard/survey_answer.py b/addons/survey/wizard/survey_answer.py index 5a027601446..10ab4bf82da 100644 --- a/addons/survey/wizard/survey_answer.py +++ b/addons/survey/wizard/survey_answer.py @@ -112,26 +112,29 @@ class survey_question_wiz(osv.osv_memory): flag = False fields = {} if sur_name_read.page == "next" or sur_name_rec.page_no == -1: - if total_pages > sur_name_rec.page_no + 1: - if ((context.has_key('active') and not context.get('active', False)) \ - or not context.has_key('active')) and not sur_name_rec.page_no + 1: - if sur_rec.state != "open" : - raise osv.except_osv(_('Warning!'),_("You cannot answer because the survey is not open.")) - cr.execute('select count(id) from survey_history where user_id=%s\ - and survey_id=%s', (uid,survey_id)) - res = cr.fetchone()[0] - user_limit = survey_obj.browse(cr, uid, survey_id) - user_limit = user_limit.response_user - if user_limit and res >= user_limit: - raise osv.except_osv(_('Warning!'),_("You cannot answer this survey more than %s times.") % (user_limit)) - - if sur_rec.max_response_limit and sur_rec.max_response_limit <= sur_rec.tot_start_survey and not sur_name_rec.page_no + 1: - survey_obj.write(cr, uid, survey_id, {'state':'close', 'date_close':strftime("%Y-%m-%d %H:%M:%S")}) - - p_id = p_id[sur_name_rec.page_no + 1] - surv_name_wiz.write(cr, uid, [context['sur_name_id'],], {'page_no' : sur_name_rec.page_no + 1}) - flag = True - page_number += 1 + if total_pages: + if total_pages > sur_name_rec.page_no + 1: + if ((context.has_key('active') and not context.get('active', False)) \ + or not context.has_key('active')) and not sur_name_rec.page_no + 1: + if sur_rec.state != "open" : + raise osv.except_osv(_('Warning!'),_("You cannot answer because the survey is not open.")) + cr.execute('select count(id) from survey_history where user_id=%s\ + and survey_id=%s', (uid,survey_id)) + res = cr.fetchone()[0] + user_limit = survey_obj.browse(cr, uid, survey_id) + user_limit = user_limit.response_user + if user_limit and res >= user_limit: + raise osv.except_osv(_('Warning!'),_("You cannot answer this survey more than %s times.") % (user_limit)) + + if sur_rec.max_response_limit and sur_rec.max_response_limit <= sur_rec.tot_start_survey and not sur_name_rec.page_no + 1: + survey_obj.write(cr, uid, survey_id, {'state':'close', 'date_close':strftime("%Y-%m-%d %H:%M:%S")}) + + p_id = p_id[sur_name_rec.page_no + 1] + surv_name_wiz.write(cr, uid, [context['sur_name_id'],], {'page_no' : sur_name_rec.page_no + 1}) + flag = True + page_number += 1 + else: + raise osv.except_osv(_('Warning!'),_('This survey has no pages defined. Please define the pages first.')) if sur_name_rec.page_no > - 1: pre_button = True else: From dab351dcc7d8680b91ba99a235811958b41917dc Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Fri, 5 Oct 2012 11:53:07 +0530 Subject: [PATCH 13/42] [IMP] solve error When no pages define on test survey bzr revid: fka@tinyerp.com-20121005062307-er263zwe3mm9dgt3 --- addons/survey/survey.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/survey/survey.py b/addons/survey/survey.py index b3d38aeeb4d..809079eaedb 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -164,10 +164,14 @@ class survey(osv.osv): 'context': context } def test_survey(self, cr, uid, ids, context=None): - sur_obj = self.read(cr, uid, ids,['title'], context=context) + sur_obj = self.read(cr, uid, ids,['title','page_ids'], context=context) for sur in sur_obj: name = sur['title'] - context.update({'active':True,'survey_id': ids[0]}) + pages = sur['page_ids'] + if not pages: + raise osv.except_osv(_('Warning!'), _('This survey has no pages defined. Please define pages first.')) + else: + context.update({'active':True,'survey_id': ids[0]}) return { 'view_type': 'form', 'view_mode': 'form', From b2661913d4ae1ca15e558ed5b8310d78a0fcc4a2 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Fri, 5 Oct 2012 16:01:36 +0530 Subject: [PATCH 14/42] [IMP] solve error When no pages define in edit survey bzr revid: fka@tinyerp.com-20121005103136-ji9uo2h4eow9aqec --- addons/survey/wizard/survey_answer.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/addons/survey/wizard/survey_answer.py b/addons/survey/wizard/survey_answer.py index 5a027601446..7e1417ecdb7 100644 --- a/addons/survey/wizard/survey_answer.py +++ b/addons/survey/wizard/survey_answer.py @@ -134,6 +134,8 @@ class survey_question_wiz(osv.osv_memory): page_number += 1 if sur_name_rec.page_no > - 1: pre_button = True + else: + flag = True else: if sur_name_rec.page_no != 0: p_id = p_id[sur_name_rec.page_no - 1] @@ -146,7 +148,15 @@ class survey_question_wiz(osv.osv_memory): pre_button = True if flag: pag_rec = page_obj.browse(cr, uid, p_id, context=context) - xml_form = etree.Element('form', {'string': tools.ustr(pag_rec.title or sur_rec.title)}) + note = False + question_ids = [] + if pag_rec: + title = pag_rec.title + note = pag_rec.note + question_ids=pag_rec.question_ids + else: + title=sur_rec.title + xml_form = etree.Element('form', {'string': tools.ustr(title)}) if context.has_key('active') and context.get('active',False) and context.has_key('edit'): context.update({'page_id' : tools.ustr(p_id),'page_number' : sur_name_rec.page_no , 'transfer' : sur_name_read.transfer}) xml_group3 = etree.SubElement(xml_form, 'group', {'col': '4', 'colspan': '4'}) @@ -174,10 +184,10 @@ class survey_question_wiz(osv.osv_memory): fields["wizardid_" + str(wiz_id)] = {'type':'char', 'size' : 255, 'string':"", 'views':{}} etree.SubElement(xml_form, 'field', {'invisible':'1','name': "wizardid_" + str(wiz_id),'default':str(lambda *a: 0),'modifiers':'{"invisible":true}'}) - if pag_rec.note: - for que_test in pag_rec.note.split('\n'): + if note: + for que_test in note.split('\n'): etree.SubElement(xml_form, 'label', {'string': to_xml(tools.ustr(que_test)), 'align':"0.0"}) - que_ids = pag_rec.question_ids + que_ids = question_ids qu_no = 0 for que in que_ids: From 239690244363afd54eeea1c1f776f2dd113d54b2 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Tue, 9 Oct 2012 17:34:17 +0530 Subject: [PATCH 15/42] [IMP] improve code bzr revid: fka@tinyerp.com-20121009120417-ncg1zoqfnfkyi8cx --- addons/survey/wizard/survey_answer.py | 43 +++++++++++++-------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/addons/survey/wizard/survey_answer.py b/addons/survey/wizard/survey_answer.py index a75a08cc974..7e1417ecdb7 100644 --- a/addons/survey/wizard/survey_answer.py +++ b/addons/survey/wizard/survey_answer.py @@ -112,29 +112,26 @@ class survey_question_wiz(osv.osv_memory): flag = False fields = {} if sur_name_read.page == "next" or sur_name_rec.page_no == -1: - if total_pages: - if total_pages > sur_name_rec.page_no + 1: - if ((context.has_key('active') and not context.get('active', False)) \ - or not context.has_key('active')) and not sur_name_rec.page_no + 1: - if sur_rec.state != "open" : - raise osv.except_osv(_('Warning!'),_("You cannot answer because the survey is not open.")) - cr.execute('select count(id) from survey_history where user_id=%s\ - and survey_id=%s', (uid,survey_id)) - res = cr.fetchone()[0] - user_limit = survey_obj.browse(cr, uid, survey_id) - user_limit = user_limit.response_user - if user_limit and res >= user_limit: - raise osv.except_osv(_('Warning!'),_("You cannot answer this survey more than %s times.") % (user_limit)) - - if sur_rec.max_response_limit and sur_rec.max_response_limit <= sur_rec.tot_start_survey and not sur_name_rec.page_no + 1: - survey_obj.write(cr, uid, survey_id, {'state':'close', 'date_close':strftime("%Y-%m-%d %H:%M:%S")}) - - p_id = p_id[sur_name_rec.page_no + 1] - surv_name_wiz.write(cr, uid, [context['sur_name_id'],], {'page_no' : sur_name_rec.page_no + 1}) - flag = True - page_number += 1 - else: - raise osv.except_osv(_('Warning!'),_('This survey has no pages defined. Please define the pages first.')) + if total_pages > sur_name_rec.page_no + 1: + if ((context.has_key('active') and not context.get('active', False)) \ + or not context.has_key('active')) and not sur_name_rec.page_no + 1: + if sur_rec.state != "open" : + raise osv.except_osv(_('Warning!'),_("You cannot answer because the survey is not open.")) + cr.execute('select count(id) from survey_history where user_id=%s\ + and survey_id=%s', (uid,survey_id)) + res = cr.fetchone()[0] + user_limit = survey_obj.browse(cr, uid, survey_id) + user_limit = user_limit.response_user + if user_limit and res >= user_limit: + raise osv.except_osv(_('Warning!'),_("You cannot answer this survey more than %s times.") % (user_limit)) + + if sur_rec.max_response_limit and sur_rec.max_response_limit <= sur_rec.tot_start_survey and not sur_name_rec.page_no + 1: + survey_obj.write(cr, uid, survey_id, {'state':'close', 'date_close':strftime("%Y-%m-%d %H:%M:%S")}) + + p_id = p_id[sur_name_rec.page_no + 1] + surv_name_wiz.write(cr, uid, [context['sur_name_id'],], {'page_no' : sur_name_rec.page_no + 1}) + flag = True + page_number += 1 if sur_name_rec.page_no > - 1: pre_button = True else: From 6e4eca2ba7571bf7a90235e6020ff5314db933c3 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Fri, 12 Oct 2012 18:30:00 +0530 Subject: [PATCH 16/42] [FIX] traceback:ValueError: too many values to unpack bzr revid: fka@tinyerp.com-20121012130000-qtd29ab755kuszsc --- addons/survey/wizard/survey_send_invitation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index b6d68a47004..4c2840b787d 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -176,7 +176,7 @@ class survey_send_invitation(osv.osv_memory): vals['attachment_ids'] = [(0,0,{'name': a_name, 'datas_fname': a_name, 'datas': str(a_content).encode('base64')}) - for a_name, a_content in attachments] + for a_name, a_content in attachments.items()] ans = self.pool.get('mail.mail').create(cr, uid, vals, context=context) if ans: res_data = {'name': partner.name or _('Unknown'), From f1a881236b2c525a47ae99a9723a8ce00807b62e Mon Sep 17 00:00:00 2001 From: Amit Patel Date: Thu, 18 Oct 2012 12:26:40 +0530 Subject: [PATCH 17/42] [IMP]:improved config parameter while sending invitation bzr revid: apa@tinyerp.com-20121018065640-chr285k3tcnk2bho --- addons/survey/wizard/survey_send_invitation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index 4c2840b787d..661c9417180 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -74,7 +74,7 @@ class survey_send_invitation(osv.osv_memory): raise osv.except_osv(_('Warning!'), _('%sSurvey is not in open state') % msg) data['mail'] = '''Hello %(name)s, \n\n We are inviting you for following survey. \ \n ''' + name + '''\n Your login ID: %(login)s, Your password: %(passwd)s - \n link :- http://'''+ str(socket.gethostname()) + ''':8069 \n\n Thanks,''' + \n '''+ self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context) + '''\n\n Thanks,''' return data def create_report(self, cr, uid, res_ids, report_name=False, file_name=False): From 8d40893e6fa216873b867cf1734cacdfe049088e Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Mon, 22 Oct 2012 12:32:16 +0200 Subject: [PATCH 18/42] [IMP] account: added field supplier invoice number, as suggested by Normunds Vilcans lp bug: https://launchpad.net/bugs/814128 fixed bzr revid: qdp-launchpad@openerp.com-20121022103216-9rnvr84s62ugazny --- addons/account/account_invoice.py | 1 + addons/account/account_invoice_view.xml | 13 ++++++++----- addons/base_crypt/crypt.py | 17 ++++++++++------- addons/event_sale/event_sale.py | 2 +- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 57f16473b82..0508a7cadfe 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -185,6 +185,7 @@ class account_invoice(osv.osv): _columns = { 'name': fields.char('Description', size=64, select=True, readonly=True, states={'draft':[('readonly',False)]}), 'origin': fields.char('Source Document', size=64, help="Reference of the document that produced this invoice.", readonly=True, states={'draft':[('readonly',False)]}), + 'supplier_invoice_number': fields.char('Supplier Invoice Number', size=64, help="The reference of this invoice as provided by the supplier.", readonly=True, states={'draft':[('readonly',False)]}), 'type': fields.selection([ ('out_invoice','Customer Invoice'), ('in_invoice','Supplier Invoice'), diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 8516fcd96ae..ee5a911d933 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -170,12 +170,15 @@ context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" domain="[('supplier', '=', True)]"/> - - @@ -449,7 +452,7 @@ account.invoice - + diff --git a/addons/base_crypt/crypt.py b/addons/base_crypt/crypt.py index 81a60a5dd5f..3accc2740e9 100644 --- a/addons/base_crypt/crypt.py +++ b/addons/base_crypt/crypt.py @@ -140,15 +140,18 @@ class users(osv.osv): # Add handlers for 'input_pw' field. def set_pw(self, cr, uid, id, name, value, args, context): - if not value: - raise osv.except_osv(_('Error!'), _("You have to specify a password.")) + if value: + obj = pooler.get_pool(cr.dbname).get('res.users') + if not hasattr(obj, "_salt_cache"): + obj._salt_cache = {} - obj = pooler.get_pool(cr.dbname).get('res.users') - if not hasattr(obj, "_salt_cache"): - obj._salt_cache = {} + salt = obj._salt_cache[id] = gen_salt() + encrypted = encrypt_md5(value, salt) - salt = obj._salt_cache[id] = gen_salt() - encrypted = encrypt_md5(value, salt) + else: + #setting a password to '' is allowed. It can be used to inactivate the classic log-in of the user + #while the access can still be granted by another login method (openid...) + encrypted = '' cr.execute('update res_users set password=%s where id=%s', (encrypted.encode('utf-8'), int(id))) cr.commit() diff --git a/addons/event_sale/event_sale.py b/addons/event_sale/event_sale.py index f37dea3f075..2dd40a7c285 100644 --- a/addons/event_sale/event_sale.py +++ b/addons/event_sale/event_sale.py @@ -40,7 +40,7 @@ class sale_order_line(osv.osv): 'event_id': fields.many2one('event.event', 'Event', help="Choose an event and it will automatically create a registration for this event."), #those 2 fields are used for dynamic domains and filled by onchange 'event_type_id': fields.related('event_type_id', type='many2one', relation="event.type", string="Event Type"), - 'event_ok': fields.related('event_ok', string='event_ok', type='boolean'), + 'event_ok': fields.related('product_id', 'event_ok', string='event_ok', type='boolean'), } def product_id_change(self, cr, uid, ids, From 8e7ec0974960455d8fec16d92b8e4e93ea2aaa0e Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 22 Oct 2012 18:15:16 +0200 Subject: [PATCH 19/42] m bzr revid: nicolas.vanhoren@openerp.com-20121022161516-4g9wg1a3fv0r7t12 --- addons/web/static/src/js/view_form.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 850a334c40b..bd4f8f5d55f 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3234,6 +3234,12 @@ var commands = { return [6, false, ids]; } }; +/** + widget options: + - reload_on_button: Reload the whole form view if click on a button in a list view. + If you see this options, do not use it, it's basically a dirty hack to make one + precise o2m to behave the way we want. +*/ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ multi_selection: false, disable_utility_classes: true, @@ -3689,7 +3695,8 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ readonly: !this.is_action_enabled('edit') || self.o2m.get("effective_readonly") }); }, - do_button_action: function (name, id, callback) { + handle_button: function(name, id, call) { + var _sup = _.bind(this._super, this); if (!_.isNumber(id)) { instance.webclient.notification.warn( _t("Action Button"), @@ -3700,14 +3707,22 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ var self = this; this.ensure_saved().pipe(function () { if (parent_form) - return parent_form.save(); + return parent_form.recursive_save(); else return $.when(); - }).then(function () { - self.handle_button(name, id, callback); + }).pipe(function () { + var call; + debugger; + if (! self.o2m.options.reload_on_button) { + call = callback; + } else { + call = function() { + self.o2m.view.recursive_reload(); + }; + } + _sup(name, id, call); }); }, - _before_edit: function () { this.__ignore_blur = false; this.editor.form.on('blurred', this, this._on_form_blur); From dd99dc7ed07057bf46bd3a053e53dd49492e7d65 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 22 Oct 2012 18:15:56 +0200 Subject: [PATCH 20/42] m bzr revid: nicolas.vanhoren@openerp.com-20121022161556-wb1l3kahb9lwrnv3 --- addons/mrp/mrp_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index 9d1ae9eae8a..9e35377986a 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -668,7 +668,7 @@ - + From 41fba390b243844828cb3f2d7c83dc00b4545f50 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 23 Oct 2012 10:52:20 +0200 Subject: [PATCH 21/42] [IMP] cleanup View.load_view a bit and remove unused variables in ViewManagerAction#switch_view bzr revid: xmo@openerp.com-20121023085220-h7lwft0nilng1q4y --- addons/web/static/src/js/views.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 103ad7a2661..66dfba99d9f 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -895,9 +895,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({ var self = this; return $.when(this._super.apply(this, arguments)).then(function () { - var controller = self.views[self.active_view].controller, - fvg = controller.fields_view, - view_id = (fvg && fvg.view_id) || '--'; + var controller = self.views[self.active_view].controller; self.$el.find('.oe_debug_view').html(QWeb.render('ViewManagerDebug', { view: controller, view_manager: self @@ -1142,28 +1140,28 @@ instance.web.View = instance.web.Widget.extend({ start: function () { return this.load_view(); }, - load_view: function() { + load_view: function(context) { var self = this; + var view_loaded; if (this.embedded_view) { - var def = $.Deferred(); - $.async_when().then(function() {def.resolve(self.embedded_view);}); - return def.pipe(function(r) { - self.trigger('view_loaded', r); + view_loaded = $.Deferred(); + $.async_when().then(function() { + view_loaded.resolve(self.embedded_view); }); } else { - var context = new instance.web.CompoundContext(this.dataset.get_context()); if (! this.view_type) console.warn("view_type is not defined", this); - return this.rpc("/web/view/load", { + view_loaded = this.rpc("/web/view/load", { "model": this.dataset.model, "view_id": this.view_id, "view_type": this.view_type, toolbar: !!this.options.$sidebar, - context: context - }).pipe(function(r) { - self.trigger('view_loaded', r); + context: this.dataset.get_context(context) }); } + return view_loaded.pipe(function(r) { + self.trigger('view_loaded', r); + }); }, set_default_options: function(options) { this.options = options || {}; From 9bf9ca7a67a16b83cfa371c1377865e168d6c7dc Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 23 Oct 2012 10:53:29 +0200 Subject: [PATCH 22/42] [FIX] list view to use View#load_view rather than its own implementation thereof bzr revid: xmo@openerp.com-20121023085329-y01e1u77vfz2n7a9 --- addons/web/static/src/js/view_list.js | 34 +++++++------------ .../web/static/src/js/view_list_editable.js | 2 +- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 29bc81ea9ec..4da6136d3cc 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -22,6 +22,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi 'reorderable': true, 'action_buttons': true, }, + view_type: 'tree', /** * Core class for list-type displays. * @@ -83,7 +84,8 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi }); this.no_leaf = false; - this.on('view_load', self, self.load_list); + this.grouped = false; + this.on('view_loaded', self, self.load_list); }, set_default_options: function (options) { this._super(options); @@ -145,7 +147,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi */ start: function() { this.$el.addClass('oe_list'); - return this.reload_view(null, null, true); + return this._super(); }, /** * Returns the style for the provided record in the current view (from the @@ -219,7 +221,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi * @param {Object} data.fields_view.arch current list view descriptor * @param {Boolean} grouped Is the list view grouped */ - load_list: function(data, grouped) { + load_list: function(data) { var self = this; this.fields_view = data; this.name = "" + this.fields_view.arch.attrs.string; @@ -245,7 +247,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi }).value(); } - this.setup_columns(this.fields_view.fields, grouped); + this.setup_columns(this.fields_view.fields, this.grouped); this.$el.html(QWeb.render(this._template, this)); this.$el.addClass(this.fields_view.arch.attrs['class']); @@ -290,7 +292,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi } this.$buttons.find('.oe_list_add') .click(this.proxy('do_add_record')) - .prop('disabled', grouped); + .prop('disabled', this.grouped); } // Pager @@ -359,7 +361,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi this.sidebar.add_toolbar(this.fields_view.toolbar); this.sidebar.$el.hide(); } - this.trigger('list_view_loaded', data, grouped); + this.trigger('list_view_loaded', data, this.grouped); }, /** * Configures the ListView pager based on the provided dataset's information @@ -464,25 +466,12 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi /** * Reloads the list view based on the current settings (dataset & al) * + * @deprecated * @param {Boolean} [grouped] Should the list be displayed grouped * @param {Object} [context] context to send the server while loading the view */ reload_view: function (grouped, context, initial) { - var self = this; - var callback = function (field_view_get) { - self.load_list(field_view_get, grouped); - }; - if (this.embedded_view) { - return $.Deferred().then(callback).resolve(this.embedded_view); - } else { - return this.rpc('/web/view/load', { - model: this.model, - view_id: this.view_id, - view_type: "tree", - context: this.dataset.get_context(context), - toolbar: !!this.options.$sidebar - }).then(callback); - } + return this.load_view(context); }, /** * re-renders the content of the list view @@ -564,8 +553,9 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi group_by = null; } this.no_leaf = !!context['group_by_no_leaf']; + this.grouped = !!group_by; - this.reload_view(!!group_by, context).then( + return this.load_view(context).pipe( this.proxy('reload_content')); }, /** diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 9bc0e96032f..acc1d781976 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -150,7 +150,7 @@ openerp.web.list_editable = function (instance) { if (!id && done.created) { id = done.record.get('id'); } - self.handle_button.call(self, name, id, callback); + self.handle_button(name, id, callback); }); }, /** From 957c187bb18045d0fd21a7153eb97b1d73c1f282 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 23 Oct 2012 11:55:59 +0200 Subject: [PATCH 23/42] [IMP] Make 'oe_list_cannot_*' css classes generic bzr revid: fme@openerp.com-20121023095559-63exp0dyf5zsd3qw --- addons/web/static/src/css/base.css | 5207 ++++++++++++++----------- addons/web/static/src/css/base.sass | 22 +- addons/web/static/src/js/view_list.js | 5 - addons/web/static/src/js/views.js | 5 + 4 files changed, 2888 insertions(+), 2351 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 565bf9c12f5..64b782835f2 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"); @@ -6,7 +6,8 @@ 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; } + font-style: normal; +} @font-face { font-family: "EntypoRegular"; @@ -16,17 +17,22 @@ 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; } + font-style: normal; +} @media print { .oe_topbar, .oe_leftbar, .oe_loading { - display: none !important; } } + display: none !important; + } +} .openerp.openerp_webclient_container { - height: 100%; } + height: 100%; +} .text-tag .text-button { height: auto !important; - min-height: 16px; } + min-height: 16px; +} .openerp { padding: 0; @@ -38,2332 +44,2856 @@ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); /* http://www.quirksmode.org/dom/inputfile.html * http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image - */ } - .openerp :-moz-placeholder { - color: #afafb6 !important; - font-style: italic !important; } - .openerp ::-webkit-input-placeholder { - color: #afafb6 !important; - font-style: italic !important; } - .openerp a { - text-decoration: none; - cursor: pointer !important; } - .openerp table { - padding: 0; - border-collapse: collapse; } - .openerp thead { - font-weight: bold; - background-color: #f0f0f0; } - .openerp thead th { - border-left: 1px solid #dfdfdf; } - .openerp thead th:first-child { - border-left: none; } - .openerp thead th.null { - border-left: none; } - .openerp th, .openerp td { - padding: 0; - text-align: left; } - .openerp th { - font-weight: bold; - vertical-align: middle; } - .openerp td { - vertical-align: top; } - .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 .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 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 img { - vertical-align: middle; } - .openerp h4 { - margin: 4px 0; } - .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 rgba(0, 0, 0, 0.4); - color: #4c4c4c; - 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 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 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 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 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 .ui-widget-content a { - color: #7c7bad; } - .openerp .oe_bounce_container { - display: inline-block; } - .openerp .ui-tabs { - position: static; } - .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.ui-dialog .ui-dialog-content { - padding: 0px; } - .openerp.ui-dialog .ui-dialog-titlebar, .openerp.ui-dialog .ui-dialog-content, .openerp.ui-dialog .ui-dialog-buttonpane { - padding: 16px; } - .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.ui-dialog .ui-dialog-titlebar .ui-dialog-title { - margin: 0; - padding: 0; } - .openerp.ui-dialog .ui-widget-header { - border: none; } - .openerp.ui-dialog .ui-dialog-content { - background: white; } - .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.ui-dialog .ui-dialog-buttonpane button { - margin: 0 4px 0 0; } - .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: black; - 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: #7c7bad; } - .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: #df3f3f; - background-image: -webkit-gradient(linear, left top, left bottom, from(#df3f3f), to(#a21a1a)); - background-image: -webkit-linear-gradient(top, #df3f3f, #a21a1a); - background-image: -moz-linear-gradient(top, #df3f3f, #a21a1a); - background-image: -ms-linear-gradient(top, #df3f3f, #a21a1a); - background-image: -o-linear-gradient(top, #df3f3f, #a21a1a); - background-image: linear-gradient(to bottom, #df3f3f, #a21a1a); - -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 button.oe_highlight:hover { - background-color: #e25858; - background-image: -webkit-gradient(linear, left top, left bottom, from(#e25858), to(#ab1b1b)); - background-image: -webkit-linear-gradient(top, #e25858, #ab1b1b); - background-image: -moz-linear-gradient(top, #e25858, #ab1b1b); - background-image: -ms-linear-gradient(top, #e25858, #ab1b1b); - background-image: -o-linear-gradient(top, #e25858, #ab1b1b); - background-image: linear-gradient(to bottom, #e25858, #ab1b1b); } - .openerp button.oe_highlight:active { - background-color: #c52020; - background-image: -webkit-gradient(linear, left top, left bottom, from(#c52020), to(#d22323)); - background-image: -webkit-linear-gradient(top, #c52020, #d22323); - background-image: -moz-linear-gradient(top, #c52020, #d22323); - background-image: -ms-linear-gradient(top, #c52020, #d22323); - background-image: -o-linear-gradient(top, #c52020, #d22323); - background-image: linear-gradient(to bottom, #c52020, #d22323); } - .openerp .oe_background_grey { - background: #eeeeee !important; } - .openerp .oe_form_dirty .oe_highlight_on_dirty { - 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 { - max-height: 90px; - max-width: 90px; - -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); - border: none; - margin-bottom: 10px; } - .openerp .oe_avatar + div { - margin-left: 5px; } - .openerp .oe_image_small > img { - max-width: 50px; - max-height: 50px; } - .openerp .oe_image_medium > img { - max-width: 180px; - max-height: 180px; } - .openerp .oe_button.oe_link { - border: none; - padding: 0; - margin: 0; - background: none; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - -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: 0; - -webkit-border-radius: 0; - border-radius: 0; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; - color: #7c7bad; - 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 p.oe_grey { - max-width: 650px; } - .openerp .oe_grey { - color: #aaaaaa; } - .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: #7c7bad; - color: #eeeeee; } - .openerp .oe_tags { - margin-bottom: 1px; } - .openerp .oe_tags.oe_inline { - min-width: 250px; } - .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_tooltip .oe_tooltip_close { - margin: -5px 0 0 2px; - cursor: default; - float: right; - color: white; } - .openerp.oe_tooltip .oe_tooltip_close:hover { - color: #999999; - cursor: pointer; } - .openerp.oe_tooltip .oe_tooltip_message { - max-width: 310px; } - .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: rgba(0, 0, 0, 0.5); - 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: 3; - margin: 0; - padding: 0; - 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; - margin: 0; - 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: 3px; - 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 ul, .openerp .oe_login li { - margin: 0; - list-style-type: none; - padding: 0 0 4px 0; } - .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.4); - -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4); - box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4); - -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: 32px; - background-color: #414141; - 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; - text-decoration: none; - color: #eeeeee; - vertical-align: top; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); - -webkit-transition: all 0.2s ease-out; - -moz-transition: all 0.2s ease-out; - -ms-transition: all 0.2s ease-out; - -o-transition: all 0.2s ease-out; - transition: all 0.2s ease-out; } - .openerp .oe_topbar .oe_topbar_item:hover { - background: rgba(0, 0, 0, 0.2); - text-shadow: black 0px 0px 3px; - color: white; - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) 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_menu { - float: left; - padding: 0; - margin: 0; - font-size: 13px; } - .openerp .oe_menu > li { - list-style-type: none; - padding: 0; - margin: 0; - float: left; - display: block; - color: #eeeeee; } - .openerp .oe_menu > li > a { - display: block; - padding: 5px 10px 7px; - line-height: 20px; - height: 20px; - text-decoration: none; - color: #eeeeee; - vertical-align: top; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); - -webkit-transition: all 0.2s ease-out; - -moz-transition: all 0.2s ease-out; - -ms-transition: all 0.2s ease-out; - -o-transition: all 0.2s ease-out; - transition: all 0.2s ease-out; } - .openerp .oe_menu > li > a:hover { - background: rgba(0, 0, 0, 0.2); - text-shadow: black 0px 0px 3px; - color: white; - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; } - .openerp .oe_menu > li > .oe_active { - background: rgba(0, 0, 0, 0.3); - text-shadow: black 0px 0px 3px; - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; } - .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_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_secondary_menu_section { - font-weight: bold; - margin-left: 8px; - color: #7c7bad; } - .openerp .oe_secondary_submenu { - padding: 2px 0 8px 0; - margin: 0; - width: 100%; - display: inline-block; } - .openerp .oe_secondary_submenu li { - position: relative; - margin: 0; - padding: 1px 0 1px 20px !important; - list-style-type: none; } - .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: #7c7bad; - 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: 1px; - padding: 1px 4px; - border: none; } - .openerp .oe_secondary_submenu .oe_menu_counter:hover { - cursor: pointer; - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -ms-transform: scale(1.1); - -o-transform: scale(1.1); - transform: scale(1.1); } - .openerp .oe_secondary_submenu .oe_active { - border-top: 1px solid lightGray; - border-bottom: 1px solid #dedede; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2); - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2); - background: #7c7bad; } - .openerp .oe_secondary_submenu .oe_active a { - color: white; } - .openerp .oe_secondary_submenu .oe_active .oe_menu_label { - background: #eeeeee; - color: #7c7bad; - 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: #7c7bad; - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); } - .openerp .oe_secondary_submenu .oe_menu_toggler:before { - 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_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 .oe_about a { - color: #7c7bad; } - .openerp .oe_about a:hover { - text-decoration: underline; } - .openerp .oe_about a:focus { - outline: none; } - .openerp .oe_about .oe_logo { - margin-left: -6px; } - .openerp .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 .oe_about .oe_bottom a { - color: #eeeeee; } - .openerp .oe_application { - width: 100%; } - .openerp .oe_application a { - color: #7c7bad; } - .openerp .oe_application a:hover { - text-decoration: underline; } - .openerp .oe_application > div { - height: 100%; } - .openerp .oe_application .oe_breadcrumb_item:not(:last-child) { - display: inline-block; - max-width: 7em; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; } - .openerp .oe_view_manager .oe_view_manager_body { - 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_header_row:first-child td { - padding-top: 8px; } - .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: #7c7bad; } - .openerp .oe_view_manager table.oe_view_manager_header .oe_dropdown_menu { - line-height: normal; } - .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 ul.oe_pager_group { - padding: 0; - margin: 0; } - .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; - margin: 0; - list-style-type: none; - 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 { - padding: 0; - margin: 0 0 0 8px; } - .openerp .oe_view_manager .oe_view_manager_switch li { - margin: 0; - width: 24px; - height: 24px; - line-height: 16px; - padding: 0; - text-align: center; - list-style-type: none; } - .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-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, .openerp .oe_view_manager_inlineview { - height: 100%; } - .openerp .oe_view_manager_inline > .oe_view_manager_header, .openerp .oe_view_manager_inlineview > .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; - font-weight: normal; - -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: #7c7bad; - 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_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_searchview_advanced li:first-child .searchview_extended_prop_or { - visibility: hidden; } - .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced .searchview_extended_prop_or { - opacity: 0.5; - margin-left: -14px; } - .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; } - .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; - 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; - 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 { - padding: 15px; - margin-top: 0; - color: #777777; - font-size: 125%; - max-width: 700px; } - .openerp .oe_view_nocontent .oe_view_nocontent_create { - background: transparent url(/web/static/src/img/view_empty_arrow.png) no-repeat 7px 0; - margin-top: 0; - padding-top: 35px; - min-height: 28px; - color: #4c4c4c; } - .openerp .oe_view_nocontent > p { - padding-left: 95px; } - .openerp .oe_view_nocontent .oe_empty_custom_dashboard { - background: transparent url(/web/static/src/img/graph_background.png) no-repeat 0 0; - margin-top: -15px; - padding: 100px 0 0 137px; - min-height: 327px; - margin-left: -15px; } - .openerp .oe_formview { - background: white; } - .openerp .oe_form_dropdown_section { - position: relative; - display: inline-block; } - .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: 16px; } - .openerp .oe_form_nosheet > header { - margin: -16px -16px 0 -16px; - padding: 0; } - .openerp .oe_form_sheetbg { - padding: 16px 0; } - .openerp .oe_form_sheet_width { - min-width: 650px; - max-width: 860px; - margin: 0 auto; } - .openerp .oe_form_sheet { - background: white; - min-height: 330px; - padding: 16px; } - .openerp .oe_application .oe_form_sheetbg { - background: url(/web/static/src/img/form_sheetbg.png); - border-bottom: 1px solid #dddddd; } - .openerp .oe_application .oe_form_sheet { - border: 1px solid #c8c8d3; - -moz-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); } - .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 header { - position: relative; - border-bottom: 1px solid #cacaca; - padding-left: 2px; - background-color: #fcfcfc; - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); - background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); - background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); - background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); - background-image: -o-linear-gradient(top, #fcfcfc, #dedede); - background-image: linear-gradient(to bottom, #fcfcfc, #dedede); } - .openerp .oe_form header > span { - margin-left: 4px; } - .openerp .oe_form header ul { - display: inline-block; - float: right; } - .openerp .oe_form header .oe_button { - margin: 3px 2px 1px; } - .openerp .oe_form header .oe_button:first-child { - margin-left: 6px; } - .openerp .oe_form header .oe_tags { - margin: 5px 0 0 5px; - width: 400px; - padding-bottom: 0; } - .openerp .oe_form div.oe_chatter { - min-width: 650px; - max-width: 860px; - margin: 0 auto; - padding: 16px 0 48px; } - .openerp .oe_form div.oe_form_configuration p, .openerp .oe_form div.oe_form_configuration ul, .openerp .oe_form div.oe_form_configuration ol { - color: #aaaaaa; - max-width: 650px; } - .openerp .oe_form div.oe_form_configuration label { - min-width: 150px; } - .openerp .oe_form div.oe_form_configuration .oe_form_group_cell_label { - padding: 1px 0; } - .openerp .oe_form div.oe_form_configuration .oe_form_group_cell div div { - padding: 1px 0; } - .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; - margin-top: 4px; - padding-top: 4px; - 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_form .oe_form_button { - margin: 2px; } - .openerp .oe_form td.oe_form_group_cell_label { - border-right: 1px solid #dddddd; - padding: 2px 0px; } - .openerp .oe_form td.oe_form_group_cell_label label { - line-height: 18px; - display: block; - min-width: 140px; } - .openerp .oe_form td.oe_form_group_cell + .oe_form_group_cell { - padding: 2px 0 2px 8px; } - .openerp .oe_form .oe_form_group { - width: 100%; - margin: 9px 0 9px 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: 8px; } - .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: 15px 0px 10px 0px; - color: #7c7bad; } - .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; } - .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: 60px; - 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; - 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 textarea.oe_inline[disabled] { - border-left: 8px solid #eeeeee; } - .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:not([disabled]):not([readonly]), .openerp .oe_form .oe_form_required select:not([disabled]):not([readonly]), .openerp .oe_form .oe_form_required textarea:not([disabled]):not([readonly]) { - 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 .oe_form_embedded_html { - position: relative; - width: 600px; - margin-left: 130px; - margin-top: 32px; - margin-bottom: 32px; - text-align: justify; } - .openerp .oe_form_editable .oe_form .oe_form_field_integer input { - width: 6em !important; } - .openerp .oe_form_editable .oe_form .oe_form_field_float input { - width: 7em !important; } - .openerp .oe_form_editable .oe_form .oe_form_field_date input { - width: 7.5em !important; } - .openerp .oe_form_editable .oe_form .oe_form_field_datetime input { - width: 11.5em !important; } - .openerp .oe_hidden_input_file { - position: relative; } - .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; - float: right; - padding-left: 2px; } - .openerp.ui-autocomplete li.oe_m2o_dropdown_option a { - font-style: italic; - padding-left: 2em; } - .openerp.ui-autocomplete li:not(.oe_m2o_dropdown_option) + li.oe_m2o_dropdown_option { - margin-top: 10px; } - .openerp ul.oe_form_status, .openerp ul.oe_form_status_clickable { - display: inline-block; - margin: 0; - padding: 0 18px 0 0; } - .openerp ul.oe_form_status li, .openerp ul.oe_form_status_clickable li { - display: inline-block; - list-style-type: none; - margin: 0 -18px 0 0; - padding: 0; - background-color: #fcfcfc; - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); - background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); - background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); - background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); - background-image: -o-linear-gradient(top, #fcfcfc, #dedede); - background-image: linear-gradient(to bottom, #fcfcfc, #dedede); } - .openerp ul.oe_form_status li:first-child .label, .openerp ul.oe_form_status_clickable li:first-child .label { - border-left: 1px solid #cacaca; - padding-left: 14px; } - .openerp ul.oe_form_status li:last-child, .openerp ul.oe_form_status_clickable li:last-child { - border-right: 1px solid #cacaca; } - .openerp ul.oe_form_status li:last-child .label, .openerp ul.oe_form_status_clickable li:last-child .label { - padding-right: 14px; } - .openerp ul.oe_form_status li:last-child .arrow, .openerp ul.oe_form_status_clickable li:last-child .arrow { - display: none; } - .openerp ul.oe_form_status li .label, .openerp ul.oe_form_status_clickable li .label { - color: #4c4c4c; - text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede; - padding: 7px; - display: inline-block; - padding-left: 24px; - margin: 0; - position: relative; } - .openerp ul.oe_form_status li .arrow, .openerp ul.oe_form_status_clickable li .arrow { - width: 17px; - display: inline-block; - vertical-align: top; - overflow: hidden; - margin-left: -5px; } - .openerp ul.oe_form_status li .arrow span, .openerp ul.oe_form_status_clickable li .arrow span { - position: relative; - width: 24px; - height: 24px; - display: inline-block; - margin-left: -12px; - margin-top: 3px; - box-shadow: -1px 1px 2px rgba(255, 255, 255, 0.2), inset -1px 1px 1px rgba(0, 0, 0, 0.2); - background-color: #dedede; - background: -moz-linear-gradient(135deg, #dedede, #fcfcfc); - background: -o-linear-gradient(135deg, #fcfcfc, #dedede); - background: -webkit-gradient(linear, left top, right bottom, from(#fcfcfc), to(#dedede)); - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); } - .openerp ul.oe_form_status li.oe_active, .openerp ul.oe_form_status_clickable li.oe_active { - background-color: #729fcf; - background-image: -webkit-gradient(linear, left top, left bottom, from(#729fcf), to(#3465a4)); - background-image: -webkit-linear-gradient(top, #729fcf, #3465a4); - background-image: -moz-linear-gradient(top, #729fcf, #3465a4); - background-image: -ms-linear-gradient(top, #729fcf, #3465a4); - background-image: -o-linear-gradient(top, #729fcf, #3465a4); - background-image: linear-gradient(to bottom, #729fcf, #3465a4); } - .openerp ul.oe_form_status li.oe_active .arrow span, .openerp ul.oe_form_status_clickable li.oe_active .arrow span { - background-color: #3465a4; - background: -moz-linear-gradient(135deg, #3465a4, #729fcf); - background: -o-linear-gradient(135deg, #729fcf, #3465a4); - background: -webkit-gradient(linear, left top, right bottom, from(#729fcf), to(#3465a4)); } - .openerp ul.oe_form_status li.oe_active .label, .openerp ul.oe_form_status_clickable li.oe_active .label { - color: white; - text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4; } - .openerp ul.oe_form_status_clickable li { - cursor: pointer; } - .openerp ul.oe_form_status_clickable li:hover { - background-color: #e8e8e8; - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca)); - background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca); - background-image: -moz-linear-gradient(top, #e8e8e8, #cacaca); - background-image: -ms-linear-gradient(top, #e8e8e8, #cacaca); - background-image: -o-linear-gradient(top, #e8e8e8, #cacaca); - background-image: linear-gradient(to bottom, #e8e8e8, #cacaca); } - .openerp ul.oe_form_status_clickable li:hover .label { - text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede; } - .openerp ul.oe_form_status_clickable li:hover .arrow span { - background-color: #e8e8e8; - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca)); - background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca); - background-image: -moz-linear-gradient(top, #e8e8e8, #cacaca); - background-image: -ms-linear-gradient(top, #e8e8e8, #cacaca); - background-image: -o-linear-gradient(top, #e8e8e8, #cacaca); - background-image: linear-gradient(to bottom, #e8e8e8, #cacaca); } - .openerp ul.oe_form_status_clickable li .label { - color: #7c7bad; } - .openerp ul.oe_form_status_clickable li.oe_active:hover { - background-color: #4c85c2; - background-image: -webkit-gradient(linear, left top, left bottom, from(#4c85c2), to(#284d7d)); - background-image: -webkit-linear-gradient(top, #4c85c2, #284d7d); - background-image: -moz-linear-gradient(top, #4c85c2, #284d7d); - background-image: -ms-linear-gradient(top, #4c85c2, #284d7d); - background-image: -o-linear-gradient(top, #4c85c2, #284d7d); - background-image: linear-gradient(to bottom, #4c85c2, #284d7d); } - .openerp ul.oe_form_status_clickable li.oe_active:hover .label { - text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4; } - .openerp ul.oe_form_status_clickable li.oe_active:hover .arrow span { - background-color: #284d7d; - background: -moz-linear-gradient(135deg, #284d7d, #4c85c2); - background: -o-linear-gradient(135deg, #4c85c2, #284d7d); - background: -webkit-gradient(linear, left top, right bottom, from(#4c85c2), to(#284d7d)); } - .openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page { - display: none; } - .openerp .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page, .openerp .oe_form_field_many2many > .oe_view_manager .oe_list_pager_single_page { - display: none !important; } - .openerp .oe_form_field_one2many .oe_form_field_one2many_list_row_add, .openerp .oe_form_field_many2many .oe_form_field_one2many_list_row_add { - font-weight: bold; } - .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_editable .oe_list_editable .oe_list_content td.oe_required { - background-color: #d2d2ff; } - .openerp .oe_form_editable .oe_list_editable .oe_list_content td.oe_readonly { - background-color: #eeeeee; } - .openerp .oe_list_editable .oe_list_content td.oe_list_field_cell { - padding: 4px 6px 3px 6px; } - .openerp .oe_list.oe_list_editable td.oe_list_record_delete { - position: absolute; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_edition .oe_list_field_cell:not(.oe_readonly) { - color: transparent; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_edition .oe_list_field_cell:not(.oe_readonly) * { - visibility: hidden; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_m2o_drop_down_button { - top: 5px; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_m2o_cm_button { - display: none; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { - height: 27px; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 1px solid #aaaaff; - margin: 0; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_float input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_view_integer input { - text-align: right; - width: 100% !important; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime > span, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date > span { - width: 100% !important; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime input.oe_datepicker_master, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date input.oe_datepicker_master { - width: 100% !important; } - .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field .oe_form_field_float, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field .oe_form_view_integer, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date { - min-width: 0 !important; - max-width: none !important; } - .openerp .oe_list_group_name { - white-space: nowrap; } - .openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { - display: none; } - .openerp .oe_list_buttons .oe_alternative { - visibility: hidden; } - .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 { - 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_buttons.oe_editing .oe_alternative { - visibility: visible; } - .openerp .oe_list .oe_form .oe_form_nosheet { - margin: 0; - padding: 0; - border: none; } - .openerp .oe_list .oe_form .oe_form_field { - width: auto; - position: absolute; - margin: 0 !important; - padding: 0; } - .openerp .oe_list .oe_list_content .oe_group_header { - background-color: #fcfcfc; - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); - background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); - background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); - background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); - background-image: -o-linear-gradient(top, #fcfcfc, #dedede); - background-image: linear-gradient(to bottom, #fcfcfc, #dedede); } - .openerp .oe_list_content { - 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 td, .openerp .oe_list_content th { - padding: 3px 6px; - line-height: 18px; } - .openerp .oe_list_content th.oe_sortable, .openerp .oe_list_content th.oe_sortable div { - cursor: pointer; } - .openerp .oe_list_content th.oe_sortable div { - position: relative; } - .openerp .oe_list_content th.oe_sortable div: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 div:after { - visibility: visible; - filter: alpha(opacity=60); - opacity: 0.6; } - .openerp .oe_list_content th.sortdown div: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 { - height: 27px; - 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 .numeric { - text-align: right; - width: 82px; } - .openerp .oe_list_content .numeric input { - text-align: right; } - .openerp .oe_list_content th.oe_list_header_handle { - font-size: 1px; - overflow: hidden; - text-indent: -9001px; } - .openerp .oe_list_content td.oe_list_field_handle { - width: 1em; - padding: 0 !important; - cursor: ns-resize; } - .openerp .oe_list_content td.oe_list_field_handle .oe_list_handle { - font-size: 1px; - letter-spacing: -1px; - color: transparent; - font-weight: normal; - margin-right: 7px; } - .openerp .oe_list_content td.oe_list_field_handle .oe_list_handle:before { - font: 18px "entypoRegular"; - content: "}"; - color: #e0e0e0; } - .openerp .oe_list_cannot_create .oe_view_nocontent_create { - display: none; } - .openerp .oe_list_cannot_edit .oe_list_header_handle, .openerp .oe_list_cannot_edit .oe_list_field_handle { - display: none !important; - padding: 0 !important; } - .openerp .oe_list_cannot_delete .oe_list_record_delete { - display: none !important; } - .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; - color: #4c4c4c; } - .openerp .oe-treeview-table th { - padding: 10px; - font-weight: bold; - background-color: #f0f0f0; - border-bottom: 2px solid #cacaca; } - .openerp .oe-treeview-table td { - cursor: pointer; - vertical-align: middle; - text-align: left; - vertical-align: middle; - height: 20px; - padding-left: 4px; - padding-right: 4px; - border-right: 1px solid #e7e7e7; } - .openerp .oe-treeview-table td.oe_number { - text-align: right !important; } - .openerp .oe-treeview-table tr { - border-bottom: 1px solid #d6d6d6; } - .openerp .oe-treeview-table tr:hover { - background-color: #e7e7e7; } - .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_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 :-moz-placeholder { + color: #afafb6 !important; + font-style: italic !important; +} +.openerp ::-webkit-input-placeholder { + color: #afafb6 !important; + font-style: italic !important; +} +.openerp a { + text-decoration: none; + cursor: pointer !important; +} +.openerp table { + padding: 0; + border-collapse: collapse; +} +.openerp thead { + font-weight: bold; + background-color: #f0f0f0; +} +.openerp thead th { + border-left: 1px solid #dfdfdf; +} +.openerp thead th:first-child { + border-left: none; +} +.openerp thead th.null { + border-left: none; +} +.openerp th, .openerp td { + padding: 0; + text-align: left; +} +.openerp th { + font-weight: bold; + vertical-align: middle; +} +.openerp td { + vertical-align: top; +} +.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 .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 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 img { + vertical-align: middle; +} +.openerp h4 { + margin: 4px 0; +} +.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 rgba(0, 0, 0, 0.4); + color: #4c4c4c; + 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 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 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 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 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 .ui-widget-content a { + color: #7c7bad; +} +.openerp .oe_bounce_container { + display: inline-block; +} +.openerp .ui-tabs { + position: static; +} +.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.ui-dialog .ui-dialog-content { + padding: 0px; +} +.openerp.ui-dialog .ui-dialog-titlebar, .openerp.ui-dialog .ui-dialog-content, .openerp.ui-dialog .ui-dialog-buttonpane { + padding: 16px; +} +.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.ui-dialog .ui-dialog-titlebar .ui-dialog-title { + margin: 0; + padding: 0; +} +.openerp.ui-dialog .ui-widget-header { + border: none; +} +.openerp.ui-dialog .ui-dialog-content { + background: white; +} +.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.ui-dialog .ui-dialog-buttonpane button { + margin: 0 4px 0 0; +} +.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: black; + 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: #7c7bad; +} +.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: #df3f3f; + background-image: -webkit-gradient(linear, left top, left bottom, from(#df3f3f), to(#a21a1a)); + background-image: -webkit-linear-gradient(top, #df3f3f, #a21a1a); + background-image: -moz-linear-gradient(top, #df3f3f, #a21a1a); + background-image: -ms-linear-gradient(top, #df3f3f, #a21a1a); + background-image: -o-linear-gradient(top, #df3f3f, #a21a1a); + background-image: linear-gradient(to bottom, #df3f3f, #a21a1a); + -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 button.oe_highlight:hover { + background-color: #e25858; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e25858), to(#ab1b1b)); + background-image: -webkit-linear-gradient(top, #e25858, #ab1b1b); + background-image: -moz-linear-gradient(top, #e25858, #ab1b1b); + background-image: -ms-linear-gradient(top, #e25858, #ab1b1b); + background-image: -o-linear-gradient(top, #e25858, #ab1b1b); + background-image: linear-gradient(to bottom, #e25858, #ab1b1b); +} +.openerp button.oe_highlight:active { + background-color: #c52020; + background-image: -webkit-gradient(linear, left top, left bottom, from(#c52020), to(#d22323)); + background-image: -webkit-linear-gradient(top, #c52020, #d22323); + background-image: -moz-linear-gradient(top, #c52020, #d22323); + background-image: -ms-linear-gradient(top, #c52020, #d22323); + background-image: -o-linear-gradient(top, #c52020, #d22323); + background-image: linear-gradient(to bottom, #c52020, #d22323); +} +.openerp .oe_background_grey { + background: #eeeeee !important; +} +.openerp .oe_form_dirty .oe_highlight_on_dirty { + 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 { + max-height: 90px; + max-width: 90px; + -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); + border: none; + margin-bottom: 10px; +} +.openerp .oe_avatar + div { + margin-left: 5px; +} +.openerp .oe_image_small > img { + max-width: 50px; + max-height: 50px; +} +.openerp .oe_image_medium > img { + max-width: 180px; + max-height: 180px; +} +.openerp .oe_button.oe_link { + border: none; + padding: 0; + margin: 0; + background: none; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + -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: 0; + -webkit-border-radius: 0; + border-radius: 0; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + color: #7c7bad; + 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 p.oe_grey { + max-width: 650px; +} +.openerp .oe_grey { + color: #aaaaaa; +} +.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: #7c7bad; + color: #eeeeee; +} +.openerp .oe_tags { + margin-bottom: 1px; +} +.openerp .oe_tags.oe_inline { + min-width: 250px; +} +.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_tooltip .oe_tooltip_close { + margin: -5px 0 0 2px; + cursor: default; + float: right; + color: white; +} +.openerp.oe_tooltip .oe_tooltip_close:hover { + color: #999999; + cursor: pointer; +} +.openerp.oe_tooltip .oe_tooltip_message { + max-width: 310px; +} +.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: rgba(0, 0, 0, 0.5); + 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: 3; + margin: 0; + padding: 0; + 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; + margin: 0; + 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: 3px; + 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 ul, .openerp .oe_login li { + margin: 0; + list-style-type: none; + padding: 0 0 4px 0; +} +.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.4); + -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4); + box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4); + -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: 32px; + background-color: #414141; + 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; + text-decoration: none; + color: #eeeeee; + vertical-align: top; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -ms-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} +.openerp .oe_topbar .oe_topbar_item:hover { + background: rgba(0, 0, 0, 0.2); + text-shadow: black 0px 0px 3px; + color: white; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) 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_menu { + float: left; + padding: 0; + margin: 0; + font-size: 13px; +} +.openerp .oe_menu > li { + list-style-type: none; + padding: 0; + margin: 0; + float: left; + display: block; + color: #eeeeee; +} +.openerp .oe_menu > li > a { + display: block; + padding: 5px 10px 7px; + line-height: 20px; + height: 20px; + text-decoration: none; + color: #eeeeee; + vertical-align: top; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -ms-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} +.openerp .oe_menu > li > a:hover { + background: rgba(0, 0, 0, 0.2); + text-shadow: black 0px 0px 3px; + color: white; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; +} +.openerp .oe_menu > li > .oe_active { + background: rgba(0, 0, 0, 0.3); + text-shadow: black 0px 0px 3px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; +} +.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_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_secondary_menu_section { + font-weight: bold; + margin-left: 8px; + color: #7c7bad; +} +.openerp .oe_secondary_submenu { + padding: 2px 0 8px 0; + margin: 0; + width: 100%; + display: inline-block; +} +.openerp .oe_secondary_submenu li { + position: relative; + margin: 0; + padding: 1px 0 1px 20px !important; + list-style-type: none; +} +.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: #7c7bad; + 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: 1px; + padding: 1px 4px; + border: none; +} +.openerp .oe_secondary_submenu .oe_menu_counter:hover { + cursor: pointer; + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); +} +.openerp .oe_secondary_submenu .oe_active { + border-top: 1px solid lightGray; + border-bottom: 1px solid #dedede; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2); + background: #7c7bad; +} +.openerp .oe_secondary_submenu .oe_active a { + color: white; +} +.openerp .oe_secondary_submenu .oe_active .oe_menu_label { + background: #eeeeee; + color: #7c7bad; + 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: #7c7bad; + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); +} +.openerp .oe_secondary_submenu .oe_menu_toggler:before { + 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_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 .oe_about a { + color: #7c7bad; +} +.openerp .oe_about a:hover { + text-decoration: underline; +} +.openerp .oe_about a:focus { + outline: none; +} +.openerp .oe_about .oe_logo { + margin-left: -6px; +} +.openerp .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 .oe_about .oe_bottom a { + color: #eeeeee; +} +.openerp .oe_application { + width: 100%; +} +.openerp .oe_application a { + color: #7c7bad; +} +.openerp .oe_application a:hover { + text-decoration: underline; +} +.openerp .oe_application > div { + height: 100%; +} +.openerp .oe_application .oe_breadcrumb_item:not(:last-child) { + display: inline-block; + max-width: 7em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.openerp .oe_view_manager .oe_view_manager_body { + 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_header_row:first-child td { + padding-top: 8px; +} +.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: #7c7bad; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_dropdown_menu { + line-height: normal; +} +.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 ul.oe_pager_group { + padding: 0; + margin: 0; +} +.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; + margin: 0; + list-style-type: none; + 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 { + padding: 0; + margin: 0 0 0 8px; +} +.openerp .oe_view_manager .oe_view_manager_switch li { + margin: 0; + width: 24px; + height: 24px; + line-height: 16px; + padding: 0; + text-align: center; + list-style-type: none; +} +.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-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, .openerp .oe_view_manager_inlineview { + height: 100%; +} +.openerp .oe_view_manager_inline > .oe_view_manager_header, .openerp .oe_view_manager_inlineview > .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; + font-weight: normal; + -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: #7c7bad; + 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_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_searchview_advanced li:first-child .searchview_extended_prop_or { + visibility: hidden; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced .searchview_extended_prop_or { + opacity: 0.5; + margin-left: -14px; +} +.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; +} +.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; + 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; + 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 { + padding: 15px; + margin-top: 0; + color: #777777; + font-size: 125%; + max-width: 700px; +} +.openerp .oe_view_nocontent .oe_view_nocontent_create { + background: transparent url(/web/static/src/img/view_empty_arrow.png) no-repeat 7px 0; + margin-top: 0; + padding-top: 35px; + min-height: 28px; + color: #4c4c4c; +} +.openerp .oe_view_nocontent > p { + padding-left: 95px; +} +.openerp .oe_view_nocontent .oe_empty_custom_dashboard { + background: transparent url(/web/static/src/img/graph_background.png) no-repeat 0 0; + margin-top: -15px; + padding: 100px 0 0 137px; + min-height: 327px; + margin-left: -15px; +} +.openerp .oe_view.oe_cannot_create .oe_view_nocontent_create { + display: none; +} +.openerp .oe_formview { + background: white; +} +.openerp .oe_form_dropdown_section { + position: relative; + display: inline-block; +} +.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: 16px; +} +.openerp .oe_form_nosheet > header { + margin: -16px -16px 0 -16px; + padding: 0; +} +.openerp .oe_form_sheetbg { + padding: 16px 0; +} +.openerp .oe_form_sheet_width { + min-width: 650px; + max-width: 860px; + margin: 0 auto; +} +.openerp .oe_form_sheet { + background: white; + min-height: 330px; + padding: 16px; +} +.openerp .oe_application .oe_form_sheetbg { + background: url(/web/static/src/img/form_sheetbg.png); + border-bottom: 1px solid #dddddd; +} +.openerp .oe_application .oe_form_sheet { + border: 1px solid #c8c8d3; + -moz-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); + -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); +} +.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 header { + position: relative; + border-bottom: 1px solid #cacaca; + padding-left: 2px; + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); +} +.openerp .oe_form header > span { + margin-left: 4px; +} +.openerp .oe_form header ul { + display: inline-block; + float: right; +} +.openerp .oe_form header .oe_button { + margin: 3px 2px 1px; +} +.openerp .oe_form header .oe_button:first-child { + margin-left: 6px; +} +.openerp .oe_form header .oe_tags { + margin: 5px 0 0 5px; + width: 400px; + padding-bottom: 0; +} +.openerp .oe_form div.oe_chatter { + min-width: 650px; + max-width: 860px; + margin: 0 auto; + padding: 16px 0 48px; +} +.openerp .oe_form div.oe_form_configuration p, .openerp .oe_form div.oe_form_configuration ul, .openerp .oe_form div.oe_form_configuration ol { + color: #aaaaaa; + max-width: 650px; +} +.openerp .oe_form div.oe_form_configuration label { + min-width: 150px; +} +.openerp .oe_form div.oe_form_configuration .oe_form_group_cell_label { + padding: 1px 0; +} +.openerp .oe_form div.oe_form_configuration .oe_form_group_cell div div { + padding: 1px 0; +} +.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; + margin-top: 4px; + padding-top: 4px; + 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_form .oe_form_button { + margin: 2px; +} +.openerp .oe_form td.oe_form_group_cell_label { + border-right: 1px solid #dddddd; + padding: 2px 0px; +} +.openerp .oe_form td.oe_form_group_cell_label label { + line-height: 18px; + display: block; + min-width: 140px; +} +.openerp .oe_form td.oe_form_group_cell + .oe_form_group_cell { + padding: 2px 0 2px 8px; +} +.openerp .oe_form .oe_form_group { + width: 100%; + margin: 9px 0 9px 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: 8px; +} +.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: 15px 0px 10px 0px; + color: #7c7bad; +} +.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; +} +.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: 60px; + 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; + 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 textarea.oe_inline[disabled] { + border-left: 8px solid #eeeeee; +} +.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:not([disabled]):not([readonly]), .openerp .oe_form .oe_form_required select:not([disabled]):not([readonly]), .openerp .oe_form .oe_form_required textarea:not([disabled]):not([readonly]) { + 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 .oe_form_embedded_html { + position: relative; + width: 600px; + margin-left: 130px; + margin-top: 32px; + margin-bottom: 32px; + text-align: justify; +} +.openerp .oe_form_editable .oe_form .oe_form_field_integer input { + width: 6em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_float input { + width: 7em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_date input { + width: 7.5em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_datetime input { + width: 11.5em !important; +} +.openerp .oe_hidden_input_file { + position: relative; +} +.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; + float: right; + padding-left: 2px; +} +.openerp.ui-autocomplete li.oe_m2o_dropdown_option a { + font-style: italic; + padding-left: 2em; +} +.openerp.ui-autocomplete li:not(.oe_m2o_dropdown_option) + li.oe_m2o_dropdown_option { + margin-top: 10px; +} +.openerp ul.oe_form_status, .openerp ul.oe_form_status_clickable { + display: inline-block; + margin: 0; + padding: 0 18px 0 0; +} +.openerp ul.oe_form_status li, .openerp ul.oe_form_status_clickable li { + display: inline-block; + list-style-type: none; + margin: 0 -18px 0 0; + padding: 0; + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); +} +.openerp ul.oe_form_status li:first-child .label, .openerp ul.oe_form_status_clickable li:first-child .label { + border-left: 1px solid #cacaca; + padding-left: 14px; +} +.openerp ul.oe_form_status li:last-child, .openerp ul.oe_form_status_clickable li:last-child { + border-right: 1px solid #cacaca; +} +.openerp ul.oe_form_status li:last-child .label, .openerp ul.oe_form_status_clickable li:last-child .label { + padding-right: 14px; +} +.openerp ul.oe_form_status li:last-child .arrow, .openerp ul.oe_form_status_clickable li:last-child .arrow { + display: none; +} +.openerp ul.oe_form_status li .label, .openerp ul.oe_form_status_clickable li .label { + color: #4c4c4c; + text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede; + padding: 7px; + display: inline-block; + padding-left: 24px; + margin: 0; + position: relative; +} +.openerp ul.oe_form_status li .arrow, .openerp ul.oe_form_status_clickable li .arrow { + width: 17px; + display: inline-block; + vertical-align: top; + overflow: hidden; + margin-left: -5px; +} +.openerp ul.oe_form_status li .arrow span, .openerp ul.oe_form_status_clickable li .arrow span { + position: relative; + width: 24px; + height: 24px; + display: inline-block; + margin-left: -12px; + margin-top: 3px; + box-shadow: -1px 1px 2px rgba(255, 255, 255, 0.2), inset -1px 1px 1px rgba(0, 0, 0, 0.2); + background-color: #dedede; + background: -moz-linear-gradient(135deg, #dedede, #fcfcfc); + background: -o-linear-gradient(135deg, #fcfcfc, #dedede); + background: -webkit-gradient(linear, left top, right bottom, from(#fcfcfc), to(#dedede)); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.openerp ul.oe_form_status li.oe_active, .openerp ul.oe_form_status_clickable li.oe_active { + background-color: #729fcf; + background-image: -webkit-gradient(linear, left top, left bottom, from(#729fcf), to(#3465a4)); + background-image: -webkit-linear-gradient(top, #729fcf, #3465a4); + background-image: -moz-linear-gradient(top, #729fcf, #3465a4); + background-image: -ms-linear-gradient(top, #729fcf, #3465a4); + background-image: -o-linear-gradient(top, #729fcf, #3465a4); + background-image: linear-gradient(to bottom, #729fcf, #3465a4); +} +.openerp ul.oe_form_status li.oe_active .arrow span, .openerp ul.oe_form_status_clickable li.oe_active .arrow span { + background-color: #3465a4; + background: -moz-linear-gradient(135deg, #3465a4, #729fcf); + background: -o-linear-gradient(135deg, #729fcf, #3465a4); + background: -webkit-gradient(linear, left top, right bottom, from(#729fcf), to(#3465a4)); +} +.openerp ul.oe_form_status li.oe_active .label, .openerp ul.oe_form_status_clickable li.oe_active .label { + color: white; + text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4; +} +.openerp ul.oe_form_status_clickable li { + cursor: pointer; +} +.openerp ul.oe_form_status_clickable li:hover { + background-color: #e8e8e8; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca)); + background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca); + background-image: -moz-linear-gradient(top, #e8e8e8, #cacaca); + background-image: -ms-linear-gradient(top, #e8e8e8, #cacaca); + background-image: -o-linear-gradient(top, #e8e8e8, #cacaca); + background-image: linear-gradient(to bottom, #e8e8e8, #cacaca); +} +.openerp ul.oe_form_status_clickable li:hover .label { + text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede; +} +.openerp ul.oe_form_status_clickable li:hover .arrow span { + background-color: #e8e8e8; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca)); + background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca); + background-image: -moz-linear-gradient(top, #e8e8e8, #cacaca); + background-image: -ms-linear-gradient(top, #e8e8e8, #cacaca); + background-image: -o-linear-gradient(top, #e8e8e8, #cacaca); + background-image: linear-gradient(to bottom, #e8e8e8, #cacaca); +} +.openerp ul.oe_form_status_clickable li .label { + color: #7c7bad; +} +.openerp ul.oe_form_status_clickable li.oe_active:hover { + background-color: #4c85c2; + background-image: -webkit-gradient(linear, left top, left bottom, from(#4c85c2), to(#284d7d)); + background-image: -webkit-linear-gradient(top, #4c85c2, #284d7d); + background-image: -moz-linear-gradient(top, #4c85c2, #284d7d); + background-image: -ms-linear-gradient(top, #4c85c2, #284d7d); + background-image: -o-linear-gradient(top, #4c85c2, #284d7d); + background-image: linear-gradient(to bottom, #4c85c2, #284d7d); +} +.openerp ul.oe_form_status_clickable li.oe_active:hover .label { + text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4; +} +.openerp ul.oe_form_status_clickable li.oe_active:hover .arrow span { + background-color: #284d7d; + background: -moz-linear-gradient(135deg, #284d7d, #4c85c2); + background: -o-linear-gradient(135deg, #4c85c2, #284d7d); + background: -webkit-gradient(linear, left top, right bottom, from(#4c85c2), to(#284d7d)); +} +.openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page { + display: none; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page, .openerp .oe_form_field_many2many > .oe_view_manager .oe_list_pager_single_page { + display: none !important; +} +.openerp .oe_form_field_one2many .oe_form_field_one2many_list_row_add, .openerp .oe_form_field_many2many .oe_form_field_one2many_list_row_add { + font-weight: bold; +} +.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_editable .oe_list_editable .oe_list_content td.oe_required { + background-color: #d2d2ff; +} +.openerp .oe_form_editable .oe_list_editable .oe_list_content td.oe_readonly { + background-color: #eeeeee; +} +.openerp .oe_list_editable .oe_list_content td.oe_list_field_cell { + padding: 4px 6px 3px 6px; +} +.openerp .oe_list.oe_list_editable td.oe_list_record_delete { + position: absolute; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_edition .oe_list_field_cell:not(.oe_readonly) { + color: transparent; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_edition .oe_list_field_cell:not(.oe_readonly) * { + visibility: hidden; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_m2o_drop_down_button { + top: 5px; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_m2o_cm_button { + display: none; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { + height: 27px; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border: 1px solid #aaaaff; + margin: 0; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_float input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_view_integer input { + text-align: right; + width: 100% !important; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime > span, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date > span { + width: 100% !important; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime input.oe_datepicker_master, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date input.oe_datepicker_master { + width: 100% !important; +} +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field .oe_form_field_float, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field .oe_form_view_integer, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date { + min-width: 0 !important; + max-width: none !important; +} +.openerp .oe_list_group_name { + white-space: nowrap; +} +.openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { + display: none; +} +.openerp .oe_list_buttons .oe_alternative { + visibility: hidden; +} +.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 { + 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_buttons.oe_editing .oe_alternative { + visibility: visible; +} +.openerp .oe_list.oe_cannot_edit .oe_list_header_handle, .openerp .oe_list.oe_cannot_edit .oe_list_field_handle { + display: none !important; + padding: 0 !important; +} +.openerp .oe_list.oe_cannot_delete .oe_list_record_delete { + display: none !important; +} +.openerp .oe_list .oe_form .oe_form_nosheet { + margin: 0; + padding: 0; + border: none; +} +.openerp .oe_list .oe_form .oe_form_field { + width: auto; + position: absolute; + margin: 0 !important; + padding: 0; +} +.openerp .oe_list .oe_list_content .oe_group_header { + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); +} +.openerp .oe_list_content { + 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 td, .openerp .oe_list_content th { + padding: 3px 6px; + line-height: 18px; +} +.openerp .oe_list_content th.oe_sortable, .openerp .oe_list_content th.oe_sortable div { + cursor: pointer; +} +.openerp .oe_list_content th.oe_sortable div { + position: relative; +} +.openerp .oe_list_content th.oe_sortable div: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 div:after { + visibility: visible; + filter: alpha(opacity=60); + opacity: 0.6; +} +.openerp .oe_list_content th.sortdown div: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 { + height: 27px; + 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 .numeric { + text-align: right; + width: 82px; +} +.openerp .oe_list_content .numeric input { + text-align: right; +} +.openerp .oe_list_content th.oe_list_header_handle { + font-size: 1px; + overflow: hidden; + text-indent: -9001px; +} +.openerp .oe_list_content td.oe_list_field_handle { + width: 1em; + padding: 0 !important; + cursor: ns-resize; +} +.openerp .oe_list_content td.oe_list_field_handle .oe_list_handle { + font-size: 1px; + letter-spacing: -1px; + color: transparent; + font-weight: normal; + margin-right: 7px; +} +.openerp .oe_list_content td.oe_list_field_handle .oe_list_handle:before { + font: 18px "entypoRegular"; + content: "}"; + color: #e0e0e0; +} +.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; + color: #4c4c4c; +} +.openerp .oe-treeview-table th { + padding: 10px; + font-weight: bold; + background-color: #f0f0f0; + border-bottom: 2px solid #cacaca; +} +.openerp .oe-treeview-table td { + cursor: pointer; + vertical-align: middle; + text-align: left; + vertical-align: middle; + height: 20px; + padding-left: 4px; + padding-right: 4px; + border-right: 1px solid #e7e7e7; +} +.openerp .oe-treeview-table td.oe_number { + text-align: right !important; +} +.openerp .oe-treeview-table tr { + border-bottom: 1px solid #d6d6d6; +} +.openerp .oe-treeview-table tr:hover { + background-color: #e7e7e7; +} +.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_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; +} .kitten-mode-activated { background-image: url(http://placekitten.com/g/1365/769); background-size: cover; - background-attachment: fixed; } - .kitten-mode-activated > * { - opacity: 0.7; } + background-attachment: fixed; +} +.kitten-mode-activated > * { + opacity: 0.7; +} div.ui-widget-overlay { background: black; filter: alpha(opacity=30); - opacity: 0.3; } + opacity: 0.3; +} .ui-widget { font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif; color: #4c4c4c; - font-size: 13px; } + font-size: 13px; +} .ui-menu { padding: 2px 0; @@ -2371,22 +2901,29 @@ div.ui-widget-overlay { -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); margin-top: 4px; - border: 1px solid #afafb6; } - .ui-menu .ui-menu-item { - width: 100%; - padding: 0; } - .ui-menu .ui-menu-item a { - padding: 1px 16px; } - .ui-menu .ui-menu-item a.ui-corner-all { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; } - .ui-menu .ui-menu-item a.ui-state-active { - background: #f0f0fa; } - .ui-menu .ui-menu-item a.ui-state-hover, .ui-menu .ui-menu-item a.ui-state-active { - background: #7c7bad; } + border: 1px solid #afafb6; +} +.ui-menu .ui-menu-item { + width: 100%; + padding: 0; +} +.ui-menu .ui-menu-item a { + padding: 1px 16px; +} +.ui-menu .ui-menu-item a.ui-corner-all { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.ui-menu .ui-menu-item a.ui-state-active { + background: #f0f0fa; +} +.ui-menu .ui-menu-item a.ui-state-hover, .ui-menu .ui-menu-item a.ui-state-active { + background: #7c7bad; +} .ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; - border-radius: 3px; } + border-radius: 3px; +} diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 568db634815..f84d30a93ea 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1547,7 +1547,9 @@ $sheet-max-width: 860px padding: 100px 0 0 137px min-height: 327px margin-left: -15px - + .oe_view.oe_cannot_create + .oe_view_nocontent_create + display: none // }}} // FormView.base and dynamic tags {{{ .oe_formview @@ -2081,6 +2083,14 @@ $sheet-max-width: 860px visibility: visible .oe_list + &.oe_cannot_edit + .oe_list_header_handle, .oe_list_field_handle + display: none !important + padding: 0 !important + &.oe_cannot_delete + .oe_list_record_delete + display: none !important + .oe_form .oe_form_nosheet margin: 0 // FIXME: either class or border should not be by default @@ -2178,16 +2188,6 @@ $sheet-max-width: 860px .oe_list_handle @include text-to-entypo-icon("}",#E0E0E0,18px) margin-right: 7px - .oe_list_cannot_create - .oe_view_nocontent_create - display: none - .oe_list_cannot_edit - .oe_list_header_handle, .oe_list_field_handle - display: none !important - padding: 0 !important - .oe_list_cannot_delete - .oe_list_record_delete - display: none !important // }}} // Tree view {{{ .tree_header diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 4da6136d3cc..75bf6c2f586 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -252,11 +252,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi this.$el.html(QWeb.render(this._template, this)); this.$el.addClass(this.fields_view.arch.attrs['class']); - // add css classes that reflect the (absence of) access rights - this.$el.toggleClass('oe_list_cannot_create', !this.is_action_enabled('create')) - .toggleClass('oe_list_cannot_edit', !this.is_action_enabled('edit')) - .toggleClass('oe_list_cannot_delete', !this.is_action_enabled('delete')); - // Head hook // Selecting records this.$el.find('.oe_list_record_selector').click(function(){ diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 66dfba99d9f..d373adf514e 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1161,6 +1161,11 @@ instance.web.View = instance.web.Widget.extend({ } return view_loaded.pipe(function(r) { self.trigger('view_loaded', r); + // add css classes that reflect the (absence of) access rights + self.$el.addClass('oe_view') + .toggleClass('oe_cannot_create', !self.is_action_enabled('create')) + .toggleClass('oe_cannot_edit', !self.is_action_enabled('edit')) + .toggleClass('oe_cannot_delete', !self.is_action_enabled('delete')); }); }, set_default_options: function(options) { From 910bb4d24e77638a73cbd369f81966bf22dc2e15 Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Tue, 23 Oct 2012 14:15:01 +0200 Subject: [PATCH 24/42] [FIX] only fetch the analytic accounts that the current user has the right to read, avoiding an access error when calling name_get() lp bug: https://launchpad.net/bugs/1033505 fixed bzr revid: abo@openerp.com-20121023121501-gl0wfhdo9zp34wx2 --- addons/analytic/analytic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 1ce483a26cd..21e2d4156fe 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -255,8 +255,8 @@ class account_analytic_account(osv.osv): if context is None: context={} if context.get('current_model') == 'project.project': - cr.execute("select analytic_account_id from project_project") - project_ids = [x[0] for x in cr.fetchall()] + project_obj = self.pool.get("account.analytic.account") + project_ids = project_obj.search(cr, uid, args) return self.name_get(cr, uid, project_ids, context=context) if name: account = self.search(cr, uid, [('code', '=', name)] + args, limit=limit, context=context) From f50c720f3e02e211f3d7831a6b88b7d4b8a08f0e Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 23 Oct 2012 14:28:33 +0200 Subject: [PATCH 25/42] [ADD] Add menu_id in url state bzr revid: fme@openerp.com-20121023122833-l9a520bkpe2yty2r --- addons/web/static/src/js/chrome.js | 1 + addons/web/static/src/js/views.js | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 3cb4437d1c3..6cf35a14e92 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -1128,6 +1128,7 @@ instance.web.WebClient = instance.web.Client.extend({ } return $.when(self.action_manager.do_action(action, { clear_breadcrumbs: true, + action_menu_id: self.menu.current_menu, })).fail(function() { self.menu.open_menu(options.previous_menu_id); }); diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index d373adf514e..c6b150a4d77 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -174,6 +174,9 @@ instance.web.ActionManager = instance.web.Widget.extend({ if(this.inner_action.type == 'ir.actions.act_window') { state['model'] = this.inner_action.res_model; } + if (this.inner_action.menu_id) { + state['menu_id'] = this.inner_action.menu_id; + } if (this.inner_action.id) { state['action'] = this.inner_action.id; } else if (this.inner_action.type == 'ir.actions.client') { @@ -241,6 +244,7 @@ instance.web.ActionManager = instance.web.Widget.extend({ clear_breadcrumbs: false, on_reverse_breadcrumb: function() {}, on_close: function() {}, + action_menu_id: null, }); if (_.isString(action) && instance.web.client_actions.contains(action)) { var action_client = { type: "ir.actions.client", tag: action }; @@ -266,6 +270,7 @@ instance.web.ActionManager = instance.web.Widget.extend({ pager : !popup && !inline, display_title : !popup }, action.flags || {}); + action.menu_id = options.action_menu_id; if (!(type in this)) { console.error("Action manager can't handle action of type " + action.type, action); return $.Deferred().reject(); From cb713061b57d45162591b979f192994f0a3ce3cf Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Tue, 23 Oct 2012 14:38:14 +0200 Subject: [PATCH 26/42] [IMP] var names bzr revid: abo@openerp.com-20121023123814-wbdrf146em3d39pe --- addons/analytic/analytic.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 21e2d4156fe..5ea8c59b848 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -259,23 +259,23 @@ class account_analytic_account(osv.osv): project_ids = project_obj.search(cr, uid, args) return self.name_get(cr, uid, project_ids, context=context) if name: - account = self.search(cr, uid, [('code', '=', name)] + args, limit=limit, context=context) - if not account: + account_ids = self.search(cr, uid, [('code', '=', name)] + args, limit=limit, context=context) + if not account_ids: names=map(lambda i : i.strip(),name.split('/')) for i in range(len(names)): dom=[('name', operator, names[i])] if i>0: - dom+=[('id','child_of',account)] - account = self.search(cr, uid, dom, limit=limit, context=context) - newacc = account + dom+=[('id','child_of',account_ids)] + account_ids = self.search(cr, uid, dom, limit=limit, context=context) + newacc = account_ids while newacc: newacc = self.search(cr, uid, [('parent_id', 'in', newacc)], limit=limit, context=context) - account += newacc + account_ids += newacc if args: - account = self.search(cr, uid, [('id', 'in', account)] + args, limit=limit, context=context) + account_ids = self.search(cr, uid, [('id', 'in', account_ids)] + args, limit=limit, context=context) else: - account = self.search(cr, uid, args, limit=limit, context=context) - return self.name_get(cr, uid, account, context=context) + account_ids = self.search(cr, uid, args, limit=limit, context=context) + return self.name_get(cr, uid, account_ids, context=context) def create(self, cr, uid, vals, context=None): contract = super(account_analytic_account, self).create(cr, uid, vals, context=context) From 8d92a334431a03a655bc42d9f731fdb174ddbdf2 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 14:40:42 +0200 Subject: [PATCH 27/42] [FIX] corrected the field reference bzr revid: nicolas.vanhoren@openerp.com-20121023124042-u5yfvylxy7a2clfv --- addons/web/static/src/js/view_form.js | 55 ++++++++++++--------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 850a334c40b..bd2fed78042 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -4605,16 +4605,6 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(instan this._super(field_manager, node); this.reference_ready = true; }, - on_nop: function() { - }, - on_selection_changed: function() { - if (this.reference_ready) { - var sel = this.selection.get_value(); - this.m2o.field.relation = sel; - this.m2o.set_value(false); - this.m2o.$el.toggle(sel !== false); - } - }, destroy_content: function() { if (this.fm) { this.fm.destroy(); @@ -4655,33 +4645,38 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(instan .on('focused', null, function () {self.trigger('focused')}) .on('blurred', null, function () {self.trigger('blurred')}); }, - is_false: function() { - return typeof(this.get_value()) !== 'string'; + on_selection_changed: function() { + if (this.reference_ready) { + this.internal_set_value([this.selection.get_value(), false]); + this.render_value(); + } + }, + data_changed: function() { + if (this.reference_ready) { + this.internal_set_value([this.selection.get_value(), this.m2o.get_value()]); + } + }, + set_value: function(val) { + if (val) { + val = val.split(','); + val[0] = val[0] || false; + val[1] = val[0] ? (val[1] ? parseInt(val[1], 10) : val[1]) : false; + } + this._super(val || [false, false]); + }, + get_value: function() { + return this.get('value')[0] && this.get('value')[1] ? (this.get('value')[0] + ',' + this.get('value')[1]) : false; }, render_value: function() { this.reference_ready = false; - var vals = [], sel_val, m2o_val; - if (typeof(this.get('value')) === 'string') { - vals = this.get('value').split(','); - } - sel_val = vals[0] || false; - m2o_val = vals[1] ? parseInt(vals[1], 10) : vals[1]; if (!this.get("effective_readonly")) { - this.selection.set_value(sel_val); + this.selection.set_value(this.get('value')[0]); } - this.m2o.field.relation = sel_val; - this.m2o.set_value(m2o_val); + this.m2o.field.relation = this.get('value')[0]; + this.m2o.set_value(this.get('value')[1]); + this.m2o.$el.toggle(!!this.get('value')[0]); this.reference_ready = true; }, - data_changed: function() { - var model = this.selection.get_value(), - id = this.m2o.get_value(); - if (typeof(model) === 'string' && typeof(id) === 'number') { - this.internal_set_value(model + ',' + id); - } else { - this.internal_set_value(false); - } - }, }); instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeFieldMixin, { From 94bc60b31027c36f94d6f07c3a485f4d355b673e Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 14:52:13 +0200 Subject: [PATCH 28/42] reverted changes to o2m bzr revid: nicolas.vanhoren@openerp.com-20121023125213-d7nc1282zmbvk72a --- addons/web/static/src/js/view_form.js | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index ce6be5b2305..bd2fed78042 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3234,12 +3234,6 @@ var commands = { return [6, false, ids]; } }; -/** - widget options: - - reload_on_button: Reload the whole form view if click on a button in a list view. - If you see this options, do not use it, it's basically a dirty hack to make one - precise o2m to behave the way we want. -*/ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ multi_selection: false, disable_utility_classes: true, @@ -3695,8 +3689,7 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ readonly: !this.is_action_enabled('edit') || self.o2m.get("effective_readonly") }); }, - handle_button: function(name, id, call) { - var _sup = _.bind(this._super, this); + do_button_action: function (name, id, callback) { if (!_.isNumber(id)) { instance.webclient.notification.warn( _t("Action Button"), @@ -3707,22 +3700,14 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ var self = this; this.ensure_saved().pipe(function () { if (parent_form) - return parent_form.recursive_save(); + return parent_form.save(); else return $.when(); - }).pipe(function () { - var call; - debugger; - if (! self.o2m.options.reload_on_button) { - call = callback; - } else { - call = function() { - self.o2m.view.recursive_reload(); - }; - } - _sup(name, id, call); + }).then(function () { + self.handle_button(name, id, callback); }); }, + _before_edit: function () { this.__ignore_blur = false; this.editor.form.on('blurred', this, this._on_form_blur); From cdb0601417a1e114bec809a3082491dbc008cd67 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 14:59:57 +0200 Subject: [PATCH 29/42] got it bzr revid: nicolas.vanhoren@openerp.com-20121023125957-lfs7yogbygw2uz4a --- addons/web/static/src/js/view_form.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index bd2fed78042..72d9725e105 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3987,9 +3987,12 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(in }, }); -/* - * TODO niv: clean those deferred stuff, it could be better - */ +/** + widget options: + - reload_on_button: Reload the whole form view if click on a button in a list view. + If you see this options, do not use it, it's basically a dirty hack to make one + precise o2m to behave the way we want. +*/ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({ multi_selection: false, disable_utility_classes: true, @@ -4118,7 +4121,20 @@ instance.web.form.Many2ManyListView = instance.web.ListView.extend(/** @lends in readonly: this.getParent().get("effective_readonly") }); pop.on('write_completed', self, self.reload_content); - } + }, + do_button_action: function(name, id, callback) { + var self = this; + var _sup = _.bind(this._super, this); + if (! this.m2m_field.options.reload_on_button) { + return _sup(name, id, callback); + } else { + return this.m2m_field.view.save().pipe(function() { + return _sup(name, id, function() { + self.m2m_field.view.reload(); + }); + }); + } + }, }); instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend(instance.web.form.CompletionFieldMixin, { From 9155f0318ec5a180d43449d9f8c5aac58fe8b25b Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 23 Oct 2012 16:14:41 +0200 Subject: [PATCH 30/42] [IMP] http dispatching decorators bzr revid: al@openerp.com-20121023141441-5yc5gso95tl1p157 --- addons/web/http.py | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/addons/web/http.py b/addons/web/http.py index 65630768737..1a636971fb5 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -128,10 +128,9 @@ class JsonRequest(WebRequest): "id": null} """ - def dispatch(self, controller, method): + def dispatch(self, method): """ Calls the method asked for by the JSON-RPC2 or JSONP request - :param controller: the instance of the controller which received the request :param method: the method which received the request :returns: an utf8 encoded JSON-RPC2 or JSONP reply @@ -170,9 +169,9 @@ class JsonRequest(WebRequest): self.jsonrequest = simplejson.loads(request, object_hook=nonliterals.non_literal_decoder) self.init(self.jsonrequest.get("params", {})) if _logger.isEnabledFor(logging.DEBUG): - _logger.debug("--> %s.%s\n%s", controller.__class__.__name__, method.__name__, pprint.pformat(self.jsonrequest)) + _logger.debug("--> %s.%s\n%s", method.im_class.__name__, method.__name__, pprint.pformat(self.jsonrequest)) response['id'] = self.jsonrequest.get('id') - response["result"] = method(controller, self, **self.params) + response["result"] = method(self, **self.params) except session.AuthenticationError: error = { 'code': 100, @@ -230,16 +229,13 @@ def jsonrequest(f): the ``session_id``, ``context`` and ``debug`` keys (which are stripped out beforehand) """ - @functools.wraps(f) - def json_handler(controller, request): - return JsonRequest(request).dispatch(controller, f) - json_handler.exposed = True - return json_handler + f.exposed = 'json' + return f class HttpRequest(WebRequest): """ Regular GET/POST request """ - def dispatch(self, controller, method): + def dispatch(self, method): params = dict(self.httprequest.args) params.update(self.httprequest.form) params.update(self.httprequest.files) @@ -250,9 +246,9 @@ class HttpRequest(WebRequest): akw[key] = value else: akw[key] = type(value) - _logger.debug("%s --> %s.%s %r", self.httprequest.method, controller.__class__.__name__, method.__name__, akw) + _logger.debug("%s --> %s.%s %r", self.httprequest.method, method.im_class.__name__, method.__name__, akw) try: - r = method(controller, self, **self.params) + r = method(self, **self.params) except xmlrpclib.Fault, e: r = werkzeug.exceptions.InternalServerError(cgi.escape(simplejson.dumps({ 'code': 200, @@ -317,11 +313,8 @@ def httprequest(f): merged in the same dictionary), apart from the ``session_id``, ``context`` and ``debug`` keys (which are stripped out beforehand) """ - @functools.wraps(f) - def http_handler(controller, request): - return HttpRequest(request).dispatch(controller, f) - http_handler.exposed = True - return http_handler + f.exposed = 'http' + return f #---------------------------------------------------------- # Controller registration with a metaclass @@ -538,16 +531,21 @@ class Root(object): """ if l: ps = '/' + '/'.join(l) - meth = 'index' + method_name = 'index' while ps: c = controllers_path.get(ps) if c: - m = getattr(c, meth, None) - if m and getattr(m, 'exposed', False): - _logger.debug("Dispatching to %s %s %s", ps, c, meth) - return m - ps, _slash, meth = ps.rpartition('/') - if not ps and meth: + method = getattr(c, method_name, None) + if method: + exposed = getattr(method, 'exposed', False) + if exposed == 'json': + _logger.debug("Dispatch json to %s %s %s", ps, c, method_name) + return lambda request: JsonRequest(request).dispatch(method) + elif exposed == 'http': + _logger.debug("Dispatch http to %s %s %s", ps, c, method_name) + return lambda request: HttpRequest(request).dispatch(method) + ps, _slash, method_name = ps.rpartition('/') + if not ps and method_name: ps = '/' return None From f57cc2402d2df0b1512c3f8aeeb5ba01024436ba Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Tue, 23 Oct 2012 16:47:46 +0200 Subject: [PATCH 31/42] [IMP] survey: code review bzr revid: qdp-launchpad@openerp.com-20121023144746-aidxyhxho59irw2d --- addons/survey/survey.py | 6 ++---- addons/survey/survey_view.xml | 2 +- addons/survey/wizard/survey_answer.py | 4 ++-- addons/survey/wizard/survey_send_invitation.py | 15 ++++++++++----- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/addons/survey/survey.py b/addons/survey/survey.py index 809079eaedb..3b406484d43 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -152,8 +152,7 @@ class survey(osv.osv): pages = sur['page_ids'] if not pages: raise osv.except_osv(_('Warning!'), _('This survey has no question defined. Please define the questions and answers first.')) - else: - context.update({'active':False,'survey_id': ids[0]}) + context.update({'active':False,'survey_id': ids[0]}) return { 'view_type': 'form', 'view_mode': 'form', @@ -170,8 +169,7 @@ class survey(osv.osv): pages = sur['page_ids'] if not pages: raise osv.except_osv(_('Warning!'), _('This survey has no pages defined. Please define pages first.')) - else: - context.update({'active':True,'survey_id': ids[0]}) + context.update({'active':True,'survey_id': ids[0]}) return { 'view_type': 'form', 'view_mode': 'form', diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml index ef3366ee1ee..c01e8b45ce2 100644 --- a/addons/survey/survey_view.xml +++ b/addons/survey/survey_view.xml @@ -215,7 +215,7 @@ - + diff --git a/addons/survey/wizard/survey_answer.py b/addons/survey/wizard/survey_answer.py index 7e1417ecdb7..f1a96fa154a 100644 --- a/addons/survey/wizard/survey_answer.py +++ b/addons/survey/wizard/survey_answer.py @@ -153,9 +153,9 @@ class survey_question_wiz(osv.osv_memory): if pag_rec: title = pag_rec.title note = pag_rec.note - question_ids=pag_rec.question_ids + question_ids = pag_rec.question_ids else: - title=sur_rec.title + title = sur_rec.title xml_form = etree.Element('form', {'string': tools.ustr(title)}) if context.has_key('active') and context.get('active',False) and context.has_key('edit'): context.update({'page_id' : tools.ustr(p_id),'page_number' : sur_name_rec.page_no , 'transfer' : sur_name_read.transfer}) diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index 661c9417180..dd0d6157caf 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -67,14 +67,19 @@ class survey_send_invitation(osv.osv_memory): name += "\t --> " + sur.title + "\n" if sur.state != 'open': msg += sur.title + "\n" - data['mail_subject'] = "Invitation for " + sur.title - data['mail_subject_existing'] = "Invitation for " + sur.title + data['mail_subject'] = _("Invitation for %s") % (sur.title) + data['mail_subject_existing'] = "_(Invitation for %s") % (sur.title) data['mail_from'] = sur.responsible_id.email if msg: raise osv.except_osv(_('Warning!'), _('%sSurvey is not in open state') % msg) - data['mail'] = '''Hello %(name)s, \n\n We are inviting you for following survey. \ - \n ''' + name + '''\n Your login ID: %(login)s, Your password: %(passwd)s - \n '''+ self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context) + '''\n\n Thanks,''' + data['mail'] = _(''' +Hello %(name)s, \n\n +Please find hereby a survey that we would like you to fill: %s\n +You can access this survey with the following parameters: + Your login ID: %(login)s,\n + Your password: %(passwd)s\n +%s\n\n +Thanks,''') % (name, self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context)) return data def create_report(self, cr, uid, res_ids, report_name=False, file_name=False): From f6a1c4986dc7bcbe2d6d2b0557de00b51ece44c6 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 16:58:58 +0200 Subject: [PATCH 32/42] lot of modifs, still not functionning bzr revid: nicolas.vanhoren@openerp.com-20121023145858-dg34k7kqi3jkar6z --- addons/web_graph/controllers/graph.py | 82 +------------ addons/web_graph/static/src/js/graph.js | 154 ++++++++++++++++++++++-- 2 files changed, 146 insertions(+), 90 deletions(-) diff --git a/addons/web_graph/controllers/graph.py b/addons/web_graph/controllers/graph.py index 21ec7d6e973..bae535a9137 100644 --- a/addons/web_graph/controllers/graph.py +++ b/addons/web_graph/controllers/graph.py @@ -8,85 +8,5 @@ class GraphView(openerp.addons.web.controllers.main.View): @openerp.addons.web.http.jsonrequest def data_get(self, req, model=None, domain=[], context={}, group_by=[], view_id=False, orientation=False, stacked=False, mode="bar", **kwargs): - obj = req.session.model(model) - - res = obj.fields_view_get(view_id, 'graph') - fields = res['fields'] - toload = filter(lambda x: x not in fields, group_by) - if toload: - fields.update( obj.fields_get(toload, context) ) - - tree = etree.fromstring(res['arch']) - - pos = 0 - xaxis = group_by or [] - yaxis = [] - for field in tree.iter(tag='field'): - if (field.tag != 'field') or (not field.get('name')): - continue - assert field.get('name'), "This tag must have a 'name' attribute." - if (not group_by) and ((not pos) or field.get('group')): - xaxis.append(field.get('name')) - if pos and not field.get('group'): - yaxis.append(field.get('name')) - pos += 1 - - assert len(xaxis), "No field for the X axis!" - assert len(yaxis), "No field for the Y axis!" - - # Convert a field's data into a displayable string - - ticks = {} - def _convert_key(field, data): - if fields[field]['type']=='many2one': - data = data and data[0] - return data - - def _convert(field, data, tick=True): - if fields[field]['type']=='many2one': - data = data and data[1] - elif (fields[field]['type']=='selection') and (type(fields[field]['selection']) in (list, tuple)): - d = dict(fields[field]['selection']) - data = d[data] - if tick: - return ticks.setdefault(data, len(ticks)) - return data or 0 - - def _orientation(x, y): - if not orientation: - return (x,y) - return (y,x) - - result = [] - if mode=="pie": - res = obj.read_group(domain, yaxis+[xaxis[0]], [xaxis[0]], context=context) - for record in res: - result.append( { - 'data': [(_convert(xaxis[0], record[xaxis[0]]), record[yaxis[0]])], - 'label': _convert(xaxis[0], record[xaxis[0]], tick=False) - }) - - elif (not stacked) or (len(xaxis)<2): - for x in xaxis: - res = obj.read_group(domain, yaxis+[x], [x], context=context) - result.append( { - 'data': map(lambda record: _orientation(_convert(x, record[x]), record[yaxis[0]] or 0), res), - 'label': fields[x]['string'] - }) - else: - xaxis.reverse() - axis = obj.read_group(domain, yaxis+xaxis[0:1], xaxis[0:1], context=context) - for x in axis: - key = x[xaxis[0]] - res = obj.read_group(domain+[(xaxis[0],'=',_convert_key(xaxis[0], key))], yaxis+xaxis[1:2], xaxis[1:2], context=context) - result.append( { - 'data': map(lambda record: _orientation(_convert(xaxis[1], record[xaxis[1]]), record[yaxis[0]] or 0), res), - 'label': _convert(xaxis[0], key, tick=False) - }) - - res = { - 'data': result, - 'ticks': map(lambda x: (x[1], x[0]), ticks.items()) - } - return res + pass diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 788ec3bcb3f..0295020dd92 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -228,15 +228,151 @@ instance.web_graph.GraphView = instance.web.View.extend({ }, graph_get_data: function () { - return this.rpc('/web_graph/graph/data_get', { - model: this.dataset.model, - domain: this.domain, - context: this.context, - group_by: this.group_by, - view_id: this.view_id, - mode: this.mode, - orientation: this.orientation, - stacked: this.stacked + var model = this.dataset.model, + domain = new instance.web.CompoundDomain(this.domain), + context = new instance.web.CompoundContext(this.context), + group_by = this.group_by, + view_id = this.view_id, + mode = this.mode, + orientation = this.orientation, + stacked = this.stacked; + + var obj = new instance.web.Model(model); + var view_get; + var fields; + var result = []; + var ticks = {}; + + return obj.call("fields_view_get", [view_id, 'graph']).pipe(function(tmp) { + view_get = tmp; + fields = view_get['fields']; + var toload = _.select(group_by, function(x) { return fields[x] === undefined }); + if (toload.length >= 1) + return obj.call("fields_get", [toload, context]); + else + return $.when([]); + }).pipe(function (fields_to_add) { + _.extend(fields, fields_to_add); + + var tree = $($.parseXML(view_get['arch'])); + + var pos = 0; + var xaxis = group_by || []; + var yaxis = []; + debugger; + tree.find("field").each(function() { + var field = $(this); + if (! field.attr("name")) + return; + if ((! group_by) && ((! pos) || field.attr('group'))) { + xaxis.push(field.attr('name')); + } + if (pos && ! field.attr('group')) { + yaxis.push(field.attr('name')); + } + pos += 1; + }); + + if (xaxis.length === 0) + throw new Error("No field for the X axis!"); + if (yaxis.length === 0) + throw new Error("No field for the Y axis!"); + + // Convert a field's data into a displayable string + + function _convert_key(field, data) { + if (fields[field]['type'] === 'many2one') + data = data && data[0]; + return data; + } + + function _convert(field, data, tick) { + tick = tick === undefined ? true : false; + if (fields[field]['type'] === 'many2one') { + data = data && data[1]; + } else if ((fields[field]['type'] === 'selection') && (fields[field]['selection'] instanceof Array)) { + var d = {}; + _.each(fields[field]['selection'], function(el) { + d[el[0]] = el[1]; + }); + data = d[data]; + } + if (tick) { + if (ticks[data] === undefined) + ticks[data] = _.size(ticks); + return ticks[data]; + } + return data || 0; + } + + function _orientation(x, y) { + if (! orientation) + return [x, y] + return [y, x] + } + + if (mode === "pie") { + return obj.call("read_group", [domain, yaxis+[xaxis[0]], [xaxis[0]]], {context: context}).pipe(function(res) { + _.each(res, function(record) { + result.push({ + 'data': [[_convert(xaxis[0], record[xaxis[0]]), record[yaxis[0]]]], + 'label': _convert(xaxis[0], record[xaxis[0]], false) + }); + }); + }); + } else if ((! stacked) || (xaxis.length < 2)) { + var defs = []; + _.each(xaxis, function(x) { + defs.push(obj.call("read_group", [domain, yaxis+[x], [x]], {context: context}).pipe(function(res) { + return [x, res]; + })); + }); + return $.when.apply($, defs).pipe(function() { + _.each(_.toArray(arguments), function(res) { + // TODO: must convert res + debugger; + var x = res[0]; + res = res[1]; + result.push({ + 'data': _.map(res, function(record) { + return _orientation(_convert(x, record[x]), record[yaxis[0]] || 0); + }), + 'label': fields[x]['string'] + }); + }); + }); + } else { + xaxis.reverse(); + return obj.call("read_group", [domain, yaxis + xaxis.slice(0, 1), xaxis.slice(0, 1)], {context: context}).pipe(function(axis) { + var defs = []; + _.each(axis, function(x) { + var key = x[xaxis[0]] + defs.push(obj.call("read_group", [domain+[(xaxis[0],'=',_convert_key(xaxis[0], key))], yaxis + xaxis.slice(1, 2), xaxis.slice(1, 2)], + {context: context}).pipe(function(res) { + return [x, key, res]; + })); + }); + return $.when.apply($, defs).pipe(function(res) { + // TODO: must convert res + debugger; + var x = res[0]; + var key = res[1]; + res = res[2]; + result.push({ + 'data': _.map(res, function(record) { + return _orientation(_convert(xaxis[1], record[xaxis[1]]), record[yaxis[0]] or 0); + }), + 'label': _convert(xaxis[0], key, false) + }) + }); + }); + } + }).pipe(function() { + var res = { + 'data': result, + 'ticks': _.map(ticks, function(el, key) { return [el, key] }) + }; + return res; }); }, From 796958fa7c214eaba2c8379cd79a5d86059530f5 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 17:11:23 +0200 Subject: [PATCH 33/42] Currently working for bar charts bzr revid: nicolas.vanhoren@openerp.com-20121023151123-ebo1edkp65c3dk94 --- addons/web_graph/controllers/graph.py | 82 ++++++++++++++++++++++++- addons/web_graph/static/src/js/graph.js | 31 ++++------ 2 files changed, 94 insertions(+), 19 deletions(-) diff --git a/addons/web_graph/controllers/graph.py b/addons/web_graph/controllers/graph.py index bae535a9137..21ec7d6e973 100644 --- a/addons/web_graph/controllers/graph.py +++ b/addons/web_graph/controllers/graph.py @@ -8,5 +8,85 @@ class GraphView(openerp.addons.web.controllers.main.View): @openerp.addons.web.http.jsonrequest def data_get(self, req, model=None, domain=[], context={}, group_by=[], view_id=False, orientation=False, stacked=False, mode="bar", **kwargs): - pass + obj = req.session.model(model) + + res = obj.fields_view_get(view_id, 'graph') + fields = res['fields'] + toload = filter(lambda x: x not in fields, group_by) + if toload: + fields.update( obj.fields_get(toload, context) ) + + tree = etree.fromstring(res['arch']) + + pos = 0 + xaxis = group_by or [] + yaxis = [] + for field in tree.iter(tag='field'): + if (field.tag != 'field') or (not field.get('name')): + continue + assert field.get('name'), "This tag must have a 'name' attribute." + if (not group_by) and ((not pos) or field.get('group')): + xaxis.append(field.get('name')) + if pos and not field.get('group'): + yaxis.append(field.get('name')) + pos += 1 + + assert len(xaxis), "No field for the X axis!" + assert len(yaxis), "No field for the Y axis!" + + # Convert a field's data into a displayable string + + ticks = {} + def _convert_key(field, data): + if fields[field]['type']=='many2one': + data = data and data[0] + return data + + def _convert(field, data, tick=True): + if fields[field]['type']=='many2one': + data = data and data[1] + elif (fields[field]['type']=='selection') and (type(fields[field]['selection']) in (list, tuple)): + d = dict(fields[field]['selection']) + data = d[data] + if tick: + return ticks.setdefault(data, len(ticks)) + return data or 0 + + def _orientation(x, y): + if not orientation: + return (x,y) + return (y,x) + + result = [] + if mode=="pie": + res = obj.read_group(domain, yaxis+[xaxis[0]], [xaxis[0]], context=context) + for record in res: + result.append( { + 'data': [(_convert(xaxis[0], record[xaxis[0]]), record[yaxis[0]])], + 'label': _convert(xaxis[0], record[xaxis[0]], tick=False) + }) + + elif (not stacked) or (len(xaxis)<2): + for x in xaxis: + res = obj.read_group(domain, yaxis+[x], [x], context=context) + result.append( { + 'data': map(lambda record: _orientation(_convert(x, record[x]), record[yaxis[0]] or 0), res), + 'label': fields[x]['string'] + }) + else: + xaxis.reverse() + axis = obj.read_group(domain, yaxis+xaxis[0:1], xaxis[0:1], context=context) + for x in axis: + key = x[xaxis[0]] + res = obj.read_group(domain+[(xaxis[0],'=',_convert_key(xaxis[0], key))], yaxis+xaxis[1:2], xaxis[1:2], context=context) + result.append( { + 'data': map(lambda record: _orientation(_convert(xaxis[1], record[xaxis[1]]), record[yaxis[0]] or 0), res), + 'label': _convert(xaxis[0], key, tick=False) + }) + + res = { + 'data': result, + 'ticks': map(lambda x: (x[1], x[0]), ticks.items()) + } + return res diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 0295020dd92..3b4a29bc55a 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -229,13 +229,13 @@ instance.web_graph.GraphView = instance.web.View.extend({ graph_get_data: function () { var model = this.dataset.model, - domain = new instance.web.CompoundDomain(this.domain), - context = new instance.web.CompoundContext(this.context), - group_by = this.group_by, - view_id = this.view_id, - mode = this.mode, - orientation = this.orientation, - stacked = this.stacked; + domain = new instance.web.CompoundDomain(this.domain || []), + context = new instance.web.CompoundContext(this.context || {}), + group_by = this.group_by || [], + view_id = this.view_id || false, + mode = this.mode || 'bar', + orientation = this.orientation || false, + stacked = this.stacked || false; var obj = new instance.web.Model(model); var view_get; @@ -259,12 +259,11 @@ instance.web_graph.GraphView = instance.web.View.extend({ var pos = 0; var xaxis = group_by || []; var yaxis = []; - debugger; tree.find("field").each(function() { var field = $(this); if (! field.attr("name")) return; - if ((! group_by) && ((! pos) || field.attr('group'))) { + if ((group_by.length == 0) && ((! pos) || field.attr('group'))) { xaxis.push(field.attr('name')); } if (pos && ! field.attr('group')) { @@ -312,7 +311,7 @@ instance.web_graph.GraphView = instance.web.View.extend({ } if (mode === "pie") { - return obj.call("read_group", [domain, yaxis+[xaxis[0]], [xaxis[0]]], {context: context}).pipe(function(res) { + return obj.call("read_group", [domain, yaxis.concat([xaxis[0]]), [xaxis[0]]], {context: context}).pipe(function(res) { _.each(res, function(record) { result.push({ 'data': [[_convert(xaxis[0], record[xaxis[0]]), record[yaxis[0]]]], @@ -323,14 +322,12 @@ instance.web_graph.GraphView = instance.web.View.extend({ } else if ((! stacked) || (xaxis.length < 2)) { var defs = []; _.each(xaxis, function(x) { - defs.push(obj.call("read_group", [domain, yaxis+[x], [x]], {context: context}).pipe(function(res) { + defs.push(obj.call("read_group", [domain, yaxis.concat([x]), [x]], {context: context}).pipe(function(res) { return [x, res]; })); }); return $.when.apply($, defs).pipe(function() { _.each(_.toArray(arguments), function(res) { - // TODO: must convert res - debugger; var x = res[0]; res = res[1]; result.push({ @@ -343,24 +340,22 @@ instance.web_graph.GraphView = instance.web.View.extend({ }); } else { xaxis.reverse(); - return obj.call("read_group", [domain, yaxis + xaxis.slice(0, 1), xaxis.slice(0, 1)], {context: context}).pipe(function(axis) { + return obj.call("read_group", [domain, yaxis.concat(xaxis.slice(0, 1)), xaxis.slice(0, 1)], {context: context}).pipe(function(axis) { var defs = []; _.each(axis, function(x) { var key = x[xaxis[0]] - defs.push(obj.call("read_group", [domain+[(xaxis[0],'=',_convert_key(xaxis[0], key))], yaxis + xaxis.slice(1, 2), xaxis.slice(1, 2)], + defs.push(obj.call("read_group", [domain+[(xaxis[0],'=',_convert_key(xaxis[0], key))], yaxis.concat(xaxis.slice(1, 2)), xaxis.slice(1, 2)], {context: context}).pipe(function(res) { return [x, key, res]; })); }); return $.when.apply($, defs).pipe(function(res) { - // TODO: must convert res - debugger; var x = res[0]; var key = res[1]; res = res[2]; result.push({ 'data': _.map(res, function(record) { - return _orientation(_convert(xaxis[1], record[xaxis[1]]), record[yaxis[0]] or 0); + return _orientation(_convert(xaxis[1], record[xaxis[1]]), record[yaxis[0]] || 0); }), 'label': _convert(xaxis[0], key, false) }) From f1e8ad572e31d78376976aab1a9a48526715fec0 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 17:16:15 +0200 Subject: [PATCH 34/42] fixed problem with some other bar chart bzr revid: nicolas.vanhoren@openerp.com-20121023151615-ptv4was339w13li6 --- addons/web_graph/static/src/js/graph.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 3b4a29bc55a..aceb02cdc61 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -344,8 +344,8 @@ instance.web_graph.GraphView = instance.web.View.extend({ var defs = []; _.each(axis, function(x) { var key = x[xaxis[0]] - defs.push(obj.call("read_group", [domain+[(xaxis[0],'=',_convert_key(xaxis[0], key))], yaxis.concat(xaxis.slice(1, 2)), xaxis.slice(1, 2)], - {context: context}).pipe(function(res) { + defs.push(obj.call("read_group", [new instance.web.CompoundDomain(domain, [[xaxis[0], '=' ,_convert_key(xaxis[0], key)]]), + yaxis.concat(xaxis.slice(1, 2)), xaxis.slice(1, 2)], {context: context}).pipe(function(res) { return [x, key, res]; })); }); From 4014421326ddd6935a598c1e62505ff5c6708761 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 17:17:40 +0200 Subject: [PATCH 35/42] Regression with bar charts bzr revid: nicolas.vanhoren@openerp.com-20121023151740-20xaros930r9806p --- addons/web_graph/static/src/js/graph.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index aceb02cdc61..4e4dd98be9b 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -349,16 +349,18 @@ instance.web_graph.GraphView = instance.web.View.extend({ return [x, key, res]; })); }); - return $.when.apply($, defs).pipe(function(res) { - var x = res[0]; - var key = res[1]; - res = res[2]; - result.push({ - 'data': _.map(res, function(record) { - return _orientation(_convert(xaxis[1], record[xaxis[1]]), record[yaxis[0]] || 0); - }), - 'label': _convert(xaxis[0], key, false) - }) + return $.when.apply($, defs).pipe(function() { + _.each(_.toArray(arguments), function(res) { + var x = res[0]; + var key = res[1]; + res = res[2]; + result.push({ + 'data': _.map(res, function(record) { + return _orientation(_convert(xaxis[1], record[xaxis[1]]), record[yaxis[0]] || 0); + }), + 'label': _convert(xaxis[0], key, false) + }) + }); }); }); } From a94b8b432f5e044f155d2ef0a68911b739084595 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Tue, 23 Oct 2012 17:17:40 +0200 Subject: [PATCH 36/42] [FIX] survey: syntax error bzr revid: qdp-launchpad@openerp.com-20121023151740-wjft48qjgffasaug --- addons/survey/wizard/survey_send_invitation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index dd0d6157caf..a75cae2f893 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -68,7 +68,7 @@ class survey_send_invitation(osv.osv_memory): if sur.state != 'open': msg += sur.title + "\n" data['mail_subject'] = _("Invitation for %s") % (sur.title) - data['mail_subject_existing'] = "_(Invitation for %s") % (sur.title) + data['mail_subject_existing'] = _("Invitation for %s") % (sur.title) data['mail_from'] = sur.responsible_id.email if msg: raise osv.except_osv(_('Warning!'), _('%sSurvey is not in open state') % msg) From fa11c31eaea1168dbbb79c2646eb75c7458846f4 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 17:26:46 +0200 Subject: [PATCH 37/42] Removed server-side implementation bzr revid: nicolas.vanhoren@openerp.com-20121023152646-ju42b5dzmckfzi5a --- addons/web_graph/__init__.py | 1 - addons/web_graph/controllers/__init__.py | 1 - addons/web_graph/controllers/graph.py | 92 ------------------------ 3 files changed, 94 deletions(-) delete mode 100644 addons/web_graph/controllers/__init__.py delete mode 100644 addons/web_graph/controllers/graph.py diff --git a/addons/web_graph/__init__.py b/addons/web_graph/__init__.py index ee5959455ad..e69de29bb2d 100644 --- a/addons/web_graph/__init__.py +++ b/addons/web_graph/__init__.py @@ -1 +0,0 @@ -import controllers diff --git a/addons/web_graph/controllers/__init__.py b/addons/web_graph/controllers/__init__.py deleted file mode 100644 index 7f317cca530..00000000000 --- a/addons/web_graph/controllers/__init__.py +++ /dev/null @@ -1 +0,0 @@ -import graph diff --git a/addons/web_graph/controllers/graph.py b/addons/web_graph/controllers/graph.py deleted file mode 100644 index 21ec7d6e973..00000000000 --- a/addons/web_graph/controllers/graph.py +++ /dev/null @@ -1,92 +0,0 @@ -# -*- coding: utf-8 -*- -import openerp - -from lxml import etree - -class GraphView(openerp.addons.web.controllers.main.View): - _cp_path = '/web_graph/graph' - - @openerp.addons.web.http.jsonrequest - def data_get(self, req, model=None, domain=[], context={}, group_by=[], view_id=False, orientation=False, stacked=False, mode="bar", **kwargs): - obj = req.session.model(model) - - res = obj.fields_view_get(view_id, 'graph') - fields = res['fields'] - toload = filter(lambda x: x not in fields, group_by) - if toload: - fields.update( obj.fields_get(toload, context) ) - - tree = etree.fromstring(res['arch']) - - pos = 0 - xaxis = group_by or [] - yaxis = [] - for field in tree.iter(tag='field'): - if (field.tag != 'field') or (not field.get('name')): - continue - assert field.get('name'), "This tag must have a 'name' attribute." - if (not group_by) and ((not pos) or field.get('group')): - xaxis.append(field.get('name')) - if pos and not field.get('group'): - yaxis.append(field.get('name')) - pos += 1 - - assert len(xaxis), "No field for the X axis!" - assert len(yaxis), "No field for the Y axis!" - - # Convert a field's data into a displayable string - - ticks = {} - def _convert_key(field, data): - if fields[field]['type']=='many2one': - data = data and data[0] - return data - - def _convert(field, data, tick=True): - if fields[field]['type']=='many2one': - data = data and data[1] - elif (fields[field]['type']=='selection') and (type(fields[field]['selection']) in (list, tuple)): - d = dict(fields[field]['selection']) - data = d[data] - if tick: - return ticks.setdefault(data, len(ticks)) - return data or 0 - - def _orientation(x, y): - if not orientation: - return (x,y) - return (y,x) - - result = [] - if mode=="pie": - res = obj.read_group(domain, yaxis+[xaxis[0]], [xaxis[0]], context=context) - for record in res: - result.append( { - 'data': [(_convert(xaxis[0], record[xaxis[0]]), record[yaxis[0]])], - 'label': _convert(xaxis[0], record[xaxis[0]], tick=False) - }) - - elif (not stacked) or (len(xaxis)<2): - for x in xaxis: - res = obj.read_group(domain, yaxis+[x], [x], context=context) - result.append( { - 'data': map(lambda record: _orientation(_convert(x, record[x]), record[yaxis[0]] or 0), res), - 'label': fields[x]['string'] - }) - else: - xaxis.reverse() - axis = obj.read_group(domain, yaxis+xaxis[0:1], xaxis[0:1], context=context) - for x in axis: - key = x[xaxis[0]] - res = obj.read_group(domain+[(xaxis[0],'=',_convert_key(xaxis[0], key))], yaxis+xaxis[1:2], xaxis[1:2], context=context) - result.append( { - 'data': map(lambda record: _orientation(_convert(xaxis[1], record[xaxis[1]]), record[yaxis[0]] or 0), res), - 'label': _convert(xaxis[0], key, tick=False) - }) - - res = { - 'data': result, - 'ticks': map(lambda x: (x[1], x[0]), ticks.items()) - } - return res - From 1480c7508a9353c7f77b843c39f5a17efa8bf27f Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 23 Oct 2012 17:38:01 +0200 Subject: [PATCH 38/42] Now uses official formatting method bzr revid: nicolas.vanhoren@openerp.com-20121023153801-l98x0dtpyh6l8vjm --- addons/web_graph/static/src/js/graph.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 4e4dd98be9b..df26e6fc123 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -287,15 +287,7 @@ instance.web_graph.GraphView = instance.web.View.extend({ function _convert(field, data, tick) { tick = tick === undefined ? true : false; - if (fields[field]['type'] === 'many2one') { - data = data && data[1]; - } else if ((fields[field]['type'] === 'selection') && (fields[field]['selection'] instanceof Array)) { - var d = {}; - _.each(fields[field]['selection'], function(el) { - d[el[0]] = el[1]; - }); - data = d[data]; - } + data = instance.web.format_value(data, fields[field]); if (tick) { if (ticks[data] === undefined) ticks[data] = _.size(ticks); From b8756e66062d5c1c209861ccc8dee9ab8e8c1f7c Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Tue, 23 Oct 2012 20:32:57 +0200 Subject: [PATCH 39/42] [FIX] survey: 'format requires mapping' error fixed bzr revid: qdp-launchpad@openerp.com-20121023183257-hzl1ed9nhkci7348 --- addons/survey/wizard/survey_send_invitation.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index a75cae2f893..51b652a2d13 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -71,13 +71,13 @@ class survey_send_invitation(osv.osv_memory): data['mail_subject_existing'] = _("Invitation for %s") % (sur.title) data['mail_from'] = sur.responsible_id.email if msg: - raise osv.except_osv(_('Warning!'), _('%sSurvey is not in open state') % msg) + raise osv.except_osv(_('Warning!'), _('The following surveys are not in open state: %s') % msg) data['mail'] = _(''' -Hello %(name)s, \n\n +Hello %%(name)s, \n\n Please find hereby a survey that we would like you to fill: %s\n You can access this survey with the following parameters: - Your login ID: %(login)s,\n - Your password: %(passwd)s\n + Your login ID: %%(login)s,\n + Your password: %%(passwd)s\n %s\n\n Thanks,''') % (name, self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context)) return data From d78b7a28150f996dd5417377c79bc5282c592aa3 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 23 Oct 2012 23:13:47 +0200 Subject: [PATCH 40/42] [IMP] accounting bzr revid: fp@openerp.com-20121023211347-kdodwhdir7p1skgb --- addons/account/account_view.xml | 26 -------------------------- addons/l10n_be/l10n_be_wizard.yml | 6 +----- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 1b614a1ee85..745795452d3 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -2414,32 +2414,6 @@ form new
- - ir.actions.server - True - code - - - -# check for unconfigured companies -account_installer_obj = self.pool.get('account.installer') -account_installer_obj.check_unconfigured_cmp(cr, uid, context=context) -action_ids = [] -# fetch the act_window actions related to chart of account configuration -# we use ir.actions.todo to enable the possibility for other modules to insert their own -# wizards during the configuration process -ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'action_wizard_multi_chart') -if ref: - action_ids += [ref[1]] -ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'action_account_configuration_installer') -if ref: - action_ids += [ref[1]] -todo_ids = pool.get('ir.actions.todo').search(cr, uid, [('action_id', 'in', action_ids)], context=context) -pool.get('ir.actions.todo').write(cr, uid, todo_ids, {'state':'open'}, context=context) -action = pool.get('res.config').next(cr, uid, [], context) - - New Company Financial Setting - account.account.graph diff --git a/addons/l10n_be/l10n_be_wizard.yml b/addons/l10n_be/l10n_be_wizard.yml index 178009be7ff..0b16827225f 100644 --- a/addons/l10n_be/l10n_be_wizard.yml +++ b/addons/l10n_be/l10n_be_wizard.yml @@ -1,10 +1,6 @@ -- - !record {model: ir.actions.todo, id: config_call_account_template}: - action_id: account.action_wizard_multi_chart - type: automatic - !python {model: ir.actions.todo}: | - install_todo = self.browse(cr, uid, ref('l10n_be.config_call_account_template')) + install_todo = self.browse(cr, uid, ref('account.action_wizard_multi_chart_todo')) if install_todo.state == 'open': wiz = self.pool.get('wizard.multi.charts.accounts') values = { From 9c712d53365c5d1e4885b33ff2eb7ac2156ca691 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 24 Oct 2012 00:33:58 +0200 Subject: [PATCH 41/42] [IMP] survey: code review bzr revid: qdp-launchpad@openerp.com-20121023223358-vqey57o52eyi6fhf --- addons/survey/survey.py | 2 +- addons/survey/wizard/survey_send_invitation.py | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/survey/survey.py b/addons/survey/survey.py index 3b406484d43..b57f778a5cc 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -77,7 +77,7 @@ class survey(osv.osv): 'tot_comp_survey': lambda * a: 0, 'send_response': lambda * a: 1, 'response_user': lambda * a:1, - 'date_open': strftime("%Y-%m-%d %H:%M:%S"), + 'date_open': fields.datetime.now, } def survey_open(self, cr, uid, ids, arg): diff --git a/addons/survey/wizard/survey_send_invitation.py b/addons/survey/wizard/survey_send_invitation.py index 51b652a2d13..936e3363bde 100644 --- a/addons/survey/wizard/survey_send_invitation.py +++ b/addons/survey/wizard/survey_send_invitation.py @@ -64,7 +64,7 @@ class survey_send_invitation(osv.osv_memory): msg = "" name = "" for sur in survey_obj.browse(cr, uid, context.get('active_ids', []), context=context): - name += "\t --> " + sur.title + "\n" + name += "\n --> " + sur.title + "\n" if sur.state != 'open': msg += sur.title + "\n" data['mail_subject'] = _("Invitation for %s") % (sur.title) @@ -74,11 +74,12 @@ class survey_send_invitation(osv.osv_memory): raise osv.except_osv(_('Warning!'), _('The following surveys are not in open state: %s') % msg) data['mail'] = _(''' Hello %%(name)s, \n\n -Please find hereby a survey that we would like you to fill: %s\n +Would you please spent some of your time to fill-in our survey: \n%s\n You can access this survey with the following parameters: - Your login ID: %%(login)s,\n + URL: %s + Your login ID: %%(login)s\n Your password: %%(passwd)s\n -%s\n\n +\n\n Thanks,''') % (name, self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context)) return data From b7feab731b1d0e56c22bf338ef476a45eb40debe Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Wed, 24 Oct 2012 05:20:44 +0000 Subject: [PATCH 42/42] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20121024045536-py0ehkq8nazb5en1 bzr revid: launchpad_translations_on_behalf_of_openerp-20121024045556-v4pmdh85f6qnn1f6 bzr revid: launchpad_translations_on_behalf_of_openerp-20121024052044-ajcrxdgxe6plx868 --- addons/crm_claim/i18n/ru.po | 28 +-- addons/l10n_mx/i18n/es_MX.po | 2 +- addons/resource/i18n/ru.po | 10 +- addons/sale/i18n/ru.po | 52 ++--- addons/web/i18n/ru.po | 122 +++++----- addons/web_calendar/i18n/ru.po | 52 ++--- addons/web_graph/i18n/ru.po | 38 ++-- openerp/addons/base/i18n/ru.po | 394 +++++++++++++++++---------------- 8 files changed, 351 insertions(+), 347 deletions(-) diff --git a/addons/crm_claim/i18n/ru.po b/addons/crm_claim/i18n/ru.po index 88435961627..cea6d33e47d 100644 --- a/addons/crm_claim/i18n/ru.po +++ b/addons/crm_claim/i18n/ru.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2011-03-16 00:04+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-10-24 04:51+0000\n" +"Last-Translator: Chertykov Denis \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-10-19 05:33+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-10-24 04:55+0000\n" +"X-Generator: Launchpad (build 16179)\n" #. module: crm_claim #: field:crm.claim.report,nbr:0 @@ -85,12 +85,12 @@ msgstr "" #: code:addons/crm_claim/crm_claim.py:132 #, python-format msgid "The claim '%s' has been opened." -msgstr "" +msgstr "Претензия '%s' была открыта" #. module: crm_claim #: view:crm.claim:0 msgid "Date Closed" -msgstr "" +msgstr "Дата закрытия" #. module: crm_claim #: view:crm.claim.report:0 @@ -151,12 +151,12 @@ msgstr "Ссылка" #. module: crm_claim #: view:crm.claim.report:0 msgid "Date of claim" -msgstr "" +msgstr "Дата претензии" #. module: crm_claim #: view:crm.claim:0 msgid "All pending Claims" -msgstr "" +msgstr "Все ожидающие претензии" #. module: crm_claim #: view:crm.claim.report:0 @@ -187,7 +187,7 @@ msgstr "Контрагент" #. module: crm_claim #: view:crm.claim.report:0 msgid "Month of claim" -msgstr "" +msgstr "Месяц претензии" #. module: crm_claim #: selection:crm.claim,type_action:0 @@ -227,7 +227,7 @@ msgstr "Отправить новое эл. письмо" #: selection:crm.claim,state:0 #: view:crm.claim.report:0 msgid "New" -msgstr "" +msgstr "Новый" #. module: crm_claim #: view:crm.claim:0 @@ -254,7 +254,7 @@ msgstr "Следующее действие" #. module: crm_claim #: view:crm.claim.report:0 msgid "My Sales Team(s)" -msgstr "" +msgstr "Мои отделы продаж" #. module: crm_claim #: model:crm.case.stage,name:crm_claim.stage_claim3 @@ -321,7 +321,7 @@ msgstr "Контакт" #. module: crm_claim #: view:crm.claim.report:0 msgid "Month-1" -msgstr "" +msgstr "Месяц-1" #. module: crm_claim #: model:ir.actions.act_window,name:crm_claim.action_report_crm_claim @@ -380,7 +380,7 @@ msgstr "Дата изменения" #. module: crm_claim #: view:crm.claim.report:0 msgid "Year of claim" -msgstr "" +msgstr "Год претензи" #. module: crm_claim #: view:crm.claim.report:0 @@ -402,7 +402,7 @@ msgstr "Значение претензии" #. module: crm_claim #: view:crm.claim:0 msgid "Responsible User" -msgstr "" +msgstr "Ответственный пользователь" #. module: crm_claim #: help:crm.claim,email_cc:0 diff --git a/addons/l10n_mx/i18n/es_MX.po b/addons/l10n_mx/i18n/es_MX.po index eec525b5f53..305ec408af2 100644 --- a/addons/l10n_mx/i18n/es_MX.po +++ b/addons/l10n_mx/i18n/es_MX.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-23 04:48+0000\n" +"X-Launchpad-Export-Date: 2012-10-24 04:55+0000\n" "X-Generator: Launchpad (build 16179)\n" #. module: l10n_mx diff --git a/addons/resource/i18n/ru.po b/addons/resource/i18n/ru.po index 7a7f5e82dbd..a5192a83647 100644 --- a/addons/resource/i18n/ru.po +++ b/addons/resource/i18n/ru.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:37+0000\n" -"PO-Revision-Date: 2012-05-10 18:26+0000\n" +"PO-Revision-Date: 2012-10-23 18:55+0000\n" "Last-Translator: Chertykov Denis \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-10-19 05:30+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-10-24 04:55+0000\n" +"X-Generator: Launchpad (build 16179)\n" #. module: resource #: help:resource.calendar.leaves,resource_id:0 @@ -107,7 +107,7 @@ msgstr "Рабочее время начнется с" #. module: resource #: constraint:resource.calendar.leaves:0 msgid "Error! leave start-date must be lower then leave end-date." -msgstr "" +msgstr "Ошибка! Дата начала отгула должна быть раньше даты завершения." #. module: resource #: model:ir.model,name:resource.model_resource_calendar @@ -324,7 +324,7 @@ msgstr "(отпуск)" #: code:addons/resource/resource.py:392 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Ошибка конфигурации!" #. module: resource #: selection:resource.resource,resource_type:0 diff --git a/addons/sale/i18n/ru.po b/addons/sale/i18n/ru.po index b689b1b1946..a67f7c78b4c 100644 --- a/addons/sale/i18n/ru.po +++ b/addons/sale/i18n/ru.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-09-20 07:29+0000\n" -"PO-Revision-Date: 2012-09-10 14:56+0000\n" +"PO-Revision-Date: 2012-10-23 18:53+0000\n" "Last-Translator: Chertykov Denis \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-19 05:12+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-10-24 04:55+0000\n" +"X-Generator: Launchpad (build 16179)\n" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:215 @@ -235,7 +235,7 @@ msgstr "В счет" #: view:sale.order.line:0 #: field:sale.report,product_uom:0 msgid "Unit of Measure" -msgstr "" +msgstr "Единицы измерения" #. module: sale #: help:sale.order,date_confirm:0 @@ -264,7 +264,7 @@ msgstr "" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Invoice the whole sale order" -msgstr "" +msgstr "Выставить счет на весь заказ продажи" #. module: sale #: field:sale.order,project_id:0 @@ -304,12 +304,12 @@ msgstr "Исключение счета" #. module: sale #: view:account.config.settings:0 msgid "0" -msgstr "" +msgstr "0" #. module: sale #: selection:sale.order,state:0 msgid "Draft Quotation" -msgstr "" +msgstr "Черновик предложения" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:124 @@ -359,23 +359,23 @@ msgstr "Вес" #. module: sale #: view:sale.config.settings:0 msgid "Warehouse Features" -msgstr "" +msgstr "Особенности склада" #. module: sale #: view:sale.order:0 msgid "Quotation " -msgstr "" +msgstr "Предложение " #. module: sale #: field:sale.order.line,product_uom:0 msgid "Unit of Measure " -msgstr "" +msgstr "Единица измерения " #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:148 #, python-format msgid "Incorrect Data" -msgstr "" +msgstr "Неверные данные" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:149 @@ -401,7 +401,7 @@ msgstr "Заказ" #. module: sale #: field:sale.order,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Сообщения" #. module: sale #: selection:sale.report,month:0 @@ -422,7 +422,7 @@ msgstr "Сумма до налогов" #. module: sale #: field:sale.config.settings,module_project:0 msgid "Project" -msgstr "" +msgstr "Проект" #. module: sale #: code:addons/sale/sale.py:319 @@ -433,7 +433,7 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:123 #, python-format msgid "Error!" -msgstr "" +msgstr "Ошибка!" #. module: sale #: report:sale.order:0 @@ -467,7 +467,7 @@ msgstr "Позиции заказа продаж относящиеся к мо #. module: sale #: selection:sale.order,state:0 msgid "Quotation Sent" -msgstr "" +msgstr "Предложение отправлено" #. module: sale #: help:sale.order,message_unread:0 @@ -528,12 +528,12 @@ msgstr "Налог" #: code:addons/sale/sale.py:986 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Неверное действие!" #. module: sale #: view:sale.report:0 msgid "Reference Unit of Measure" -msgstr "" +msgstr "Базовая единица измерения" #. module: sale #: field:sale.report,date_confirm:0 @@ -572,7 +572,7 @@ msgstr "Факс :" #. module: sale #: view:sale.order:0 msgid "(update)" -msgstr "" +msgstr "(обновление)" #. module: sale #: help:sale.config.settings,group_discount_per_so_line:0 @@ -635,7 +635,7 @@ msgstr "Подтвердить" #. module: sale #: view:sale.order:0 msgid "Unread messages" -msgstr "" +msgstr "Непрочитанные сообщения" #. module: sale #: field:sale.order,partner_shipping_id:0 @@ -673,12 +673,12 @@ msgstr "Заказы продаж, которые еще не были подт #. module: sale #: field:sale.order,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Непрочитанные сообщения" #. module: sale #: view:sale.order:0 msgid "Print" -msgstr "" +msgstr "Печать" #. module: sale #: report:sale.order:0 @@ -793,12 +793,12 @@ msgstr "Год заказа в заказе продаж" #. module: sale #: field:sale.config.settings,module_sale_stock:0 msgid "Sale and Warehouse Management" -msgstr "" +msgstr "Управление продажами и складом" #. module: sale #: model:ir.model,name:sale.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: sale #: field:sale.advance.payment.inv,qtty:0 @@ -842,7 +842,7 @@ msgstr "" #. module: sale #: view:sale.config.settings:0 msgid "Default Options" -msgstr "" +msgstr "Параметры по умолчанию" #. module: sale #: code:addons/sale/sale.py:963 @@ -850,12 +850,12 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:142 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Ошибка конфигурации!" #. module: sale #: field:account.config.settings,group_analytic_account_for_sales:0 msgid "Analytic accounting for sales" -msgstr "" +msgstr "Аналитический учет для продаж" #. module: sale #: view:sale.order:0 diff --git a/addons/web/i18n/ru.po b/addons/web/i18n/ru.po index d310793240d..fa80053a306 100644 --- a/addons/web/i18n/ru.po +++ b/addons/web/i18n/ru.po @@ -8,14 +8,14 @@ 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-20 07:27+0000\n" -"Last-Translator: Aleksei Motsik \n" +"PO-Revision-Date: 2012-10-23 14:30+0000\n" +"Last-Translator: Chertykov Denis \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-10-21 05:02+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-10-24 05:20+0000\n" +"X-Generator: Launchpad (build 16179)\n" #. openerp-web #: addons/web/static/src/js/chrome.js:176 @@ -129,62 +129,62 @@ msgstr "OpenERP - Не поддерживаемая/Community Версия" #. openerp-web #: addons/web/static/src/js/coresetup.js:619 msgid "less than a minute ago" -msgstr "" +msgstr "меньше минуты назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:620 msgid "about a minute ago" -msgstr "" +msgstr "примерно минуту назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:621 #, python-format msgid "%d minutes ago" -msgstr "" +msgstr "%d минут назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:622 msgid "about an hour ago" -msgstr "" +msgstr "примерно час назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:623 #, python-format msgid "%d hours ago" -msgstr "" +msgstr "%d часов назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:624 msgid "a day ago" -msgstr "" +msgstr "день назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:625 #, python-format msgid "%d days ago" -msgstr "" +msgstr "%d дней назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:626 msgid "about a month ago" -msgstr "" +msgstr "примерно месяц назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:627 #, python-format msgid "%d months ago" -msgstr "" +msgstr "%d месяцев/месяца назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:628 msgid "about a year ago" -msgstr "" +msgstr "примерно год назад" #. openerp-web #: addons/web/static/src/js/coresetup.js:629 #, python-format msgid "%d years ago" -msgstr "" +msgstr "%d лет назад" #. openerp-web #: addons/web/static/src/js/data_export.js:6 @@ -290,18 +290,18 @@ msgstr "" #: addons/web/static/src/js/search.js:948 #, python-format msgid "Filter on: %s" -msgstr "" +msgstr "Фильтр по: %s" #. openerp-web #: addons/web/static/src/js/search.js:999 msgid "Filter" -msgstr "" +msgstr "Фильтр" #. openerp-web #: addons/web/static/src/js/search.js:1108 #, python-format msgid "Group by: %s" -msgstr "" +msgstr "Группировать по: %s" #. openerp-web #: addons/web/static/src/js/search.js:1132 @@ -312,7 +312,7 @@ msgstr "" #: addons/web/static/src/js/search.js:1267 #, python-format msgid "Search %(field)s for: %(value)s" -msgstr "" +msgstr "Искать %(field)s для: %(value)s" #. openerp-web #: addons/web/static/src/js/search.js:869 @@ -339,7 +339,7 @@ msgstr "Нет" #: addons/web/static/src/js/search.js:1416 #, python-format msgid "Search %(field)s at: %(value)s" -msgstr "" +msgstr "Искать %(field)s в: %(value)s" #. openerp-web #: addons/web/static/src/xml/base.xml:1286 @@ -349,13 +349,13 @@ msgstr "Фильтры" #. openerp-web #: addons/web/static/src/js/search.js:1762 msgid "Advanced" -msgstr "" +msgstr "Расширенный" #. openerp-web #: addons/web/static/src/js/search.js:1853 #, python-format msgid "%(field)s %(operator)s \"%(value)s\"" -msgstr "" +msgstr "%(field)s %(operator)s \"%(value)s\"" #. openerp-web #: addons/web/static/src/js/search.js:1341 @@ -633,12 +633,12 @@ msgstr "Добавить: " #. openerp-web #: addons/web/static/src/js/view_form.js:4230 msgid "Save As..." -msgstr "" +msgstr "Сохранить как..." #. openerp-web #: addons/web/static/src/js/view_form.js:4230 msgid "The field is empty, there's nothing to save !" -msgstr "" +msgstr "Поле пусто, нечего сохранять !" #. openerp-web #: addons/web/static/src/js/view_list.js:8 @@ -680,7 +680,7 @@ msgstr "Внимание" #. openerp-web #: addons/web/static/src/js/view_list.js:716 msgid "You must select at least one record." -msgstr "" +msgstr "Вы должны выбрать хотя бы одну запись ." #. openerp-web #: addons/web/static/src/js/view_list.js:1243 @@ -728,17 +728,17 @@ msgstr "Не удалось найти определение текущего #. openerp-web #: addons/web/static/src/js/views.js:716 msgid "Print" -msgstr "" +msgstr "Печать" #. openerp-web #: addons/web/static/src/js/views.js:717 msgid "Attachment" -msgstr "" +msgstr "Вложение" #. openerp-web #: addons/web/static/src/js/views.js:718 addons/web/static/src/xml/base.xml:276 msgid "More" -msgstr "" +msgstr "Еще" #. openerp-web #: addons/web/static/src/js/views.js:810 @@ -758,12 +758,12 @@ msgstr "Вы должны выбрать хотя бы одну запись." #. openerp-web #: addons/web/static/src/js/views.js:875 msgid "Uploading..." -msgstr "" +msgstr "Загрузка..." #. openerp-web #: addons/web/static/src/js/views.js:885 msgid "Do you really want to delete this attachment ?" -msgstr "" +msgstr "Вы действительно хотите удалить это вложение?" #. openerp-web #: addons/web/static/src/js/views.js:962 @@ -913,7 +913,7 @@ msgstr "Пароль Администратора:" #. openerp-web #: addons/web/static/src/xml/base.xml:95 msgid "Confirm password:" -msgstr "Подтверждение пароля:" +msgstr "Подтвердите пароль:" #. openerp-web #: addons/web/static/src/xml/base.xml:109 @@ -960,17 +960,17 @@ msgstr "Подтвердить мастер-пароль:" #. openerp-web #: addons/web/static/src/xml/base.xml:325 msgid "About OpenERP" -msgstr "" +msgstr "Об OpenERP" #. openerp-web #: addons/web/static/src/xml/base.xml:327 msgid "Log out" -msgstr "" +msgstr "Выход" #. openerp-web #: addons/web/static/src/xml/base.xml:333 msgid "Activate the developer mode" -msgstr "" +msgstr "Включить режим разработчика" #. openerp-web #: addons/web/static/src/xml/base.xml:1820 @@ -1030,12 +1030,12 @@ msgstr "Пароль ещё раз:" #. openerp-web #: addons/web/static/src/xml/base.xml:390 msgid "Open" -msgstr "" +msgstr "Открыть" #. openerp-web #: addons/web/static/src/xml/base.xml:390 msgid "ERP" -msgstr "" +msgstr "ERP" #. openerp-web #: addons/web/static/src/xml/base.xml:477 @@ -1050,7 +1050,7 @@ msgstr "Просмотр Лога (доступ на чтение)" #. openerp-web #: addons/web/static/src/xml/base.xml:450 msgid "Toggle Form Layout Outline" -msgstr "" +msgstr "Переключить структуры макета формы" #. openerp-web #: addons/web/static/src/xml/base.xml:479 @@ -1115,28 +1115,28 @@ msgstr "Дата изменения:" #. openerp-web #: addons/web/static/src/xml/base.xml:518 msgid "Delete this attachment" -msgstr "" +msgstr "Удалить вложение" #. openerp-web #: addons/web/static/src/xml/base.xml:523 msgid "/web/binary/upload_attachment" -msgstr "" +msgstr "/web/binary/upload_attachment" #. openerp-web #: addons/web/static/src/xml/base.xml:527 msgid "Add..." -msgstr "" +msgstr "Добавить..." #. openerp-web #: addons/web/static/src/xml/base.xml:622 #: addons/web/static/src/xml/base.xml:687 msgid "or" -msgstr "" +msgstr "или" #. openerp-web #: addons/web/static/src/xml/base.xml:687 msgid "Discard" -msgstr "" +msgstr "Отменить" #. openerp-web #: addons/web/static/src/xml/base.xml:806 @@ -1242,13 +1242,13 @@ msgstr "Выбрать дату" #. openerp-web #: addons/web/static/src/xml/base.xml:948 msgid "Open Resource" -msgstr "" +msgstr "Открыть ресурс" #. openerp-web #: addons/web/static/src/xml/base.xml:1162 #: addons/web/static/src/xml/base.xml:1205 msgid "Set Image" -msgstr "Назначить изображение" +msgstr "Установить изображение" #. openerp-web #: addons/web/static/src/js/view_form.js:1623 @@ -1263,12 +1263,12 @@ msgstr "Очистить" #: addons/web/static/src/xml/base.xml:1179 #: addons/web/static/src/xml/base.xml:1230 msgid "Uploading ..." -msgstr "Загружаю ..." +msgstr "Загружается ..." #. openerp-web #: addons/web/static/src/xml/base.xml:1066 msgid "width: 83px;" -msgstr "" +msgstr "ширина: 83px ;" #. openerp-web #: addons/web/static/src/xml/base.xml:1207 @@ -1320,7 +1320,7 @@ msgstr "Поле" #. openerp-web #: addons/web/static/src/xml/base.xml:1205 msgid "Advanced Search..." -msgstr "" +msgstr "Расширенный поиск..." #. openerp-web #: addons/web/static/src/xml/base.xml:1287 @@ -1355,22 +1355,22 @@ msgstr "(Имеющийся фильтр с таким же имененем б #. openerp-web #: addons/web/static/src/xml/base.xml:1376 msgid "Custom Filters" -msgstr "" +msgstr "Настраиваемые фильтры" #. openerp-web #: addons/web/static/src/xml/base.xml:1379 msgid "Save current filter" -msgstr "" +msgstr "Сохранить текущий фильтр" #. openerp-web #: addons/web/static/src/xml/base.xml:1381 msgid "Filter name" -msgstr "" +msgstr "Название фильтра" #. openerp-web #: addons/web/static/src/xml/base.xml:1383 msgid "Share with all users" -msgstr "" +msgstr "Совместно со всеми пользователями" #. openerp-web #: addons/web/static/src/js/search.js:298 @@ -1381,32 +1381,32 @@ msgstr "Добавить на Панель" #. openerp-web #: addons/web/static/src/xml/base.xml:1394 msgid "Title of new Dashboard item" -msgstr "" +msgstr "Название нового элемента панели" #. openerp-web #: addons/web/static/src/xml/base.xml:1395 msgid "save" -msgstr "" +msgstr "сохранить" #. openerp-web #: addons/web/static/src/xml/base.xml:1399 msgid "Select Dashboard to add this filter to" -msgstr "" +msgstr "Выберите панель, чтобы добавить этот фильтр" #. openerp-web #: addons/web/static/src/xml/base.xml:1406 msgid "Advanced Search" -msgstr "" +msgstr "Расширенный поиск" #. openerp-web #: addons/web/static/src/xml/base.xml:1411 msgid "Add a condition" -msgstr "" +msgstr "Добавить условие" #. openerp-web #: addons/web/static/src/xml/base.xml:1412 msgid "Apply" -msgstr "" +msgstr "Применить" #. openerp-web #: addons/web/static/src/xml/base.xml:1509 @@ -1426,9 +1426,9 @@ msgid "" " You can export all data or only the fields that can be " "reimported after modification." msgstr "" -"Этот мастер экспортирует все найденные данные в CSV файл.\n" -" Вы можете экспортровать все данные либо только те поля которые " -"могут быть в последствии импортированны." +"Этот мастер экспортирует все найденные данные в CSV-файл.\n" +" Вы можете экспортировать все данные, либо только те поля которые " +"должны быть в последствии импортированы после изменений." #. openerp-web #: addons/web/static/src/xml/base.xml:1624 @@ -1562,7 +1562,7 @@ msgstr "" #. openerp-web #: addons/web/static/src/xml/base.xml:1713 msgid "--- Don't Import ---" -msgstr "" +msgstr "--- Не импортировать ---" #. openerp-web #: addons/web/static/src/xml/base.xml:1809 diff --git a/addons/web_calendar/i18n/ru.po b/addons/web_calendar/i18n/ru.po index aee0856a51d..c286c58bf1a 100644 --- a/addons/web_calendar/i18n/ru.po +++ b/addons/web_calendar/i18n/ru.po @@ -8,14 +8,14 @@ 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-13 11:40+0000\n" -"Last-Translator: Aleksei Motsik \n" +"PO-Revision-Date: 2012-10-23 14:08+0000\n" +"Last-Translator: Chertykov Denis \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-10-21 05:03+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-10-24 05:20+0000\n" +"X-Generator: Launchpad (build 16179)\n" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:11 @@ -25,114 +25,114 @@ msgstr "Календарь" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:70 msgid "Filter" -msgstr "" +msgstr "Фильтр" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:144 msgid "Today" -msgstr "" +msgstr "Сегодня" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:145 msgid "Day" -msgstr "" +msgstr "День" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:146 msgid "Week" -msgstr "" +msgstr "Неделя" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:147 msgid "Month" -msgstr "" +msgstr "Месяц" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:148 msgid "New event" -msgstr "" +msgstr "Новое событие" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:149 msgid "Save" -msgstr "" +msgstr "Сохранить" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:150 msgid "Cancel" -msgstr "" +msgstr "Отмена" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:151 msgid "Details" -msgstr "" +msgstr "Подробности" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:152 msgid "Edit" -msgstr "" +msgstr "Изменить" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:153 msgid "Delete" -msgstr "" +msgstr "Удалить" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:155 msgid "Event will be deleted permanently, are you sure?" -msgstr "" +msgstr "Событие будет удалено навсегда, вы уверены?" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:156 #: addons/web_calendar/static/src/js/calendar.js:169 msgid "Description" -msgstr "" +msgstr "Описание" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:157 msgid "Time period" -msgstr "" +msgstr "Промежуток времени" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:158 msgid "Full day" -msgstr "" +msgstr "Полный день" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:161 msgid "Do you want to edit the whole set of repeated events?" -msgstr "" +msgstr "Вы хотите, изменить все повторяющиеся события?" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:162 msgid "Repeat event" -msgstr "" +msgstr "Повтор события" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:163 msgid "Disabled" -msgstr "" +msgstr "Отключено" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:164 msgid "Enabled" -msgstr "" +msgstr "Включено" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:167 #: addons/web_calendar/static/src/js/calendar.js:175 msgid "Agenda" -msgstr "" +msgstr "Повестка дня" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:168 msgid "Date" -msgstr "" +msgstr "Дата" #. openerp-web #: addons/web_calendar/static/src/js/calendar.js:172 msgid "Year" -msgstr "" +msgstr "Год" #. openerp-web #: addons/web_calendar/static/src/xml/web_calendar.xml:5 diff --git a/addons/web_graph/i18n/ru.po b/addons/web_graph/i18n/ru.po index 7e3316451b2..fcb97444257 100644 --- a/addons/web_graph/i18n/ru.po +++ b/addons/web_graph/i18n/ru.po @@ -8,14 +8,14 @@ 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-13 11:41+0000\n" -"Last-Translator: Aleksei Motsik \n" +"PO-Revision-Date: 2012-10-23 14:06+0000\n" +"Last-Translator: Chertykov Denis \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-10-21 05:03+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-10-24 05:20+0000\n" +"X-Generator: Launchpad (build 16179)\n" #. openerp-web #: addons/web_graph/static/src/js/graph.js:19 @@ -25,74 +25,74 @@ msgstr "График" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:5 msgid "Graph Options" -msgstr "" +msgstr "Параметры графика" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:7 msgid "Graph Mode" -msgstr "" +msgstr "Графический вид" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:11 msgid "Pie" -msgstr "" +msgstr "Круговая диаграмма" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:12 msgid "Bars" -msgstr "" +msgstr "Линейчатая" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:14 msgid "Lines" -msgstr "" +msgstr "Строчная" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:15 msgid "Areas" -msgstr "" +msgstr "Области" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:18 msgid "Radar" -msgstr "" +msgstr "Радар" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:20 msgid "Legend" -msgstr "" +msgstr "Обозначения" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:24 msgid "Hidden" -msgstr "" +msgstr "Скрытый" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:25 msgid "Inside" -msgstr "" +msgstr "Внутри" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:26 msgid "Top" -msgstr "" +msgstr "Сверху" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:28 msgid "Actions" -msgstr "" +msgstr "Действия" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:32 msgid "Switch Axis" -msgstr "" +msgstr "Переключение осей" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:33 msgid "Show Data" -msgstr "" +msgstr "Показать данные" #. openerp-web #: addons/web_graph/static/src/xml/web_graph.xml:34 msgid "Download as PNG" -msgstr "" +msgstr "Скачать как PNG" diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index 3f1dbfa9389..0e97644b80e 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-09-24 14:20+0000\n" +"PO-Revision-Date: 2012-10-23 18:39+0000\n" "Last-Translator: Chertykov Denis \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:03+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-10-24 04:55+0000\n" +"X-Generator: Launchpad (build 16179)\n" #. module: base #: model:res.country,name:base.sh @@ -76,7 +76,7 @@ msgstr "" "Модуль ведения проектов отслеживает многоуровневые проекты, задачи, " "проделанную работу над задачами, и т. д. \n" "=============================================================================" -"=========\n" +"===============================\n" "\n" "Позволяет выполнять планирование, определять порядок задач и т. д.\n" "\n" @@ -163,7 +163,7 @@ msgid "" msgstr "" "\n" "Организация и управление мероприятиями.\n" -"======================================\n" +"=======================================\n" "\n" "Этот модуль позволяет вам создавать ретро планирование для управления вашими " "мероприятиями.\n" @@ -660,7 +660,8 @@ msgstr "" "\n" "Модуль для автоматизации отсылки писем по неоплаченным счетам, с " "многоуровневыми напоминаниями.\n" -"==========================================================================\n" +"=============================================================================" +"==================\n" "\n" "Вы можете определить ваши многоуровневые напоминания через меню:\n" " Бухгалтерия/Настройка/Разное/Напоминания\n" @@ -978,7 +979,7 @@ msgstr "" "Этот модуль дает администратору возможность отслеживать каждое действие " "пользователя над всеми объектами системы.\n" "=============================================================================" -"=================\n" +"====================================\n" "\n" "Администратор может подписаться на правила чтения, записи и\n" "удаления над объектами и проверять журнал.\n" @@ -1249,7 +1250,7 @@ msgid "" msgstr "" "Отслеживание вашего планирования\n" "Этот модуль помогает вам управлять вашим планированием.\n" -"===============================================\n" +"=======================================================\n" "\n" "Этот модуль основан на аналитическом учёте и тотально интегрирован с\n" "* вводом данных табелей\n" @@ -1484,7 +1485,7 @@ msgid "" msgstr "" "\n" "Добавляет дополнительные даты к заказам.\n" -"====================================================\n" +"========================================\n" "\n" "Вы можете добавить следующие дополнительные даты:\n" " * Дата запроса\n" @@ -1533,7 +1534,7 @@ msgid "" msgstr "" "\n" "Это полная система управления документами.\n" -"==============================================\n" +"==========================================\n" "\n" " * Авторизация пользователя\n" " * Индексация документа: - файлы .pptx и .docx не поддержаны в платформе " @@ -1623,7 +1624,7 @@ msgstr "" "Это тестовый модуль, который показывает поддержку HTML тегов в обычном виде " "XML формы.\n" "=============================================================================" -"\n" +"=========\n" "\n" "Создаёт пример вида формы используя HTML теги. Это видно только в OpenERP " "веб.\n" @@ -1724,7 +1725,7 @@ msgid "" msgstr "" "\n" "Организация и управление мероприятиями.\n" -"======================================\n" +"=======================================\n" "\n" "Этот модуль позволяет вам\n" " * управлять вашими мероприятиями и их регистрацией\n" @@ -1841,7 +1842,8 @@ msgstr "" "\n" "Этот модуль добавляет общий инструмент совместного доступа для текущей базы " "данных OpenERP.\n" -"========================================================================\n" +"=============================================================================" +"==============\n" "\n" "Он добавляет кнопку 'Совместный доступ', которая доступна в веб-клиенте для\n" "совместного использования данных OpenERP любого сорта с сотрудниками, " @@ -1954,7 +1956,7 @@ msgstr "" " всегда доступна,но допускает номера, которые представлены возможно не " "верно,\n" " или более того не допустимы.\n" -" * Когда параметр \\\"Проверка НДС VIES\\\" разрешён (в настройке " +" * Когда параметр \"Проверка НДС VIES\" разрешён (в настройке " "пользовательской\n" " компании), номера НДС будут отправлены на онлайновую VIES\n" " базу данных ЕС, которая тщательно проверит, что номер допустим и\n" @@ -2013,7 +2015,7 @@ msgstr "" "Этот модуль позволяет вашему пользователю легко и эффективно участвовать в " "инновациях на предприятии.\n" "=============================================================================" -"===============\n" +"========================\n" "\n" "Он позволяет каждому выразить идеи относительно различных предметов.\n" "Далее, другие пользователи могут комментировать эти идеи и голосовать за " @@ -2378,7 +2380,7 @@ msgstr "" "Модули журнала продаж позволяют вам распределять ваши продажи и поставки " "(комплектовочные списки) между различными журналами.\n" "=============================================================================" -"===========================================\n" +"================================================\n" "\n" "Этот модуль весьма полезен для больших компаний, которые\n" "работают через подразделения.\n" @@ -2438,7 +2440,7 @@ msgid "" msgstr "" "\n" "Этот модуль нацелен на управление расходами сотрудника.\n" -"===============================================\n" +"=======================================================\n" "\n" "Реализован весь рабочий процесс:\n" " * черновой расход\n" @@ -2578,12 +2580,12 @@ msgid "" msgstr "" "\n" "Управляет рабочими местами и процессом найма.\n" -"==================================================\n" +"=============================================\n" "\n" "Он интегрирован с модулем опроса для позволения вам определить интервью для " "различных работ.\n" "\n" -"Этот модуль интегрирован с почтовым шлюзом для автоматического отслуживания " +"Этот модуль интегрирован с почтовым шлюзом для автоматического обслуживания " "e-mail\n" "отправленных на jobs@YOURCOMPANY.com. Он также интегрирован с системой " "управления\n" @@ -2667,9 +2669,8 @@ msgid "" " " msgstr "" "\n" -"\\n\n" -"Управление помощью.\\n\n" -"====================\\n\n" +"Управление помощью.\n" +"===================\n" "\n" "Подобно записи и обработке претензий, помощь и поддержка являются хорошими " "инструментами\n" @@ -2701,7 +2702,7 @@ msgid "" msgstr "" "\n" "Модуль для управления ресурсами.\n" -"===============================\n" +"================================\n" "\n" "Ресурс представляет что-то, что может быть запланировано\n" "(разработчик по задаче или рабочий центр по производственным заказам).\n" @@ -2809,7 +2810,7 @@ msgid "" msgstr "" "\n" "Основной модуль для управления разнесением аналитики и заказами продаж.\n" -"=================================================================\n" +"=======================================================================\n" "\n" "Использование этого модуля позволит вам связать аналитические счета с " "заказами продаж.\n" @@ -2933,8 +2934,7 @@ msgid "" msgstr "" "\n" "Этот модуль реализует все концепции методологии дела-в-порядке\n" -"=============================================================================" -"======\n" +"==============================================================\n" "\n" "Этот модуль реализует простой персональный список дел основанный на задачах. " "Он добавляет в\n" @@ -3127,7 +3127,7 @@ msgid "" msgstr "" "\n" "Этот модуль добавляет планшет во все канбан виды проекта\n" -"==================================================\n" +"========================================================\n" " " #. module: base @@ -3208,7 +3208,7 @@ msgstr "" "Настройте нужную вам точность цены для различных видов использования: " "бухгалтерия, продажи, закупки, и т.д.\n" "=============================================================================" -"=========================\n" +"==============================\n" "\n" "Десятичная точность настроена по компании.\n" @@ -3230,8 +3230,7 @@ msgid "" msgstr "" "\n" "Этот модуль обслуживает в OpenERP план счетов и налогов для Польши.\n" -"=============================================================================" -"=====\n" +"===================================================================\n" "\n" "To jest moduł do tworzenia wzorcowego planu kont i podstawowych ustawień do " "podatków\n" @@ -3276,7 +3275,7 @@ msgid "" msgstr "" "\n" "Этот модуль позволяет пользователям выполнять сегментацию партнёров.\n" -"=================================================================\n" +"====================================================================\n" "\n" "Он использует критерии профилей из прежнего модуля сегментации и улучшает " "их. Благодаря новой концепции опросника. Теперь вы можете перегруппировывать " @@ -3545,7 +3544,7 @@ msgid "" msgstr "" "\n" "Этот модуль предусматривает шаблон Wiki ЧаВо.\n" -"=========================================\n" +"=============================================\n" "\n" "Он предусматривает демо данные, для создания Wiki группы и Wiki страниц\n" "для Wiki ЧаВо.\n" @@ -3725,27 +3724,27 @@ msgid "" msgstr "" "\n" "Основной модуль для управления предложениями цен и заказами на продажу.\n" -"======================================================\n" +"=======================================================================\n" "\n" "Рабочий процесс с шагами подтверждения:\n" -"-------------------------------\n" +"---------------------------------------\n" " * предложение цен -> заказ продаж -> выставление счёта\n" "\n" "Способы выставления счёта:\n" -"------------------\n" +"--------------------------\n" " * счёт по заказу (до или после перевозки)\n" " * счёт по доставке\n" " * счёт по табелям\n" " * авансовый счёт\n" "\n" "Предпочтения партнёров:\n" -"---------------------\n" +"-----------------------\n" " * перевозка\n" " * выставление счёта\n" " * инкотерм\n" "\n" "Остатки ТМЦ и цены\n" -"--------------------------\n" +"------------------\n" "\n" "Способы доставки:\n" "-----------------\n" @@ -3754,7 +3753,7 @@ msgstr "" " * стоимость доставки\n" "\n" "Панель руководителя продаж, которая включает:\n" -"------------------------------------------\n" +"---------------------------------------------\n" " * заявки\n" " * продажи по месяцу\n" " * график продаж по продавцу за последние 90 дней\n" @@ -3966,10 +3965,10 @@ msgid "" msgstr "" "\n" "Модуль управления оплатой по счётам.\n" -"=================================\n" +"====================================\n" "\n" "Этот модуль предоставляет:\n" -"----------------------\n" +"--------------------------\n" "* более эффективный путь для управления оплатой счёта.\n" "* основной механизм для легкого подключения различных автоматизированных " "платежей.\n" @@ -4003,10 +4002,11 @@ msgstr "" "\n" "Этот модуль предоставляет некоторые возможности для улучшения макета " "счетов.\n" -"=========================================================================\n" +"=============================================================================" +"\n" "\n" "Он даёт вам возможность:\n" -"--------------------------------\n" +"------------------------\n" " * упорядочения всех позиций счёта\n" " * добавки заголовков, строк комментариев, строк подитога\n" " * черчения горизонтальных линий и помещения разрывов страниц\n" @@ -4429,11 +4429,11 @@ msgid "" msgstr "" "\n" "Права бухгалтерского доступа.\n" -"=========================\n" +"=============================\n" "\n" "Этот модуль даёт пользователю администратору доступ ко всем бухгалтерским " "возможностям\n" -"типа записей журналов и планов счетов.\\n\n" +"типа записей журналов и планов счетов.\n" "\n" "Он назначает права доступа руководителя и пользователя администратору, и " "только\n" @@ -4494,7 +4494,7 @@ msgstr "" "Модуль счёта ваучера включает все основные требования записей ваучера для " "банка, наличных, продаж, закупки, расхода, контра и т.п.\n" "=============================================================================" -"=======================================================\n" +"=====================================================\n" "\n" " * Запись ваучера\n" " * Расписка ваучера\n" @@ -4578,11 +4578,11 @@ msgstr "" "Что здесь было сделано:\n" "\n" " * приспособлен владелец позиции аналитики (= для компании, которая владеет " -"общим учётом связанным с позицией аналитики)\\n\n" +"общим учётом связанным с позицией аналитики)\n" " * добавлена мульти-валютность по позициям аналитики (подобно финансовому " "учёту)\n" -" * коррекция всех индикаторов \\\"затраты\\\" в счёт аналитики для их " -"основы на подходящей валюте (компании владельца)\n" +" * коррекция всех индикаторов \"затраты\" в счёт аналитики для их основы на " +"подходящей валюте (компании владельца)\n" " * по умолчанию, ничего не меняется для представления одиночной компании.\n" "\n" "В результате, теперь мы можем реально разделять один и тот же счёт аналитики " @@ -4649,7 +4649,7 @@ msgstr "" "Эти модули позволяют вам отследить претензии и жалобы ваших " "покупателей/поставщиков.\n" "=============================================================================" -"===\n" +"=======\n" "\n" "Они полностью интегрированы со шлюзом e-mail, так что вы можете создать\n" "автоматически новые претензии основанные на приходящих e-mail.\n" @@ -4738,7 +4738,7 @@ msgid "" msgstr "" "\n" "Этот модуль позволяет вам анонимизировать базу данных.\n" -"===============================================\n" +"======================================================\n" "\n" "Этот модуль позволяет вам для данной базы данных секретно хранить ваши " "данные.\n" @@ -4780,8 +4780,7 @@ msgid "" msgstr "" "\n" "Этот модуль помогает настроить систему при установке новой базы данных.\n" -"=============================================================================" -"===\n" +"=======================================================================\n" "\n" "Показывает вам список приложений для установки.\n" "\n" @@ -4830,7 +4829,7 @@ msgstr "" "Модуль закупки для создания заказа закупки для приобретения товаров у " "поставщика.\n" "=============================================================================" -"============\n" +"====\n" "\n" "Создаётся счёт поставщика для отдельного заказа закупки.\n" "\n" @@ -4909,7 +4908,7 @@ msgstr "" "Этот модуль используемый OpenERP SA для перенаправления покупателей к своим " "партнёрам, основан на гео-позиционировании.\n" "=============================================================================" -"=========================\\n\n" +"==========================================\n" "\n" "Вы можете гео-позиционировать ваши предложения используя этот модуль.\n" "\n" @@ -5074,7 +5073,7 @@ msgid "" msgstr "" "\n" "Создание повторяющихся документов.\n" -"===========================\n" +"==================================\n" "\n" "Этот модуль позволяет создавать новые документы и добавлять подписки на эти " "документы.\n" @@ -5278,7 +5277,8 @@ msgstr "" "\n" "Установщик скрытых дополнений типа 2-го завтрака, опроса, идеи, совместного " "использования и т.п.\n" -"===============================================================\n" +"=============================================================================" +"===================\n" "\n" "Делает настройку скрытых дополнений доступной, из которой вы можете " "установить\n" @@ -5393,7 +5393,7 @@ msgid "" msgstr "" "\n" "С этим модулем активируется WebDAV сервер для документов.\n" -"===============================================================\n" +"=========================================================\n" "\n" "Вы можете использовать любой совместимый браузер для удалённого просмотра " "вложений OpenObject.\n" @@ -5406,12 +5406,11 @@ msgstr "" " ; enable = True ; обслуживать webdav через http(s) серверы\n" " ; vdir = webdav ; каталог, который будет обслуживаться webdav, по\n" " ; умолчанию это значение означает, что этот webdav будет\n" -" ; на \\\"http://localhost:8069/webdav/\n" +" ; на \"http://localhost:8069/webdav/\n" " ; verbose = True ; включает подробные сообщения webdav\n" " ; debug = True ; включает отладочные сообщения webdav\n" " ; Поскольку сообщения маршрутизируются в журналирование python-а с\n" -" ; уровнями \\\"debug\\\" и \\\"debug_rpc\\\" соответственно, вы можете " -"оставить\n" +" ; уровнями \"debug\" и \"debug_rpc\" соответственно, вы можете оставить\n" " ; эти параметры включёнными\n" "\n" "Также реализован IETF RFC 5785 для открытия сервисов на сервере http,\n" @@ -5440,7 +5439,7 @@ msgid "" msgstr "" "\n" "Этот модуль используется для опроса.\n" -"==================================\n" +"====================================\n" "\n" "Он зависит от ответов или обзоров некоторых вопросов различных " "пользователей.\n" @@ -5622,7 +5621,7 @@ msgid "" msgstr "" "\n" "Этот модуль позволяет вам управлять вашими требованиями закупки.\n" -"===========================================================\n" +"================================================================\n" "\n" "Когда создан заказ закупки, вы получаете предложение для сохранения " "связанного требования.\n" @@ -5723,7 +5722,7 @@ msgstr "" "Этот модуль предусматривает возможность одновременной установки " "пользователем модулей производства и продаж.\n" "=============================================================================" -"=======\n" +"===============================\n" "\n" "Он обычно используется когда вы хотите отслеживать заказы\n" "производства созданные из заказа продаж.\n" @@ -5771,8 +5770,8 @@ msgstr "" "Создавайте ваши счета из затрат, записей табеля...\n" "Модуль для создания счетов основанных на затратах (трудовые ресурсы, " "расходы...).\n" -"============================================================================" -"\n" +"=============================================================================" +"====\n" "\n" "Вы можете определить прайс-листы в счёте аналитики, сделав некоторые " "теоретические отчёты о\n" @@ -6113,7 +6112,7 @@ msgstr "" "Модуль управления инвентаризацией OpenERP может обслуживать несколько " "складов, множественные и структурированные расположения запасов.\n" "=============================================================================" -"=========================\n" +"=========================================================\n" "\n" "Благодаря управлению двойной записью, управление инвентаризацией мощное и " "гибкое:\n" @@ -6210,7 +6209,8 @@ msgstr "" "\n" "Этот модуль позволяет бухгалтерам управлять аналитическими и перекрёстными " "бюджетами.\n" -"==========================================================================\n" +"=============================================================================" +"========\n" "\n" "Как только главные бюджеты и бюджеты определены (в Бухгалтерия/Бюджеты/),\n" "руководители проекта могут установить плановую сумму по каждому счёту " @@ -6468,7 +6468,7 @@ msgstr "" "Этот модуль позволяет использовать несколько аналитических планов согласно " "общему журналу.\n" "=============================================================================" -"======\n" +"=============\n" "\n" "Здесь создаются несколько позиций аналитики, когда счёт или проводки\n" "подтверждены.\n" @@ -6560,7 +6560,7 @@ msgstr "" "Это модуль для изменения вида счёта аналитики для показа важных данных " "руководителю проекта сервисных компаний.\n" "=============================================================================" -"======================================\n" +"==================================\n" "\n" "Добавляет меню для показа относящейся к каждому руководителю информации.\n" "Вы также можете видеть суммарный отчёт по счёту аналитики\n" @@ -6784,7 +6784,7 @@ msgid "" msgstr "" "\n" "Общая система выплат.\n" -"=======================\n" +"=====================\n" "\n" " * Подробности о сотруднике\n" " * Договора сотрудника\n" @@ -6869,7 +6869,7 @@ msgid "" msgstr "" "\n" "Позволяет пользователю создать свой вариант панели.\n" -"========================================\n" +"===================================================\n" "\n" "Этот модуль также создаёт административную панель.\n" "\n" @@ -6966,7 +6966,7 @@ msgid "" msgstr "" "\n" "Общая подсистема электронной почты с хранением сообщений и очередей.\n" -"==========================================================\n" +"====================================================================\n" "\n" "Эта подсистема e-mail не предназначена для использования как автономное\n" "приложение, но предусматривает унифицированное представление e-mail, " @@ -7032,7 +7032,7 @@ msgid "" msgstr "" "\n" "Этот модуль позволяет вам управлять вашими контактами\n" -"==============================================\n" +"=====================================================\n" "\n" "Он позволяет вам определить:\n" " * контакты не связанные с партнёром,\n" @@ -7214,7 +7214,7 @@ msgid "" msgstr "" "\n" "Это поддержка интерфейса FTP к системе управления документами.\n" -"================================================================\n" +"==============================================================\n" "\n" "С этим модулем у вас будет возможность доступа к документам не только через " "OpenERP,\n" @@ -7249,7 +7249,7 @@ msgstr "" "Этот модуль позволяет вам определить какова функция по умолчанию " "определённого пользователя на данной учётной записи.\n" "=============================================================================" -"=======================\n" +"========================================\n" "\n" "Это очень полезно, когда пользователь вводит данные своего табеля: значения " "извлечены и поля авто-заполнены. Но возможность смены этих значений остаётся " @@ -7788,7 +7788,7 @@ msgid "" msgstr "" "\n" "Модуль для определения объекта аналитического учёта.\n" -"===============================================\n" +"====================================================\n" "\n" "В OpenERP счета аналитики связаны с общим учётом, но трактуются\n" "полностью независимо. Так вы можете ввести различные аналитические " @@ -7994,9 +7994,8 @@ msgid "" " " msgstr "" "\n" -"\\n\n" "Модуль для управления трудовыми ресурсами.\n" -"=====================================\n" +"==========================================\n" "\n" "Вы можете управлять:\n" " * Сотрудниками и иерархией: вы можете определить вашего сотрудника как " @@ -8113,7 +8112,7 @@ msgid "" msgstr "" "\n" "Добавляет всю информацию в форму сотрудника для управления договорами.\n" -"=============================================================\n" +"======================================================================\n" "\n" " * Семейное положение,\n" " * Номер соцзащиты,\n" @@ -8148,7 +8147,8 @@ msgstr "" "\n" "Этот модуль добавляет сокращение по одному или нескольким предложениям в " "CRM.\n" -"===========================================================================\n" +"=============================================================================" +"=\n" "\n" "Это сокращение позволяет вам создать заказ продаж основанный на выбранном " "вопросе.\n" @@ -8279,7 +8279,7 @@ msgid "" msgstr "" "\n" "Позволяет вам добавить способы доставки в заказы продаж и комплектование.\n" -"==============================================================\n" +"=========================================================================\n" "\n" "Вы можете определить для цен вашу собственную перевозку и сетки доставки.\n" "При создании счетов из комплектования, OpenERP способен добавить и " @@ -8330,7 +8330,7 @@ msgstr "" "Этот модуль поддерживает англо-саксонскую бухгалтерскую методологию путём " "смены бухгалтерской логики складских операций.\n" "=============================================================================" -"========================================\n" +"===========================================\n" "\n" "Различие бухгалтерий между англо-саксонскими странами\n" "и рейнскими, или также называемыми континентальными странами, заключается в " @@ -8391,7 +8391,7 @@ msgid "" msgstr "" "\n" "Добавляет кнопку \"Отзыв\" в заголовок.\n" -"==============================\n" +"=====================================\n" "\n" "Предлагает отзыв пользователя OpenERP, через uservoice.\n" " " @@ -8464,7 +8464,7 @@ msgid "" msgstr "" "\n" "Двойное подтверждение для закупок превысивших минимум суммы.\n" -"=========================================================\n" +"============================================================\n" "\n" "Этот модуль изменяет процесс закупки в порядке подтверждения закупок,\n" "которые превышают минимум суммы заданный мастером настройки.\n" @@ -8558,7 +8558,7 @@ msgid "" msgstr "" "\n" "Изменяет даты соответственно смене конечной даты в проекте.\n" -"======================================================\n" +"===========================================================\n" "\n" "Если конечная дата проекта изменена, то дата конечного срока и дата начала " "будут соответственно изменены для всех задач.\n" @@ -8703,7 +8703,7 @@ msgstr "" "Этот модуль дополняет приложение склада эффективной реализацией нисходящих и " "восходящих потоков инвентаризации.\n" "=============================================================================" -"===============================\n" +"==================================\n" "\n" "Обычно он используется для:\n" " * Управления цепочками изготовления товаров\n" @@ -8723,7 +8723,7 @@ msgstr "" "Демонстрационные данные товара ЦП1:\n" "\n" "Нисходящие потоки\n" -"----------\n" +"-----------------\n" "Нисходящие потоки применимы, когда прибытие определённых товаров в данное " "место хранения должно всегда\n" "сопровождаться соответствующим перемещением в другое место хранения, не " @@ -8744,7 +8744,7 @@ msgstr "" "параметров.\n" "\n" "Восходящие потоки\n" -"----------\n" +"-----------------\n" "Восходящие потоки несколько отличны от нисходящих потоков, в том, что они " "относятся не к\n" "обработке перемещений товара, а скорее к обработке заказов снабжения.\n" @@ -8775,7 +8775,7 @@ msgstr "" "товаре (т.е. конечное место хранения этого заказа снабжения).\n" "\n" "Пример использования\n" -"--------\n" +"--------------------\n" "\n" "Вы можете использовать следующие демонстрационные данные:\n" " ЦП1: продажа ЦП1 из магазина 1 и запуск планировщика\n" @@ -8799,7 +8799,7 @@ msgid "" msgstr "" "\n" "Меню для маркетинга.\n" -"===================\n" +"====================\n" "\n" "Содержит установщик для модулей относящихся к маркетингу.\n" " " @@ -8852,7 +8852,7 @@ msgid "" msgstr "" "\n" "Автоматически создаёт задачи проекта из позиций снабжения\n" -"==========================================================\n" +"=========================================================\n" "\n" "Этот модуль автоматически создаст новую задачу для каждой позиции заказа\n" "снабжения (например, для позиций заказа продажи), если соответствующий " @@ -8934,7 +8934,8 @@ msgstr "" "\n" "Этот модуль может автоматически создать задачи проекта основанные на " "входящих письмах\n" -"===========================================================================\n" +"=============================================================================" +"========\n" "\n" "Позволяет создавать задачи основанные на новых письмах приходящих на данный " "почтовый ящик,\n" @@ -8973,7 +8974,8 @@ msgstr "" "\n" "Этот модуль позволяет вам управлять всеми операциями для управления " "участием.\n" -"=========================================================================\n" +"=============================================================================" +"\n" "\n" "Он поддерживает различные виды участников:\n" "* Свободный участник\n" @@ -8999,7 +9001,7 @@ msgid "" msgstr "" "\n" "Этот модуль предназначен для управления посещаемости работников.\n" -"==================================================\n" +"================================================================\n" "\n" "Поддерживает учёт посещаемости работников на основе\n" "действий (приход/уход) выполненных ими.\n" @@ -9074,10 +9076,10 @@ msgid "" " " msgstr "" "\n" -"Этот модуль поддерживает внутреннюю нумерацию бухгалтерских записей.\n" -"======================================================================\n" +"Этот модуль поддерживает внутреннюю нумерацию бухгалтерских проводок.\n" +"====================================================================\n" "\n" -"Позволяет вам настроить нумерацию бухгалтерских записей.\n" +"Позволяет вам настроить нумерацию бухгалтерских проводок.\n" "\n" "Вы можете подстроить следующие атрибуты нумерации:\n" " * Префикс\n" @@ -9295,7 +9297,7 @@ msgid "" msgstr "" "\n" "Возможности Caldav во встрече.\n" -"===========================\n" +"==============================\n" "\n" " * Совместное использование встречи с другими клиентами календаря типа " "Sunbird\n" @@ -9483,7 +9485,7 @@ msgid "" msgstr "" "\n" "Этот модуль позволяет вам управлять отпусками и запросами отпусков.\n" -"=============================================================\n" +"===================================================================\n" "\n" "Реализует панель для управления трудовыми ресурсами, которая включает:\n" " * Отпуска\n" @@ -9586,7 +9588,7 @@ msgid "" msgstr "" "\n" "Шаблон руководства по качеству.\n" -"========================\n" +"===============================\n" "\n" "Он предусматривает демо-данные, включая Wiki группу и Wiki страницу\n" "для Wiki руководства по качеству.\n" @@ -9636,7 +9638,7 @@ msgid "" msgstr "" "\n" "Это модуль для настройки модулей относящихся к объединению.\n" -"==============================================================\n" +"===========================================================\n" "\n" "Он устанавливает профиль для объединений для обслуживания событий, " "регистраций, членства, продуктов членства (проекты) и т.п.\n" @@ -9724,7 +9726,7 @@ msgid "" msgstr "" "\n" "Это модуль для вычисления снабжения.\n" -"==============================================\n" +"====================================\n" "\n" "В процессе MRP, заказы снабжения создаются для вызова заказов\n" "производства, заказов закупки, распределений запаса и т.д. Заказы снабжения\n" @@ -9843,7 +9845,7 @@ msgstr "" "Этот модуль добавляет новый движок отчёта основанный на библиотеке WebKit " "(wkhtmltopdf) для поддержки очётов разработанных в HTML + CSS.\n" "=============================================================================" -"========================================\n" +"===========================================================\n" "\n" "Структура модуля и некоторый код заимствованы из модуля отчёта OpenOffice.\n" "\n" @@ -9869,7 +9871,7 @@ msgstr "" " http://files.me.com/nbessi/06n92k.mov\n" "\n" "Требования и установка\n" -"-----------------------------\n" +"----------------------\n" "Этот модуль требует библиотеку ``wkthtmltopdf`` для перевода документов HTML " "в\n" "PDF. Необходима версия 0.9.9 или новее, и может быть найдена на " @@ -9886,7 +9888,7 @@ msgstr "" "\n" "\n" "СДЕЛАТЬ\n" -"----\n" +"-------\n" "\n" " * Поддержку активации деактивации JavaScript\n" " * Поддержку разобранного по листам и книжного формата\n" @@ -9990,7 +9992,7 @@ msgid "" msgstr "" "\n" "Этот модуль содержит основную функциональность для системы Caldav.\n" -"===========================================================\n" +"==================================================================\n" "\n" " - Webdav сервер, который предусматривает удалённый доступ к календарю\n" " - Синхронизация календаря используя WebDAV\n" @@ -10132,7 +10134,7 @@ msgid "" msgstr "" "Устанавливает значения по умолчанию для ваших аналитических счетов\n" "Позволяет автоматический выбор аналитических счетов на основе критериев:\n" -"=====================================================================\n" +"========================================================================\n" "\n" "* Товар\n" "* Партнёр\n" @@ -10202,7 +10204,7 @@ msgid "" msgstr "" "\n" "Основной модуль для управления документами (Wiki).\n" -"==========================================\n" +"==================================================\n" "\n" "Отслеживает группы, страницы и историю Wiki.\n" " " @@ -10484,7 +10486,7 @@ msgstr "" "============================================================\n" "\n" "Краткий словарь\n" -"--------------\n" +"---------------\n" "- Период запаса - границы времени (между датой начала и конечной датой) для " "планирования ваших продаж и прогнозов запаса\n" "- Прогноз продаж - количество товаров, которое вы планируете продать в " @@ -10498,7 +10500,7 @@ msgstr "" "подчёркивания, что мы используем количественные значения.\n" "\n" "Для начала\n" -"--------------\n" +"----------\n" "Использование этого модуля производится в три шага:\n" "\n" " * Создание периодов запаса через меню Склад>Настройки>Периоды запаса " @@ -10511,7 +10513,7 @@ msgstr "" "запаса.\n" "\n" "Настройки периода запаса\n" -"--------------------------\n" +"------------------------\n" "У вас есть два пункта меню для периодов в \"Склад > Настройки > Периоды " "запаса\". Это:\n" "\n" @@ -10546,7 +10548,7 @@ msgstr "" "промежутки между периодами, результаты могут быть не предсказуемыми.\n" "\n" "Настройки прогнозов продаж\n" -"-----------------------------\n" +"--------------------------\n" "У вас есть несколько меню для прогноза продаж в \"Продажи > Прогнозы " "продаж\":\n" "\n" @@ -10597,7 +10599,7 @@ msgstr "" "\n" "\n" "МПС или планирование снабжения\n" -"---------------------------\n" +"------------------------------\n" "Планирование МПС заключающееся в строках планирования запаса, используется " "для анализа и возможности ведения снабжения\n" "товарами для каждого относящегося периода запаса и склада.\n" @@ -10672,7 +10674,7 @@ msgstr "" "планирование\".\n" "\n" "Подсчёт количеств моделирования запаса\n" -"------------------------------------------\n" +"--------------------------------------\n" "Значение моделирования запаса - ожидаемое количество запаса в конце " "периода.\n" "Подсчёт всегда начинается с реального имеющегося запаса на начало текущего " @@ -10800,7 +10802,7 @@ msgstr "" "Этот модуль создаёт техническое описание выбранных модулей в " "реструктурированном текстовом формате (RST).\n" "=============================================================================" -"====================\n" +"============================\n" "\n" " * Он использует Sphinx (http://sphinx.pocoo.org) представление RST\n" " * Он создаёт архив (суффикс файла .tgz) содержащий индекс файла и один " @@ -10944,7 +10946,7 @@ msgstr "" "Этот модуль помогает вам легко ввести данные и подтвердить табель и " "посещаемость в одном и том же виде.\n" "=============================================================================" -"======================\n" +"==========================\n" "\n" "Верхняя часть вида - для посещаемости и отслеживает события (приход/уход).\n" "Нижняя часть - для табеля.\n" @@ -10960,7 +10962,7 @@ msgstr "" "* Подтверждение руководителем проекта\n" "\n" "Подтверждение в компании может быть настроено по:\n" -"* Размеру периода (день, неделя, месяц, год)\\n\n" +"* Размеру периода (день, неделя, месяц, год)\n" "* Максимальной разнице между табелем и посещаемостью\n" " " @@ -11056,10 +11058,10 @@ msgid "" msgstr "" "\n" "Это основной модуль для управления процессом производства в OpenERP.\n" -"=======================================================================\n" +"====================================================================\n" "\n" "Возможности:\n" -"---------\n" +"------------\n" " * Сделать в запас/сделать на заказ (по строке)\n" " * Многоуровневые ВМ, нет ограничения\n" " * Многоуровневая маршрутизация, нет ограничения\n" @@ -11080,14 +11082,14 @@ msgstr "" "в ВМ для автоматической закупки по заказу сборки вашего производства.\n" "\n" "Отчёты предусмотренные этим модулем:\n" -"--------------------------------\n" +"------------------------------------\n" " * Структура и компоненты ведомости материалов\n" " * Прогноз загрузки по рабочим центрам\n" " * Печать производственного заказа\n" " * Прогнозы запаса\n" "\n" "Панель предусмотренная этим модулем:\n" -"----------------------------------\n" +"------------------------------------\n" " * Список следующих производственных заказов\n" " * Список проблем снабжений\n" " * График загрузки рабочего центра\n" @@ -11235,7 +11237,7 @@ msgid "" msgstr "" "\n" "Общий интерфейс для плагина.\n" -"=====================================================\n" +"============================\n" "\n" #. module: base @@ -11411,7 +11413,7 @@ msgid "" msgstr "" "\n" "Это модуль для управления окружением мульти-компаний.\n" -"=======================================================\n" +"=====================================================\n" "\n" "Это основной модуль для других модулей мульти-компаний.\n" " " @@ -11464,7 +11466,7 @@ msgid "" msgstr "" "\n" "Берет входящую эл.почту с серверов POP / IMAP\n" -"=============================================\n" +"==============================================\n" "\n" "Введите параметры ваших учётных записей POP/IMAP, и любые входящие\n" "e-mail-ы на этих адресах будут автоматически загружены в вашу систему\n" @@ -11565,10 +11567,10 @@ msgid "" msgstr "" "\n" "Бухгалтерия и управление финансами.\n" -"====================================\n" +"===================================\n" "\n" "Финансовый и бухгалтерский модуль, который покрывает:\n" -"--------------------------------------------\n" +"-----------------------------------------------------\n" "Общий учет\n" "Стоимостной/аналитический учёт\n" "Бухгалтерия третьей стороны\n" @@ -11579,7 +11581,7 @@ msgstr "" "Обработка сверки по партнёрам\n" "\n" "Создаёт панель для бухгалтеров, которая включает:\n" -"--------------------------------------------------\n" +"-------------------------------------------------\n" "* Список счетов заказчикам для одобрения\n" "* Анализ компании\n" "* График задолженностей\n" @@ -11689,7 +11691,7 @@ msgid "" msgstr "" "\n" "Установщик для скрытой отчётности.\n" -"==============================\n" +"==================================\n" "\n" "Делает доступной настройку скрытой отчётности из которой вы можете " "установить\n" @@ -11741,7 +11743,7 @@ msgid "" " " msgstr "" "\n" -"Список дел для кандидатов и предложений в CRM.\\n\n" +"Список дел для кандидатов и предложений в CRM.\n" " " #. module: base @@ -11803,7 +11805,7 @@ msgid "" msgstr "" "\n" "Позволяет синхронизировать календари с другими приложениями.\n" -"=========================================================\n" +"============================================================\n" "\n" "Позволит синхронизировать ваши календари OpenERP с вашим телефоном, Outlook, " "Sunbird, Ical, ...\n" @@ -12287,7 +12289,7 @@ msgid "" msgstr "" "\n" "Позволяет отмену бухгалтерских проводок.\n" -"=====================================\n" +"========================================\n" "\n" "Этот модуль добавляет поле 'Разрешить отмену проводок' в вид формы журнала " "учета. Если оно помечено, то это позволяет пользователю отменить проводки и " @@ -12327,7 +12329,7 @@ msgid "" msgstr "" "\n" "Создание претензии из заказа доставки.\n" -"=====================================\n" +"======================================\n" "\n" "Добавляет ссылку претензии к заказу доставки.\n" @@ -12409,7 +12411,7 @@ msgid "" msgstr "" "\n" "Общий план счетов\n" -"=========================\n" +"=================\n" "\n" "Предоставляется шаблон плана счетов, налогов для Уругвая\n" "\n" @@ -12512,7 +12514,7 @@ msgid "" msgstr "" "\n" "Этот модуль добавляет поле карты Google в адрес партнёра.\n" -"====================================================\n" +"=========================================================\n" "\n" "Используя это вы можете непосредственно открывать карту Google Map из поля " "URL." @@ -12547,7 +12549,7 @@ msgstr "" "\n" "Вы можете создать кнопки печати вызвав мастер. Для дополнительных " "подробностей смотрите:\n" -" http://files.me.com/nbessi/06n92k.mov\\n\n" +" http://files.me.com/nbessi/06n92k.mov\n" " " #. module: base @@ -12631,7 +12633,7 @@ msgid "" msgstr "" "\n" "Модуль добавляющий изготовителей и свойства в форму ввода товара.\n" -"====================================================================\n" +"=================================================================\n" "\n" "Теперь вы можете определить следующее для товара:\n" " * Изготовитель\n" @@ -12684,7 +12686,7 @@ msgstr "" "Этот модуль устанавливает основу для банковских счетов IBAN (международных " "номеров банковских счетов) и проверяет их правильность.\n" "=============================================================================" -"========================================\n" +"=====================================================\n" "\n" "Возможность извлечь правильно представленные локальные счета из счетов IBAN " "одним действием.\n" @@ -12780,7 +12782,7 @@ msgid "" msgstr "" "\n" "Общая система выплат интегрированная с бухгалтерией.\n" -"===================================================\n" +"====================================================\n" "\n" " * Запись данных зарплаты\n" " * Запись данных выплаты\n" @@ -12819,10 +12821,10 @@ msgid "" msgstr "" "\n" "Этот модуль предусматривает быструю и лёгкую обработку продаж.\n" -"===================================================\n" +"==============================================================\n" "\n" "Основные возможности :\n" -"---------------\n" +"----------------------\n" " * Быстрый ввод данных продаж.\n" " * Возможность выбора одного способа оплаты (быстрый путь) или разбиение " "платежа между несколькими способами оплаты.\n" @@ -12915,7 +12917,7 @@ msgid "" msgstr "" "\n" "Этот модуль предусматривает шаблон Wiki ЧаВо продаж.\n" -"===============================================\n" +"====================================================\n" "\n" "Он предусматривает демо данные, включая создание Wiki группы и Wiki " "страницы\n" @@ -12945,7 +12947,7 @@ msgid "" msgstr "" "\n" "Этот модуль позволяет реализовать правила действия для любого объекта.\n" -"============================================================\n" +"======================================================================\n" "\n" "Использование автоматизированных действий для запуска действий для различных " "экранов.\n" @@ -13001,7 +13003,7 @@ msgstr "" "Добавляет меню отчётности в товары, которое подсчитывает продажи, закупки, " "маржи и другие интересные показатели основанные на счетах.\n" "=============================================================================" -"================================================\n" +"========================================================\n" "\n" "Мастер для запуска отчёта имеет различные параметры, чтобы помочь вам " "получить нужные вам данные.\n" @@ -13372,7 +13374,7 @@ msgstr "" "Этот модуль добавляет поддержку табеля для управления проблемами/ошибками в " "проекте.\n" "=============================================================================" -"====\n" +"=======\n" "\n" "Могут быть поддержаны рабочие журналы для выражения числа часов затраченных " "пользователями на решение проблемы.\n" @@ -13561,7 +13563,7 @@ msgid "" msgstr "" "\n" "Модуль для запуска предупреждений в объектах OpenERP.\n" -"==============================================\n" +"=====================================================\n" "\n" "Предупреждающие сообщения могут быть показаны для объектов типа заказа " "продаж, заказа снабжения,\n" @@ -13630,7 +13632,7 @@ msgid "" msgstr "" "\n" "Этот модуль предоставляет функцию посылки сообщений в рамках проекта.\n" -"=========================================================================\n" +"=====================================================================\n" "\n" "Пользователь может посылать индивидуальные сообщения другому пользователю. " "Он может даже посылать\n" @@ -13676,7 +13678,7 @@ msgid "" msgstr "" "\n" "Модуль, который добавляет отчёты intrastat.\n" -"=====================================\n" +"===========================================\n" "\n" "Этот модуль даёт подробности торговли товарами между странами Европейского " "союза " @@ -13694,7 +13696,7 @@ msgid "" msgstr "" "\n" "Мастер выставления счёта на доставку.\n" -"============================\n" +"=====================================\n" "\n" "Когда вы отправляете или получаете товары, этот модуль автоматически " "вызывает\n" @@ -13766,7 +13768,7 @@ msgstr "" "Этот модуль позволяет вам подсчитать скидки по позициям заказа продажи и " "позициям счёта по прайс-листу партнёра.\n" "=============================================================================" -"==================================\n" +"===================================\n" "\n" "В конце в форму прайс-листа добавлен новый флажок названный \"Видимая " "скидка\".\n" @@ -13909,9 +13911,9 @@ msgid "" msgstr "" "\n" "Этот модуль требуется для правильной работы плагина Thuderbird.\n" -"====================================================================\n" +"===============================================================\n" "\n" -"Плагин позволяет вам архивировать e-mail и её вложения в выбранные\n" +"Плагин позволяет вам архивировать e-mail c вложениями в выбранные\n" "объекты OpenERP. Вы можете выбрать партнёра, задачу, проект, счёт\n" "аналитики или иной объект и прикрепить выбранное письмо как .eml файл во\n" "вложение выбранной записи. Вы можете создать документы для кандидатов CRM,\n" @@ -13967,7 +13969,7 @@ msgstr "" "Цель в наличии завершённого модуля для управления всеми ремонтами товаров. " "Этим модулем покрыты следующие темы:\n" "=============================================================================" -"==============================================\n" +"==================================\n" "\n" " * Добавление/удаление товаров в ремонт\n" " * Влияние на запасы\n" @@ -14002,7 +14004,7 @@ msgid "" msgstr "" "\n" "Установщик для основанного на знаниях скрытия.\n" -"====================================\n" +"==============================================\n" "\n" "Делает доступной настройки приложения знаний, откуда вы можете установить\n" "документ и основанное на Wiki скрытие.\n" @@ -14080,7 +14082,7 @@ msgid "" msgstr "" "\n" "Синхронизация записей работ по проекту и записей табеля.\n" -"====================================================================\n" +"========================================================\n" "\n" "Этот модуль позволяет вам перенос записей по задачам определённым для " "управления проектом в\n" @@ -14194,7 +14196,7 @@ msgstr "" "Этот модуль реализует все концепции определённые методологией управления " "проектом Scrum для ИТ компаний.\n" "=============================================================================" -"============================\n" +"===========================\n" "\n" " * Проект со спринтами, владелец продукта, мастер Scrum\n" " * Спринты с обзорами, дневные встречи, обратные связи\n" @@ -14498,7 +14500,7 @@ msgstr "" "Этот модуль добавляет в строки операций заказа производства состояние, дату " "начала, дату завершения (во вкладке \"Рабочие центры\").\n" "=============================================================================" -"================================\\n\n" +"=====================================================\n" "\n" "Состояния: черновик, подтвердить, сделан, отмена\n" "При завершении/подтверждении, отмене производственных заказов устанавливает " @@ -14554,7 +14556,7 @@ msgstr "" "Этот модуль управляет записями артистов, предметами аукциона, покупателями и " "продавцами.\n" "=============================================================================" -"====\n" +"===========\n" "\n" "Он полностью управляет аукционом так, как обслуживает ставки,\n" "отслеживает проданные предметы вместе с оплаченными\n" @@ -14564,7 +14566,7 @@ msgstr "" " * последние объекты (список)\n" " * последние депозиты (список)\n" " * статистики объектов (список)\n" -" * итоговые результаты (график)\\n\n" +" * итоговые результаты (график)\n" " * мин./рез./макс. (график)\n" " * объекты по дню (график)\n" " " @@ -14606,7 +14608,7 @@ msgid "" msgstr "" "\n" "Заменяет простые текстовые пароли в базе данных на защищённые хэши\n" -"===============================================================\n" +"==================================================================\n" "Для существующей базы пользователей, удаление простых текстовых\n" "паролей осуществляется немедленно, когда вы устанавите base_crypt.\n" "\n" @@ -14619,7 +14621,7 @@ msgstr "" "администратор может задать новый пароль.\n" "\n" "Предупреждение защиты\n" -"++++++++++++++++\n" +"+++++++++++++++++++++\n" "Установка этого модуля не означает, что вы можете игнорировать другие " "настройки защиты,\n" "поскольку пароль остаётся не зашифрованным при передаче по сети, если вы\n" @@ -14633,7 +14635,7 @@ msgstr "" "к серверу, и т.д.\n" "\n" "Взаимодействие с аутентификацией LDAP\n" -"+++++++++++++++++++++++++++++++++++\n" +"+++++++++++++++++++++++++++++++++++++\n" "Этот модуль сейчас не совместим с модулем ``user_ldap`` и\n" "будет полностью лишать возможности LDAP аутентификации, если установлен " "одновременно.\n" @@ -14818,7 +14820,7 @@ msgid "" msgstr "" "\n" "Этот модуль используется совместно с OpenERP плагином OpenOffice.\n" -"=========================================================\n" +"=================================================================\n" "\n" "Этот модуль добавляет мастер для импорта/экспорта .sxw отчёта, который\n" "вы можете изменить в OpenOffice. После того как вы измените его, вы можете\n" @@ -14862,11 +14864,11 @@ msgid "" msgstr "" "\n" "Это полнофункциональная календарная система.\n" -"========================================\n" +"============================================\n" "\n" "Она поддерживает:\n" " - Календарь событий\n" -" - Тревоги (создание запросов)\n" +" - Оповещения (создание запросов)\n" " - Повторные события\n" " - Приглашения людям\n" "\n" @@ -14967,9 +14969,10 @@ msgid "" " " msgstr "" "\n" -"Предоставляет общую платформу , которую могут использовать другие " +"Предоставляет общую платформу ОЭД(EDI), которую могут использовать другие " "приложения\n" -"==============================================================\n" +"=============================================================================" +"=======\n" "\n" "ОЭД(EDI) - обмен электронными документами\n" "OpenERP определяет общий формат ОЭД для обмена деловыми\n" @@ -15271,7 +15274,7 @@ msgid "" msgstr "" "\n" "Добавляет поддержку авторизации через LDAP сервер.\n" -"===============================================\n" +"==================================================\n" "Этот модуль позволяет пользователям входить с их именем пользователя и " "паролём LDAP,\n" "и автоматически создаст на лету пользователей для OpenERP.\n" @@ -15281,7 +15284,7 @@ msgstr "" "``ldap`` Python-а.\n" "\n" "Настройка\n" -"+++++++++++++\n" +"+++++++++\n" "После установки этого модуля, вам нужно настроить параметры\n" "LDAP во вкладке настройки подробностей компании.\n" "Различные компании могут иметь отличающиеся серверы LDAP, поскольку\n" @@ -15305,7 +15308,7 @@ msgstr "" "руководства ldap.conf: manpage:`ldap.conf(5)`.\n" "\n" "Соображения защиты\n" -"+++++++++++++++++++++++\n" +"++++++++++++++++++\n" "Пароли пользователей LDAP никогда не сохраняются в базе данных OpenERP,\n" "LDAP сервер запрашивается всякий раз, когда пользователю нужно быть\n" "авторизованным. Не происходит дублирования паролей, и\n" @@ -15336,7 +15339,7 @@ msgstr "" "серверу LDAP зашифрован.\n" "\n" "Шаблон пользователя\n" -"+++++++++++++\n" +"+++++++++++++++++++\n" "В настройках LDAP в форме компании, возможно\n" "выбрать *Шаблон пользователя*. Если задан, этот пользователь будет " "использован как\n" @@ -15359,7 +15362,7 @@ msgstr "" "группы по вашему желанию.\n" "\n" "Взаимодействие с шифрацией базы\n" -"+++++++++++++++++++++++++++\n" +"+++++++++++++++++++++++++++++++\n" "Модуль base_crypt не совместим с этим модулем, и\n" "отключит аутентификацию LDAP, если установлен одновременно.\n" "\n" @@ -15538,7 +15541,7 @@ msgid "" msgstr "" "\n" "Этот модуль позволяет вовремя вычислять заказы снабжения.\n" -"==================================================================\n" +"=========================================================\n" "\n" "Если вы установили этот модуль, вам больше не понадобится регулярное " "выполнение\n" @@ -15624,7 +15627,7 @@ msgid "" msgstr "" "\n" "Демо данные для модуля marketing_campaign.\n" -"============================================\n" +"==========================================\n" "\n" "Создаёт демо данные типа возможностей, кампаний и сегментов для модуля " "marketing_campaign.\n" @@ -15904,7 +15907,7 @@ msgid "" msgstr "" "\n" "Назначение этого модуля - проверка качества других модулей.\n" -"================================================================\n" +"===========================================================\n" "\n" "Он определяет мастер по списку модулей в OpenERP, который позволяет вам\n" "оценить их по различным критериям, таким как: соответствие стандартам\n" @@ -15960,7 +15963,7 @@ msgstr "" "Этот модуль промежуточного процесса комплектования для обеспечения сырьем " "производственных заказов.\n" "=============================================================================" -"====================\n" +"======================\n" "\n" "Один пример использования этого модуля - управление производством сделанным " "вашими\n" @@ -16056,7 +16059,7 @@ msgid "" msgstr "" "\n" "Основной модуль для управления разнесением аналитики и заказами закупки.\n" -"====================================================================\n" +"========================================================================\n" "\n" "Позволяет пользователю поддерживать различные аналитические планы. Позволяет " "вам разбить\n" @@ -16182,10 +16185,10 @@ msgstr "" "Модуль управления долгосрочным проектом, который отслеживает планирование, " "планировщики, назначение ресурсов.\n" "=============================================================================" -"==============\n" +"================================\n" "\n" "Возможности\n" -"--------\n" +"-----------\n" " * Управление большим проектом.\n" " * Определение различных этапов проекта.\n" " * Подсчёт планирования этапа: подсчёт даты начала и конечной даты этапов " @@ -16321,7 +16324,7 @@ msgid "" msgstr "" "\n" "Отслеживает различные даты по товарам и партиям производства.\n" -"======================================================\n" +"=============================================================\n" "\n" "Могут быть отслежены следующие даты:\n" " - конец жизни\n" @@ -16374,7 +16377,7 @@ msgid "" msgstr "" "\n" "Удаление минимального плана счетов.\n" -"=============================\n" +"===================================\n" "\n" "Деактивирует минимальный план счетов.\n" @@ -16442,7 +16445,7 @@ msgid "" msgstr "" "\n" "Этот модуль предоставляет возможности улучшения макета заказа продаж.\n" -"=======================================================================\n" +"=====================================================================\n" "\n" "Он даёт вам возможность\n" " * упорядочить все позиции заказа продаж\n" @@ -16596,7 +16599,7 @@ msgstr "" "Этот модуль показывает основные процессы существующие в выбранных модулях и " "их последовательность.\n" "=============================================================================" -"=========================\n" +"=====================\n" "\n" "Примечание: это применимо к модулям содержащим modulename_process_xml\n" "например: product/process/product_process_xml\n" @@ -16874,7 +16877,8 @@ msgstr "" "\n" "Этот модуль позволяет вам создать любой статистический отчёт по различным " "объектам.\n" -"=========================================================================\n" +"=============================================================================" +"======\n" "\n" "Это конструктор SQL запроса и просмотрщик\n" "для конечных пользователей.\n" @@ -17092,7 +17096,7 @@ msgid "" msgstr "" "\n" "Это основной модуль для управления товарами и прайс-листами в OpenERP.\n" -"========================================================================\n" +"======================================================================\n" "\n" "Товары поддерживают варианты, различные методы ценообразования, информацию\n" "поставщиков, изготовление в запас/по заказу, различные единицы измерения,\n" @@ -17205,7 +17209,7 @@ msgid "" msgstr "" "\n" "Обеспечивает поддержку живого чата для тех, укого есть договор поддержки.\n" -"===================================================================\n" +"=========================================================================\n" "\n" "Добавляет кнопку \"Поддержка\" button в заголовке формы доступа к поддержке " "OpenERP.\n" @@ -17287,7 +17291,7 @@ msgid "" msgstr "" "\n" "Этот модуль предоставляет управление проблемами/ошибками в проекте.\n" -"=======================================================\n" +"===================================================================\n" "\n" "OpenERP позволяет вам управлять проблемами, которые вы можете встретить в " "проекте\n" @@ -17555,8 +17559,7 @@ msgid "" msgstr "" "\n" "Шаблоны e-mail (упрощённая версия оригинальной Power Email от Openlabs)\n" -"=============================================================================" -"\n" +"=======================================================================\n" "\n" "Позволяет вам разработать полные шаблоны e-mail связанные с любым документом " "OpenERP (заказами\n" @@ -17645,7 +17648,7 @@ msgid "" msgstr "" "\n" "Этот модуль реализует табельную систему.\n" -"==========================================\n" +"========================================\n" "\n" "Каждый работник может ввести и отследить время затраченное на различные " "проекты.\n" @@ -17731,7 +17734,7 @@ msgid "" msgstr "" "\n" "Это общее управление взаимоотношениями с покупателями (CRM) в OpenERP.\n" -"=====================================================\\n\n" +"======================================================================\n" "\n" "Эта система позволяет группировать людей для разумного и эффективного " "управления\n" @@ -17753,7 +17756,7 @@ msgstr "" "поблагодарит\n" "их за сообщение, автоматически направив его соответствующему начальнику, и " "убедится в том,\n" -" что вся будущая переписка отправится в правильное место.\n" +"что вся будущая переписка отправится в правильное место.\n" "\n" "Модуль CRM имеет почтовый шлюз для синхронизации интерфейса\n" "сообщений и OpenERP.\n" @@ -17924,7 +17927,8 @@ msgstr "" "(кампании фактически могут быть определены по любому ресурсу, не только по " "кандидатам CRM).\n" "=============================================================================" -"============================================================\n" +"=============================================================================" +"==============\n" "\n" "Кампании являются динамическими и много-канальными. Процесс следующий:\n" " * Разработка маркетинговых кампаний типа рабочих процессов, включая " @@ -18283,7 +18287,7 @@ msgid "" msgstr "" "\n" "Общая основа для модулей инструментов.\n" -"==============================\n" +"======================================\n" "\n" "Создаёт пункт меню для инструментов откуда доступны инструменты типа опрос, " "2-й завтрак, идея, и т.п., если установлены.\n" @@ -18340,7 +18344,7 @@ msgstr "" "Этот модуль позволяет вам производить несколько продуктов по одному заказу " "производства.\n" "=============================================================================" -"\n" +"===========\n" "\n" "Вы можете настроить суб-продукты в спецификации материала.\n" "\n" @@ -18384,7 +18388,7 @@ msgid "" msgstr "" "\n" "Этот модуль позволяет вам создавать новые модули без разработки.\n" -"======================================================================\n" +"================================================================\n" "\n" "Он записывает все операции над объектами в течении сессии записи и\n" "производит .ZIP модуль. Итак вы можете создать свой собственный модуль прямо "