diff --git a/addons/base_action_rule/base_action_rule_view.xml b/addons/base_action_rule/base_action_rule_view.xml index 0e855337d22..bb711be9928 100644 --- a/addons/base_action_rule/base_action_rule_view.xml +++ b/addons/base_action_rule/base_action_rule_view.xml @@ -16,7 +16,7 @@ - + diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py index 03885f541d0..63d5d3da84b 100644 --- a/addons/crm/__openerp__.py +++ b/addons/crm/__openerp__.py @@ -99,7 +99,6 @@ Dashboard for CRM will include: 'board_crm_view.xml', 'res_config_view.xml', - ], 'demo': [ 'crm_demo.xml', diff --git a/addons/crm/crm_action_rule_demo.xml b/addons/crm/crm_action_rule_demo.xml index 85cb8de1ac9..83f5681f311 100644 --- a/addons/crm/crm_action_rule_demo.xml +++ b/addons/crm/crm_action_rule_demo.xml @@ -46,6 +46,7 @@ Thanks, Filter on leads which are draft. crm.lead [('state','=','draft')] + @@ -64,6 +65,7 @@ Thanks, Filter on leads which come from USA. crm.lead [('country_id','=','United States')] + diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index ae9537072a2..0a824aef83e 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -846,7 +846,7 @@ class crm_lead(base_stage, format_address, osv.osv): def stage_set_send_note(self, cr, uid, ids, stage_id, context=None): """ Override of the (void) default notification method. """ stage_name = self.pool.get('crm.case.stage').name_get(cr, uid, [stage_id], context=context)[0][1] - return self.message_post(cr, uid, ids, body= _("Stage changed to %s.") % (stage_name), context=context) + return self.message_post(cr, uid, ids, body=_("Stage changed to %s.") % (stage_name), subtype="mt_crm_stage", context=context) def case_get_note_msg_prefix(self, cr, uid, lead, context=None): if isinstance(lead, (int, long)): @@ -855,17 +855,17 @@ class crm_lead(base_stage, format_address, osv.osv): def create_send_note(self, cr, uid, ids, context=None): for id in ids: - message = _("%s has been created.")% (self.case_get_note_msg_prefix(cr, uid, id, context=context)) + message = _("%s has been created.") % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) self.message_post(cr, uid, [id], body=message, context=context) return True def case_mark_lost_send_note(self, cr, uid, ids, context=None): message = _("Opportunity has been lost.") - return self.message_post(cr, uid, ids, body=message, context=context) + return self.message_post(cr, uid, ids, body=message, subtype="mt_crm_lost", context=context) def case_mark_won_send_note(self, cr, uid, ids, context=None): message = _("Opportunity has been won.") - return self.message_post(cr, uid, ids, body=message, context=context) + return self.message_post(cr, uid, ids, body=message, subtype="mt_crm_won", context=context) def schedule_phonecall_send_note(self, cr, uid, ids, phonecall_id, action, context=None): phonecall = self.pool.get('crm.phonecall').browse(cr, uid, [phonecall_id], context=context)[0] diff --git a/addons/crm/crm_lead_data.xml b/addons/crm/crm_lead_data.xml index f734a839ff4..b7541b6daf0 100644 --- a/addons/crm/crm_lead_data.xml +++ b/addons/crm/crm_lead_data.xml @@ -154,5 +154,21 @@ + + + Won + crm.lead + + + Lost + crm.lead + + + + Stage Changed + crm.lead + + + diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml index 7849125282e..913ce9fc612 100644 --- a/addons/crm/crm_lead_demo.xml +++ b/addons/crm/crm_lead_demo.xml @@ -324,12 +324,14 @@ Andrew opportunity - Plan to buy a Laptop - + Plan to buy RedHat servers + - 12 rue Albert Einstein - - Istanbul + 69 rue de Chimay + + Wavre + virginie@agrolait.com + 1 @@ -337,7 +339,7 @@ Andrew Call to ask system requirement - + @@ -372,6 +374,8 @@ Andrew Oliver Passot + olivier.passo@balmer.inc.sa + +32 469 12 45 78 BalmerInc S.A. Rue des Palais 51, bte 33 @@ -391,14 +395,16 @@ Andrew opportunity - Student's training plan in your Organization + Trainee's training plan in your Organization Leland Martinez - Toronto University - 2488 Queens Bay - - Toronto + info@deltapc.com + Delta PC + Fremont + 3661 Station Street + + 4 @@ -406,7 +412,7 @@ Andrew Call to define real needs about training - + @@ -542,77 +548,127 @@ Andrew - - - Plan to buy a Laptop + + + + + + + + + + + + + bWlncmF0aW9uIHRlc3Q= + YourCompany2012.doc + YourCompany2012.doc + + + Plan to buy RedHat servers crm.lead - <![CDATA[Email0 inquiry]]><div><font size="2">Hello,</font></div><div><font size="2"><br></font></div><div><font size="2">I am interested in your company's product and I plan to buy a new laptop having latest technologies and affordable price.</font></div><div><font size="2">Can you please send me product catalogue?</font></div> + +

Hello,

+

I am interested in your company's products and I plan to buy a new laptop having latest technologies as well as an affordable price.

+

Could you please send me the product catalog?

]]>
email + + virginie@agrolait.fr +
- - Re: Plan to buy a Laptop + + Re: Plan to buy RedHat servers crm.lead comment - Dear Customer, -Thanks for showing interest in our products. -We have attached the catalogue, -We would like to know your interests, so let us know when we can call you for more details. - -Regards - - + + Dear customer,
+ Thanks for showing interest in our products! As requested, I send to you our products catalog.
+ To be able to finely tune the solution, we would like to know precise needs. This way we wil be able to help you choosing the right infrastructure according to your requirements.
+ Best regards,

]]>
+ + +
- - Re: Plan to buy a Laptop + + Re: Plan to buy RedHat servers crm.lead - comment - <div>Thanks for the information,</div><div>I will visit the store soon.</div> - + Thanks for the information!
I asked a precise specification to our technical expert. Here is what we precisely need:

+
    +
  • weekly backups, every Monday
  • +
  • backup time is not a blocking point for us, as we are closed all Monday, leaving time enough to perform the backup
  • +
  • reliability is very important; we need redundant servers and rollback capacity
  • +
  • a total capacity of about 2 TB
  • +
+

Best regards,

]]>
+ email + + + virginie@agrolait.fr + +
+ + Re: Plan to buy RedHat servers + crm.lead + + Hello

+

After our phonecall and discussion with our technical experts, here is the offer of YourCompany. We believe it will meet every requirement you had in mind. Please feel free to contact me for any detail or technical detail that is not clear enough for you.

+

Notice that as agreed on phone, we offer you a 10% discount on the hardware!

+

Best regards,

]]>
+ email +
- - Re: Plan to buy a Laptop + + Catalog to send crm.lead - + + They just want pricing information about our services. I think sending our catalog should be sufficient.

]]>
comment - <font color="#1f1f1f">Can you tell me if the store is open at 9:00 PM?</b></font> - +
- - Re: Plan to buy a Laptop + + Inquiry crm.lead - - Yes, its open till 10:00 PM, you are welcome! - email - + + Hello!
+ I am Leland Martinez, from the Delta PC. Maybe you remember, we talked a bit last month at this international conference.
+ We would like to attend a training, but we are not quite sure about what we can ask. Maybe we should meet and talk about that?
+ Best regards,

]]>
+ comment + + +
- + + crm.lead + + It seems very interesting. As you say, first of all we will have to define precisely what the training will be about, and your precise needs.

]]>
+ comment + + + + +
+ Inquiry crm.lead - Hello, -I am Jason from Le Club SARL. -I am intertested to attend a training organized in your company. -Can you send me the details ? + Hello,
+ I am Jason from Le Club SARL. I am interested to attend a training organized in your company.
+ Can you send me the details ?

]]>
email
- + Need Details crm.lead - Want to know features and benifits to use the new software. + Want to know features and benefits to use the new software. comment - - - diff --git a/addons/mail/__openerp__.py b/addons/mail/__openerp__.py index 9ad3232d396..c535e3f7024 100644 --- a/addons/mail/__openerp__.py +++ b/addons/mail/__openerp__.py @@ -65,7 +65,10 @@ Main Features 'mail_alias_view.xml', 'res_users_view.xml', ], - 'demo': ['data/mail_demo.xml'], + 'demo': [ + 'data/mail_demo.xml', + 'data/mail_group_demo_data.xml', + ], 'installable': True, 'auto_install': False, 'application': True, diff --git a/addons/mail/data/mail_demo.xml b/addons/mail/data/mail_demo.xml index a5eaa63956a..fc11f31670a 100644 --- a/addons/mail/data/mail_demo.xml +++ b/addons/mail/data/mail_demo.xml @@ -2,90 +2,354 @@ - + none - - - - mail.group - - Your monthly meal vouchers arrived. You can get them at Christine's office.

]]>
- comment - - + + none - - mail.group - - Oh, I had forgotten. This month you also get 250 EUR of eco-vouchers if you have been in the company for more than a year.

]]>
- - comment - - + + none - - mail.group - - Thanks! Could you please remind me where is Christine's office, if I may ask? I'm new here!

]]>
- - comment - - + + none - - - mail.group - - Building B3, second floor on the right :-).

]]>
- - comment - - - + + none - - mail.group - - Many thanks. Actually that's good news, next year I'll have to buy a new fridge, I think I will pay it with the eco-vouchers!

]]>
- - comment - - + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none + + + none - - - Hello Demo User! I was wondering whether you had some issues with our secret task about putting cats everywhere in OpenERP. + + + bWlncmF0aW9uIHRlc3Q= + RedHat_spec.doc + RedHat_spec.doc + + + bWlncmF0aW9uIHRlc3Q= + RedHat_spec_draft_v3.doc + RedHat_spec_draft_v3.doc + + + RedHat server updated spec + Hello Demo,

+

We have a lot of inquiries about our now solution based on RedHat servers. However I do not have the updated specification ready at hand.

+

Could you please send me the last version of the file asap?

+

Thanks,

]]>
comment +
- - No specific issues, I think everything is clear. - + + Sure, here it is. Have a nice day!

]]>
comment + + +
- - Ow, just to be sure... we were talking about lolcats, right ? - + + I just found a more recent draft of the spec. Jon did some cleaning in the specifications. Could you merge the two documents to have an updated one?

When it's done, put it on the internal document management system.

Thanks,

]]>
comment + + +
- - Absolutely! - + + + + Plan to install backup servers + Hello,

+

We need to deploy new backup servers, with the following requirements:

+
    +
  • daily incremental backups, with an history of 15 days,
  • +
  • 45 servers should be backuped between 1am and 3am when our offices are closed,
  • +
  • two redundant servers,
  • +
  • total capacity of 200Gb.
  • +
+

+ Do you have a simple solution with servers running on Redhat Linux? +

+

Best regards,

+ ]]>
+ email + + virginie@agrolait.fr + + + +
+ + + + bWlncmF0aW9uIHRlc3Q= + catalog.doc + catalog.doc + + + activity_graph_2012.jpg + activity_graph_2012 + + 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 + kxzLdwM111ZhJXPm0ixn3/rQxvK6Vd4vn//Z + + + + Hi Demo,

+

The next version of our products catalog is scheduled for next month. Our product team send me their updated document holding the prices and costs, and I updated our catalog.

+

You will find it in attachment, as well as a comparative benchmark of the different solutions currently existing on the market.
Have a nice reading!
+ Sincerely,

]]>
comment + + +
+ + Thank you!
Could you send me the updated pricelists as negotiated at the beginning of this year?

+

Sincerely,

]]>
+ comment + + + + + +
+ + + + Hello,

I have a friend working at Epic Technologies. He told me they plan to upgrade their backup servers within the next 3 months.

I think that someone should contact them and check if there is an opportunity.

]]>
+ comment + + + + +
+ + + + comment + + + + + + + + + Information meeting + Hello,

Epic Technologies is a small company specialized in software managing huge volume of data. Having an efficient and reliable backup system is very important for us, and critical for our customers. I eared you have some interesting solutions to manage our backups. Could we meet each other as soon as possible to discuss our need? Here is a first list of requirements:

+
    +
  • about 25 backup servers, running on Redhat Linux
  • +
  • minimum 200Gb of storage per server
  • +
  • setup a VPN between all our servers in New York and Chicago
  • +
+

Thanks,

+ ]]>
+ comment + + + + +
+ + RE: Information meeting + Hello Epic!

+

I am glad you are interested in our products. Indeed, we are have several backup solutions that should meet your requirements. In order to prepare a detailed offer, we will have to discuss several technical points about your needs and the context of your data management.

+

I propose to have a meeting tomorrow at 2 PM. Does it seem suitable for you ?
Best regards,

]]>
+ + comment + + + + +
+ + RE: Information meeting + It is not possible for me to come tomorrow at 2 PM. Maybe at 4 PM?

]]>
+ + comment + + + +
+ + RE: Information meeting + 4 PM is fine! See you tomorrow!
Best regards,

]]>
+ + comment + + + + +
+ + RE: Information meeting + Ok! See you tomorrow.

]]>
+ + comment + + + + +
+ + + + Feedback about our On Site Assistance + Hi Virginie,

I writing to you about our On Site Assistance Service that we delivered to Agrolait last week. Do you have any feedback or remark about our service? I noticed you requested new IP phones. Will it be used for new employees, or did you have any issue with the ones we provided?
Best regards,

]]>
+ comment + + + + +
+ + RE: Feedback about our On Site Assistance + Hello Administrator,

Glad to hearing from you! Everything is perfect, thanks for asking. Concerning the order of 2 IP phones, I ordered them for new employees. We are satisfied with the products of YourCompany, and we plan to fit out each new employee with one of your phone this year.
Regards,

]]>
+ + comment + + + + +
+ + + + FWD: Meeting with Demo + Hello Administrator,

A small email to inform you that we will have a meeting with Mr Demo next Tuesday. Everything is under control!
Regards,

]]>
+ comment + + + +
diff --git a/addons/mail/data/mail_group_data.xml b/addons/mail/data/mail_group_data.xml index 64d989f9e9d..84258d619ba 100644 --- a/addons/mail/data/mail_group_data.xml +++ b/addons/mail/data/mail_group_data.xml @@ -2,10 +2,6 @@ - - Sales - Discussion about best sales practices and deals. - Whole Company @@ -19,9 +15,9 @@ notification Welcome to OpenERP! - Your homepage is a summary of messages you received and key information about documents you follow.

-The top menu bar contains all applications you installed. You can use the Settings menu to install more applications, activate others features or give access to new users.

-To setup your preferences (name, email signature, avatar), click on the top right corner.

]]>
+ Your homepage is a summary of messages you received and key information about documents you follow.

+

The top menu bar contains all applications you installed. You can use the Settings menu to install more applications, activate others features or give access to new users.

+

To setup your preferences (name, email signature, avatar), click on the top right corner.

]]>
diff --git a/addons/mail/data/mail_group_demo_data.xml b/addons/mail/data/mail_group_demo_data.xml new file mode 100644 index 00000000000..a6879c52a1a --- /dev/null +++ b/addons/mail/data/mail_group_demo_data.xml @@ -0,0 +1,197 @@ + + + + + + + Best Sales Practices + Discussion about best sales practices and deals. + + + + + + Board meetings + Board meetings, budgets, strategic plans + + + + + + R&D + Research and development discussion group + + + HR Policies + Company cars, holidays and other advantages + + + + + + Support + Support team + + + + + mail.group + + Selling a training session and selling the products after the training session is more efficient than directly selling a pack with the training session and the products.

]]>
+ comment + + + +
+ + mail.group + + I noted I can not manage efficiently my pipeline when I have more than 50 opportunities in the qualification stage.

Any advice on this? How do you organize your activities with more than 50 opportunities?

]]>
+ comment + + + +
+ + mail.group + + When I have too much opportunities in the pipe, I start communicating with prospects more by email than phonecalls.

I send an email to create a sense of emergency, like "can I call you this week about our quote?" and I call only those that answer this email.

You can use the email template feature of OpenERP to automate email composition.

]]>
+ comment + + + + + +
+ + mail.group + + When you sell a tablet PC, don't forget to propose a docking station with it. I offer 20% on the docking stating (not the tablet) and I have a 70% success rate with this combo.

]]>
+ comment + + + + +
+ + + + mail.group + + Your monthly meal vouchers arrived. You can get them at the HR's office.

]]>
+ comment + + +
+ + mail.group + + Oh, I had forgotten. This month you also get 250 EUR of eco-vouchers if you have been in the company for more than a year.

]]>
+ + comment + + +
+ + mail.group + + Thanks! Could you please remind me where is Christine's office, if I may ask? I'm new here!

]]>
+ + comment + + +
+ + mail.group + + Building B3, second floor on the right :-).

]]>
+ + comment + + +
+ + + + mail.group + + + Dear Board Members, +

+

+ The main events of the month of October are: +

+

+ Sales: +

+
    +
  • Invoicing is respectively of 442k€ for our European company (66% of the budget) and $404k for the U.S. office (75% of the budget). Despite these numbers that are far bellow our initial expectations, the growth of the month of October is 51% compared to last year.
  • +
  • The month of September having been better than our initial forecasts, the consolidated yearly revenue is only of $20k bellow our forecast made during the board of September.
  • +
  • The consolidated forecast for the end of the year is $6.749k, which is a growth of 76% compared to last year and an achievement of 87% of the budget.
  • +
  • The recruitment of new resellers has been very good, especially in Europe, where we signed 30 new resellers this month.
  • +
+

+ Finance : +

+
    +
  • The profit and loss has been negatively impacted this month by revenues that are far beyond the budget and charges that are 15% above the budget. The main extra we had in our charges this month is due to the provisioning of the salaries for the holidays period, $50k.
  • +
  • We also got the payment of our long awaited subsidies, the cash level has increased of 300K€ which gives a current balance of 963 K€ without including the straight loan of 350 K€.
  • +
  • The aged customer balance has been similar to the one of the last month with a small decrease of the DSO. We have recruited a new accountant assistant for the credit collection. She is mostly doing phone calls for all invoices that are due since 30 days, so we should get improvements of the DSO in November. The sum of the invoicing on which we have a risk in the aged customer balance is 100K€.
  • +
+

+ Resellers and Customers: +

+
    +
  • The total number of resellers is 429, across 87 countries.
  • +
  • The total number of installations of our software increased to 37K, against 33K for the month of September but we still did not reached the highest level we reached during this year (44K in march and may)
  • +
  • We have passed the 10000th customer in production with 10271 customers at the end of October. The paying customer ratio is 6,6%.
  • +
+

+ Launch of the new release: +

+

+ We are working actively on the new release which is scheduled for the end of November. +

+
    +
  • We will publish the release note this week
  • +
  • The whole sales team will be trained on the new version this Friday
  • +
  • We will do a public announce to our resellers the 21th of November. We plan to show them: a description of the new features, the new distribution strategy, the new pricing and the communication plan.
  • +
+
+

+ Nicolas, can you book a meeting room for our meeting of Friday 2pm? +

+

+ Regards. +

+]]>
+ comment + + + + + +
+ + + + mail.group + + + Great news!
+ Our company has received the Deloitte Fast 50 award. We are the fastest + growing company of the country, with a growth of 1549% over the past 5 + years. You can get more information on our blog. +

+]]>
+ comment + + +
+ +
+
+ + diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index b163882577b..30a31e2b701 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -114,7 +114,7 @@ class mail_group(osv.Model): alias_id = mail_alias.create_unique_alias(cr, uid, # Using '+' allows using subaddressing for those who don't # have a catchall domain setup. - {'alias_name': "group+"+vals['name']}, + {'alias_name': "group+" + vals['name']}, model_name=self._name, context=context) vals['alias_id'] = alias_id @@ -133,6 +133,7 @@ class mail_group(osv.Model): 'context': {'default_model': 'mail.group', 'default_res_id': mail_group_id, 'search_default_message_unread': True}, 'res_model': 'mail.message', 'thread_level': 1, + 'header_description': vals.get('description'), } cobj = self.pool.get('ir.actions.client') newref = cobj.copy(cr, SUPERUSER_ID, ref[1], default={'params': str(params), 'name': vals['name']}, context=context) @@ -160,6 +161,13 @@ class mail_group(osv.Model): result = super(mail_group, self).write(cr, uid, ids, vals, context=context) if vals.get('group_ids'): self._subscribe_users(cr, uid, ids, context=context) + # if description is changed: update client action + if vals.get('description'): + cobj = self.pool.get('ir.actions.client') + for action in [group.action for group in self.browse(cr, SUPERUSER_ID, ids, context=context) if group.action]: + new_params = action.params + new_params['header_description'] = vals.get('description') + cobj.write(cr, SUPERUSER_ID, [action.id], {'params': str(new_params)}, context=context) return result def action_follow(self, cr, uid, ids, context=None): diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index 4a880a13c14..34506cf4104 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -6,6 +6,17 @@ Discussion Group mail.wall mail.message + { + 'search_default_message_unread': True + } + { + 'read_action': 'read' + } + +

+ No message in this group. +

+
diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 9fd476d9d7f..e7288a46853 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -377,7 +377,9 @@ class mail_message(osv.Model): id_max = child_id elif nb > 0: exp_domain = [('id', '>=', id_min), ('id', '<=', id_max), ('id', 'child_of', message_id)] - messages.append(_get_expandable(exp_domain, nb, message_id, False)) + idx = [msg.get('id') for msg in messages].index(child_id) + 1 + # messages.append(_get_expandable(exp_domain, nb, message_id, False)) + messages.insert(idx, _get_expandable(exp_domain, nb, message_id, False)) id_min, id_max, nb = max(child_ids), 0, 0 else: id_min, id_max, nb = max(child_ids), 0, 0 diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index a809f7e8e2e..15bc53223ba 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -79,7 +79,7 @@ class mail_thread(osv.AbstractModel): # search for unread messages, directly in SQL to improve performances cr.execute(""" SELECT m.res_id FROM mail_message m RIGHT JOIN mail_notification n - ON (n.message_id = m.id AND n.partner_id = %s AND n.read = False) + ON (n.message_id = m.id AND n.partner_id = %s AND (n.read = False or n.read IS NULL)) WHERE m.model = %s AND m.res_id in %s""", (user_pid, self._name, tuple(ids),)) msg_ids = [result[0] for result in cr.fetchall()] @@ -767,13 +767,19 @@ class mail_thread(osv.AbstractModel): # 3. Post-processing # HACK TDE FIXME: Chatter: attachments linked to the document (not done JS-side), load the message if attachment_ids: + # TDE FIXME (?): when posting a private message, we use mail.thread as a model + # However, attaching doc to mail.thread is not possible, mail.thread does not have any table + model = self._name + if model == 'mail.thread': + model = False filtered_attachment_ids = ir_attachment.search(cr, SUPERUSER_ID, [ ('res_model', '=', 'mail.compose.message'), ('res_id', '=', 0), ('create_uid', '=', uid), ('id', 'in', attachment_ids)], context=context) if filtered_attachment_ids: - ir_attachment.write(cr, SUPERUSER_ID, attachment_ids, {'res_model': self._name, 'res_id': thread_id}, context=context) + if thread_id and model: + ir_attachment.write(cr, SUPERUSER_ID, attachment_ids, {'res_model': model, 'res_id': thread_id}, context=context) mail_message.write(cr, SUPERUSER_ID, [new_message_id], {'attachment_ids': [(6, 0, [pid for pid in attachment_ids])]}, context=context) return new_message_id diff --git a/addons/mail/mail_thread_view.xml b/addons/mail/mail_thread_view.xml index 3a37218c813..1721b3df1d4 100644 --- a/addons/mail/mail_thread_view.xml +++ b/addons/mail/mail_thread_view.xml @@ -84,29 +84,11 @@ 'search_default_message_read': True }
- -

- No message found. -

-
- - - - Sent - mail.wall - { - 'default_model': 'res.users', - 'default_res_id': uid - } -

- No message sent yet. + No message found and no message sent yet.

Click on the top-right icon to compose a message. This message will be sent by email if it's an internal contact. @@ -150,11 +132,5 @@ - - Sent - - - - diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index b0ce6d499b5..94a5c2d1f41 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -220,9 +220,8 @@ /* --------------------- ATTACHMENTS --------------------- */ .openerp .oe_mail .oe_msg_attachment_list{ - display: none; - margin-top: 12px; - margin-bottom: 12px; + margin-top: 4px; + margin-bottom: 4px; } .openerp .oe_mail .oe_msg_composer .oe_msg_attachment_list{ display: block; @@ -230,7 +229,7 @@ .openerp .oe_mail .oe_attachment{ display: inline-block; width: 100px; - margin: 2px; + margin: 4px 2px; min-height: 80px; position: relative; border-radius: 3px; @@ -243,7 +242,7 @@ padding: 1px 3px; margin-top: 50px; margin-bottom: 5px; - background: rgba(124, 123, 173, 0.13); + background: #F4F5FA; overflow: hidden; color: #4c4c4c; text-shadow: none; @@ -299,12 +298,13 @@ .openerp .oe_mail .oe_attachment.oe_preview .oe_name{ position: absolute; bottom: 0px; - margin: 0px; + margin: 3px; left: 0px; right: 0px; max-height: 64px; background: rgba(0,0,0,0.8); color: white; + border-radius: 1px; border-top-left-radius: 0px; border-top-right-radius: 0px; opacity: 0; @@ -333,9 +333,11 @@ position: relative; margin:0px; width: 100px; - height: 100px; - border-radius: 3px; + height: 80px; + border-radius: 1px; + border: solid 3px #FFF; margin-left: -50px; + box-shadow: 0px 3px 10px rgba(0, 0, 0, 0.19); } .openerp .oe_mail .oe_attachment .oe_delete{ display: none; diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index dc265a343d5..040b83e8f33 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -251,7 +251,7 @@ openerp.mail = function (session) { this.format_data(); // record options and data - this.show_record_name = this.record_name && !this.thread_level && this.model != 'res.partner'; + this.show_record_name = this.options.show_record_name && this.record_name && !this.thread_level && this.model != 'res.partner'; this.options.show_read = false; this.options.show_unread = false; if (this.options.show_read_unread_button) { @@ -591,17 +591,17 @@ openerp.mail = function (session) { //session.web.blockUI(); this.parent_thread.ds_thread.call('message_post_user_api', [ this.context.default_res_id, - mail.ChatterUtils.get_text2html(body), + body, false, this.context.default_parent_id, attachments, this.parent_thread.context ]).done(function (record) { var thread = self.parent_thread; + var root = thread == self.options.root_thread; if (self.options.display_indented_thread < self.thread_level && thread.parent_message) { var thread = thread.parent_message.parent_thread; } - var root = thread == self.options.root_thread; // create object and attach to the thread object thread.message_fetch([['id', 'child_of', [self.id]]], false, [record], function (arg, data) { var message = thread.create_message_object( data[0] ); @@ -734,7 +734,7 @@ openerp.mail = function (session) { if(this.thread_level < this.options.display_indented_thread) { this.create_thread(); } - this.$('.oe_msg_attachments, .oe_msg_images').addClass("oe_hidden"); + this.display_attachments(); this.ds_notification = new session.web.DataSetSearch(this, 'mail.notification'); this.ds_message = new session.web.DataSetSearch(this, 'mail.message'); @@ -752,8 +752,6 @@ openerp.mail = function (session) { this.$('.oe_reply').on('click', this.on_message_reply); this.$('.oe_star').on('click', this.on_star); this.$('.oe_msg_vote').on('click', this.on_vote); - this.$('.oe_view_attachments').on('click', this.on_view_attachments); - }, /* Call the on_compose_message on the thread of this message. */ @@ -812,17 +810,6 @@ openerp.mail = function (session) { } }, - /* Call the on_compose_message on the thread of this message. */ - on_view_attachments:function (event) { - event.stopPropagation(); - var self = this; - if (!this.toggle_attachment) { - self.display_attachments(); - this.toggle_attachment = true; - } - this.$('.oe_msg_attachment_list').toggle(200); - }, - /** * Wait a confirmation for delete the message on the DB. * Make an animate destroy @@ -857,7 +844,10 @@ openerp.mail = function (session) { msg.animated_destroy(150); } else { msg.renderElement(); - msg.start() + msg.start(); + } + if( self.options.root_thread.__parentedParent.__parentedParent.do_reload_menu_emails ) { + self.options.root_thread.__parentedParent.__parentedParent.do_reload_menu_emails(); } }); @@ -997,10 +987,7 @@ openerp.mail = function (session) { init: function (parent, datasets, options) { this._super(parent, options); this.domain = options.domain || []; - this.context = _.extend({ - default_model: 'mail.thread', - default_res_id: 0, - default_parent_id: false }, options.context || {}); + this.context = _.extend(options.context || {}); this.options = options.options; this.options.root_thread = (options.options.root_thread != undefined ? options.options.root_thread : this); @@ -1243,6 +1230,7 @@ openerp.mail = function (session) { 'default_parent_id': self.id, }}); } else { + data.record_name= (data.record_name != '' && data.record_name) || (self.parent_message && self.parent_message.record_name); var message = new mail.ThreadMessage(self, data, {'context':{ 'default_model': data.model, 'default_res_id': data.res_id, @@ -1252,8 +1240,7 @@ openerp.mail = function (session) { // check if the message is already create for (var i in self.messages) { - if (self.messages[i] && self.messages[i].id == message.id) { - console.log('Reload message', message.id); + if (message.id && self.messages[i] && self.messages[i].id == message.id) { self.messages[i].destroy(); } } @@ -1280,10 +1267,9 @@ openerp.mail = function (session) { this.$('.oe_view_nocontent').remove(); - if (dom_insert_after) { message.insertAfter(dom_insert_after); - }if (prepend) { + } else if (prepend) { message.prependTo(self.$el); } else { message.appendTo(self.$el); @@ -1460,6 +1446,7 @@ openerp.mail = function (session) { 'show_record_name' : false, 'show_compose_message' : false, 'show_compact_message' : false, + 'compose_placeholder': false, 'view_inbox': false, 'message_ids': undefined, }, this.action.params); @@ -1524,14 +1511,18 @@ openerp.mail = function (session) { init: function (parent, node) { this._super.apply(this, arguments); this.node = _.clone(node); - this.node.params = _.extend({ 'display_indented_thread': -1, 'show_reply_button': false, 'show_read_unread_button': false, + 'show_record_name': false, 'show_compact_message': 1, }, this.node.params); + if (this.node.attrs.placeholder) { + this.node.params.compose_placeholder = this.node.attrs.placeholder; + } + this.domain = this.node.params && this.node.params.domain || []; }, @@ -1603,7 +1594,7 @@ openerp.mail = function (session) { this.action = _.clone(action); this.domain = this.action.params.domain || this.action.domain || []; - this.context = this.action.params.context || this.action.context || {}; + this.context = _.extend(this.action.params.context || {}, this.action.context || {}); this.defaults = {}; for (var key in this.context) { @@ -1617,6 +1608,7 @@ openerp.mail = function (session) { 'show_reply_button': true, 'show_read_unread_button': true, 'show_compose_message': true, + 'show_record_name': true, 'show_compact_message': this.action.params.view_mailbox ? false : 1, 'view_inbox': false, }, this.action.params); @@ -1629,7 +1621,23 @@ openerp.mail = function (session) { if (! this.searchview.has_defaults) { this.message_render(); } - + }, + + /** + * crete an object "related_menu" + * contain the menu widget and the the sub menu related of this wall + */ + do_reload_menu_emails: function () { + var menu = this.__parentedParent.__parentedParent.menu; + // return this.rpc("/web/menu/load", {'menu_id': 100}).done(function(r) { + // _.each(menu.data.data.children, function (val) { + // if (val.id == 100) { + // val.children = _.find(r.data.children, function (r_val) {return r_val.id == 100;}).children; + // } + // }); + // var r = menu.data; + // window.setTimeout(function(){menu.do_reload();}, 0); + // }); }, /** diff --git a/addons/mail/static/src/js/mail_followers.js b/addons/mail/static/src/js/mail_followers.js index 7bb019cde4f..d299b9eb6f6 100644 --- a/addons/mail/static/src/js/mail_followers.js +++ b/addons/mail/static/src/js/mail_followers.js @@ -194,6 +194,7 @@ openerp_mail_followers = function(session, mail) { display_subtypes:function (data) { var self = this; var subtype_list_ul = this.$('.oe_subtype_list'); + subtype_list_ul.empty(); var records = data[this.view.datarecord.id || this.view.dataset.ids[0]].message_subtype_data; _(records).each(function (record, record_name) { record.name = record_name; diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml index 89fbe45dc36..bb787c9a21b 100644 --- a/addons/mail/static/src/xml/mail.xml +++ b/addons/mail/static/src/xml/mail.xml @@ -39,8 +39,9 @@

-