diff --git a/addons/mail/mail_message_view.xml b/addons/mail/mail_message_view.xml
index e29027712ba..8b3d21677d0 100644
--- a/addons/mail/mail_message_view.xml
+++ b/addons/mail/mail_message_view.xml
@@ -227,13 +227,13 @@
News Feed
mail.wall
-
+
My Feeds
mail.wall
-
+
diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js
index 09e4d7dae3d..a5633dcfc2a 100644
--- a/addons/mail/static/src/js/mail.js
+++ b/addons/mail/static/src/js/mail.js
@@ -42,18 +42,6 @@ openerp.mail = function(session) {
mail.ChatterUtils = {
- /**
- * mail_int_mapping: structure to keep a trace of internal links mapping
- * mail_int_mapping['model'] = {
- * 'name_get': [[id,label], [id,label], ...]
- * 'fetch_ids': [id, id, ...] } */
- //var mail_int_mapping = {};
-
- /**
- * mail_msg_struct: structure to orrganize chatter messages
- */
- //var mail_msg_struct = {}; // TODO: USE IT OR NOT :)
-
/* generic chatter events binding */
bind_events: function(widget) {
// event: click on an internal link to a document: model, login
@@ -100,50 +88,50 @@ openerp.mail = function(session) {
* 'for_thread_msgs': [records],
* 'ancestors': [msg_ids], } }
*/
- records_struct_add_records: function(cs, records, parent_id) {
- var cur_iter = 0; var max_iter = 10; var modif = true;
- while ( modif && (cur_iter++) < max_iter) {
- modif = false;
- _(records).each(function (record) {
- // root and not yet recorded
- if ( (record.parent_id == false || record.parent_id[0] == parent_id) && ! cs['msgs'][record.id]) {
- // add to model -> root_list ids
- if (! cs['model_to_root_ids'][record.model]) cs['model_to_root_ids'][record.model] = [record.id];
- else cs['model_to_root_ids'][record.model].push(record.id);
- // add root data
- cs['new_root_ids'].push(record.id);
- // add record
- cs['tree_struct'][record.id] = {'level': 0, 'direct_childs': [], 'all_childs': [], 'for_thread_msgs': [record], 'msg_nbr': -1, 'ancestors': []};
- cs['msgs'][record.id] = record;
- modif = true;
- }
- // not yet recorded, but parent is recorded
- else if (! cs['msgs'][record.id] && cs['msgs'][record.parent_id[0]]) {
- var parent_level = cs['tree_struct'][record.parent_id[0]]['level'];
- // update parent structure
- cs['tree_struct'][record.parent_id[0]]['direct_childs'].push(record.id);
- cs['tree_struct'][record.parent_id[0]]['for_thread_msgs'].push(record);
- // update ancestors structure
- for (ancestor_id in cs['tree_struct'][record.parent_id[0]]['ancestors']) {
- cs['tree_struct'][ancestor_id]['all_childs'].push(record.id);
- }
- // add record
- cs['tree_struct'][record.id] = {'level': parent_level+1, 'direct_childs': [], 'all_childs': [], 'for_thread_msgs': [], 'msg_nbr': -1, 'ancestors': []};
- cs['msgs'][record.id] = record;
- modif = true;
- }
- });
- }
- return cs;
- },
+ // records_struct_add_records: function(cs, records, parent_id) {
+ // var cur_iter = 0; var max_iter = 10; var modif = true;
+ // while ( modif && (cur_iter++) < max_iter) {
+ // modif = false;
+ // _(records).each(function (record) {
+ // // root and not yet recorded
+ // if ( (record.parent_id == false || record.parent_id[0] == parent_id) && ! cs['msgs'][record.id]) {
+ // // add to model -> root_list ids
+ // if (! cs['model_to_root_ids'][record.model]) cs['model_to_root_ids'][record.model] = [record.id];
+ // else cs['model_to_root_ids'][record.model].push(record.id);
+ // // add root data
+ // cs['new_root_ids'].push(record.id);
+ // // add record
+ // cs['tree_struct'][record.id] = {'level': 0, 'direct_childs': [], 'all_childs': [], 'for_thread_msgs': [record], 'msg_nbr': -1, 'ancestors': []};
+ // cs['msgs'][record.id] = record;
+ // modif = true;
+ // }
+ // // not yet recorded, but parent is recorded
+ // else if (! cs['msgs'][record.id] && cs['msgs'][record.parent_id[0]]) {
+ // var parent_level = cs['tree_struct'][record.parent_id[0]]['level'];
+ // // update parent structure
+ // cs['tree_struct'][record.parent_id[0]]['direct_childs'].push(record.id);
+ // cs['tree_struct'][record.parent_id[0]]['for_thread_msgs'].push(record);
+ // // update ancestors structure
+ // for (ancestor_id in cs['tree_struct'][record.parent_id[0]]['ancestors']) {
+ // cs['tree_struct'][ancestor_id]['all_childs'].push(record.id);
+ // }
+ // // add record
+ // cs['tree_struct'][record.id] = {'level': parent_level+1, 'direct_childs': [], 'all_childs': [], 'for_thread_msgs': [], 'msg_nbr': -1, 'ancestors': []};
+ // cs['msgs'][record.id] = record;
+ // modif = true;
+ // }
+ // });
+ // }
+ // return cs;
+ // },
/* copy cs.new_root_ids into cs.root_ids */
- records_struct_update_after_display: function(cs) {
- // update TODO
- cs['root_ids'] = _.union(cs['root_ids'], cs['new_root_ids']);
- cs['new_root_ids'] = [];
- return cs;
- },
+ // records_struct_update_after_display: function(cs) {
+ // // update TODO
+ // cs['root_ids'] = _.union(cs['root_ids'], cs['new_root_ids']);
+ // cs['new_root_ids'] = [];
+ // return cs;
+ // },
/**
* CONTENT MANIPULATION
@@ -623,7 +611,7 @@ openerp.mail = function(session) {
display_comments: function (records) {
var self = this;
// sort the records
- mail.ChatterUtils.records_struct_add_records(this.comments_structure, records, this.params.parent_id);
+ // mail.ChatterUtils.records_struct_add_records(this.comments_structure, records, this.params.parent_id);
//build attachments download urls and compute time-relative from dates
for (var k in records) {
records[k].timerelative = $.timeago(records[k].date);
@@ -636,14 +624,14 @@ openerp.mail = function(session) {
}
_(records).each(function (record) {
var sub_msgs = [];
- if ((record.parent_id == false || record.parent_id[0] == self.params.parent_id) && self.params.thread_level > 0 ) {
- var sub_list = self.comments_structure['tree_struct'][record.id]['direct_childs'];
- _(records).each(function (record) {
- //if (record.parent_id == false || record.parent_id[0] == self.params.parent_id) return;
- if (_.indexOf(sub_list, record.id) != -1) {
- sub_msgs.push(record);
- }
- });
+ if ((record.parent_id == undefined || record.parent_id == false || record.parent_id[0] == self.params.parent_id) && self.params.thread_level > 0 ) {
+ // var sub_list = self.comments_structure['tree_struct'][record.id]['direct_childs'];
+ // _(records).each(function (record) {
+ // //if (record.parent_id == false || record.parent_id[0] == self.params.parent_id) return;
+ // if (_.indexOf(sub_list, record.id) != -1) {
+ // sub_msgs.push(record);
+ // }
+ // });
self.display_comment(record);
self.thread = new mail.Thread(self, {'res_model': self.params.res_model, 'res_id': self.params.res_id, 'uid': self.params.uid,
'records': sub_msgs, 'thread_level': (self.params.thread_level-1), 'parent_id': record.id,
@@ -655,7 +643,7 @@ openerp.mail = function(session) {
self.display_comment(record);
}
});
- mail.ChatterUtils.records_struct_update_after_display(this.comments_structure);
+ // mail.ChatterUtils.records_struct_update_after_display(this.comments_structure);
// update offset for "More" buttons
if (this.params.thread_level == 0) this.params.offset += records.length;
},
@@ -666,13 +654,13 @@ openerp.mail = function(session) {
if (record.type == 'email') {
record.mini_url = ('/mail/static/src/img/email_icon.png');
} else {
- record.mini_url = mail.ChatterUtils.get_image(this.session.prefix, this.session.session_id, 'res.users', 'image_small', record.user_id[0]);
+ record.mini_url = mail.ChatterUtils.get_image(this.session.prefix, this.session.session_id, 'res.partner', 'image_small', record.author_id[0]);
}
// record.body = mail.ChatterUtils.do_replace_expressions(record.body);
// format date according to the user timezone
record.date = session.web.format_value(record.date, {type:"datetime"});
// is the user the author ?
- record.is_author = mail.ChatterUtils.is_author(this, record.user_id[0]);
+ record.is_author = mail.ChatterUtils.is_author(this, record.author_id[0]);
// render
var rendered = session.web.qweb.render('mail.thread.message', {'record': record, 'thread': this, 'params': this.params, 'display': this.display});
// expand feature
@@ -756,10 +744,9 @@ openerp.mail = function(session) {
init: function() {
this._super.apply(this, arguments);
- this.params = this.get_definition_options();
+ this.params = this.options;
this.params.thread_level = this.params.thread_level || 0;
this.thread = null;
- this.ds = new session.web.DataSet(this, this.view.model);
},
start: function() {
@@ -785,6 +772,7 @@ openerp.mail = function(session) {
this.$element.find('.oe_mail_thread').hide();
return;
}
+ // debugger
// create and render Thread widget
this.$element.find('div.oe_mail_recthread_main').empty();
if (this.thread) this.thread.destroy();
@@ -815,48 +803,29 @@ openerp.mail = function(session) {
* @param {Object} parent parent
* @param {Object} [params]
* @param {Number} [params.limit=20] number of messages to show and fetch
- * @param {Number} [params.search_view_id=false] search view id for messages
* @var {Array} comments_structure (see chatter utils)
*/
- init: function (parent, params) {
+ init: function (parent, options) {
this._super(parent);
-
- this.params = {};
- // this.params.limit = params.limit || 25;
-
- this.params.domain = params.domain || [];
- this.params.context = params.context || {};
-
- // FP Note: do we need this ?
+ // console.log(options);
+ this.options = options || {};
+ this.options.domain = options.domain || [];
+ this.options.context = options.context || {};
+ // FP Note: do we need this ? --> not sure, use mail.message create instead ?
// Should be in domain/context instead ?
- this.params.res_model = params.res_model || false;
- this.params.res_id = params.res_id || false;
-
- // Do we need this ?
- // this.params.search_view_id = params.search_view_id || false;
-
- this.params.thread_level = params.thread_level || 1;
-
- // FP Note: looks strange, this is not the way to build a tree structure
- this.comments_structure = {'root_ids': [], 'new_root_ids': [], 'msgs': {}, 'tree_struct': {}, 'model_to_root_ids': {}};
-
- // FP Note: I changed: always true
- // this.display_show_more = true;
-
+ this.options.context.res_model = options.res_model || 'mail.thread';
+ this.options.context.res_id = options.res_id || false;
+ this.options.thread_level = options.thread_level || 1;
this.thread_list = [];
this.search = {'domain': [], 'context': {}, 'groupby': {}}
this.search_results = {'domain': [], 'context': {}, 'groupby': {}}
// datasets
this.ds_msg = new session.web.DataSet(this, 'mail.message');
-
- // I don't think we need this ?
- // message_read and others methods must be on mail.message
- // this.ds_thread = new session.web.DataSet(this, 'mail.thread');
+ // this.ds_post = new session.web.DataSet(this, this.options.context.res_model);
},
start: function () {
this._super.apply(this, arguments);
- this.display_current_user();
// add events
this.add_event_handlers();
// load mail.message search view
@@ -864,7 +833,7 @@ openerp.mail = function(session) {
// load composition form
var compose_done = this.instantiate_composition_form();
// fetch first threads
- var comments_ready = this.init_and_fetch_comments(this.params.limit, 0);
+ var comments_ready = this.init_and_fetch_comments(this.options.limit, 0);
return (search_view_ready && comments_ready && compose_done);
},
@@ -888,8 +857,8 @@ openerp.mail = function(session) {
this.compose_message_widget.destroy();
}
this.compose_message_widget = new mail.ComposeMessage(this, {
- 'extended_mode': false, 'uid': this.session.uid, 'res_model': this.params.res_model,
- 'res_id': this.params.res_id, 'mode': mode || 'comment', 'msg_id': msg_id });
+ 'extended_mode': false, 'uid': this.session.uid, 'res_model': this.options.res_model,
+ 'res_id': this.options.res_id, 'mode': mode || 'comment', 'msg_id': msg_id });
var composition_node = this.$element.find('div.oe_mail_wall_action');
composition_node.empty();
var compose_done = this.compose_message_widget.appendTo(composition_node);
@@ -940,10 +909,6 @@ openerp.mail = function(session) {
});
},
- display_current_user: function () {
- //return this.$element.find('img.oe_mail_msg_image').attr('src', this.thread_get_avatar('res.users', 'avatar', this.session.uid));
- },
-
/**
* Initializes the wall and calls fetch_comments
* @param {Number} limit: number of notifications to fetch
@@ -952,11 +917,11 @@ openerp.mail = function(session) {
* @param {Array} context
*/
init_and_fetch_comments: function() {
- this.search['domain'] = _.union(this.params.domain, this.search_results.domain);
- this.search['context'] = _.extend(this.params.context, this.search_results.context);
- this.comments_structure = {'root_ids': [], 'new_root_ids': [], 'msgs': {}, 'tree_struct': {}, 'model_to_root_ids': {}};
+ this.search['domain'] = _.union(this.options.domain, this.search_results.domain);
+ this.search['context'] = _.extend(this.options.context, this.search_results.context);
+ // this.comments_structure = {'root_ids': [], 'new_root_ids': [], 'msgs': {}, 'tree_struct': {}, 'model_to_root_ids': {}};
this.$element.find('ul.oe_mail_wall_threads').empty();
- return this.fetch_comments(this.params.limit, 0);
+ return this.fetch_comments(this.options.limit);
},
/**
@@ -966,40 +931,39 @@ openerp.mail = function(session) {
* @param {Array} domain
* @param {Array} context
*/
- fetch_comments: function (limit, offset, additional_domain, additional_context) {
+ fetch_comments: function (limit, additional_domain, additional_context) {
var self = this;
if (additional_domain) var fetch_domain = this.search['domain'].concat(additional_domain);
else var fetch_domain = this.search['domain'];
if (additional_context) var fetch_context = _.extend(this.search['context'], additional_context);
else var fetch_context = this.search['context'];
- // FP Note: call to review
+ // FP Note: call to review
return this.ds_msg.call('message_read',
- [[this.session.uid], true, [], (limit || 0), (offset || 0), fetch_domain, fetch_context]).then(this.proxy('display_comments'));
+ [[this.session.uid], false, [] ]).then(this.proxy('display_comments'));
},
/**
* @param {Array} records records to show in threads
*/
display_comments: function (records) {
+ console.log(records);
+ // debugger
var self = this;
- this.do_update_show_more(records.length >= self.params.limit);
- mail.ChatterUtils.records_struct_add_records(this.comments_structure, records, false);
- _(this.comments_structure['new_root_ids']).each(function (root_id) {
- var records = self.comments_structure.tree_struct[root_id]['for_thread_msgs'];
- var model_name = self.comments_structure.msgs[root_id]['model'];
- var res_id = self.comments_structure.msgs[root_id]['res_id'];
+ this.do_update_show_more(records.length >= self.options.limit);
+
+ _(records).each(function (root_record) {
+ console.log(root_record);
+
var render_res = session.web.qweb.render('mail.wall_thread_container', {});
$('
').html(render_res).appendTo(self.$element.find('ul.oe_mail_wall_threads'));
var thread = new mail.Thread(self, {
- 'res_model': model_name, 'res_id': res_id, 'uid': self.session.uid, 'records': records,
- 'parent_id': false, 'thread_level': self.params.thread_level, 'show_hide': true, 'is_wall': true}
+ 'res_model': root_record.model, 'res_id': root_record.res_id, 'uid': self.session.uid, 'records': [root_record],
+ 'parent_id': false, 'thread_level': self.options.thread_level, 'show_hide': true, 'is_wall': true}
);
self.thread_list.push(thread);
return thread.appendTo(self.$element.find('li.oe_mail_wall_thread:last'));
});
- // update TODO
- this.comments_structure['root_ids'] = _.union(this.comments_structure['root_ids'], this.comments_structure['new_root_ids']);
- this.comments_structure['new_root_ids'] = [];
+
},
/**
@@ -1013,9 +977,9 @@ openerp.mail = function(session) {
var self = this;
var model_to_root = {};
var fetch_domain = [];
- _(this.comments_structure['model_to_root_ids']).each(function (sc_model, model_name) {
- fetch_domain.push('|', ['model', '!=', model_name], '!', ['id', 'child_of', sc_model]);
- });
+ // _(this.comments_structure['model_to_root_ids']).each(function (sc_model, model_name) {
+ // fetch_domain.push('|', ['model', '!=', model_name], '!', ['id', 'child_of', sc_model]);
+ // });
return fetch_domain;
},
diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml
index 7f49b7f3943..8a0fc1d90e0 100644
--- a/addons/mail/static/src/xml/mail.xml
+++ b/addons/mail/static/src/xml/mail.xml
@@ -17,8 +17,8 @@
- News Feeds
-
+ News Feeds
+
|
@@ -136,7 +136,7 @@