summaryrefslogtreecommitdiff
path: root/addons/mail/static/src
diff options
context:
space:
mode:
authorThibault Delavallée <tde@openerp.com>2012-03-05 18:37:42 +0100
committerThibault Delavallée <tde@openerp.com>2012-03-05 18:37:42 +0100
commitacfcade3cbcfc4c7b53861c99c2e19d29cfcc378 (patch)
tree6e63cf4d7d3d0d9cd94bc8b8aae6f28f1dba1d91 /addons/mail/static/src
parent4c70c04043f3f366e5832061e4e827d248c79f56 (diff)
[REF] Thread widget: cleaning of code
bzr revid: tde@openerp.com-20120305173742-0uzfemp6vqc8jcz0
Diffstat (limited to 'addons/mail/static/src')
-rw-r--r--addons/mail/static/src/js/mail.js179
1 files changed, 26 insertions, 153 deletions
diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js
index 7510f557806..49745671a4c 100644
--- a/addons/mail/static/src/js/mail.js
+++ b/addons/mail/static/src/js/mail.js
@@ -12,26 +12,20 @@ openerp.mail = function(session) {
* ThreadDisplay widget: this widget handles the display of a thread of messages.
* Two displays are managed through the [thread_level] parameter that sets
* the level number in the thread:
- * 1/ 1-level thread: thread_level = 1
* - root message
* - - sub message (parent_id = root message)
+ * - - - sub sub message (parent id = sub message)
* - - sub message (parent_id = root message)
- * 2/ flat thread: thread_level = 0
- * - root message
- * - sub message (parent_id = root message)
- * - sub message (parent_id = root message)
- * This widget has 2 ways of initialization:
- * 1/ give records
- * 2/ do not give records: will fetch [limit] messages from
- * the database, related to record [res_model]:[res_id].
+ * This widget has 2 ways of initialization, either you give records to be rendered,
+ * either it will fetch [limit] messages related to [res_model]:[res_id].
*/
mail.Thread = session.web.Widget.extend({
template: 'Thread',
/**
*
- * @params {Object} parent parent
- * @params {Object} [params]
+ * @param {Object} parent parent
+ * @param {Object} [params]
* @param {String} [params.res_model] res_model of mail.thread object
* @param {Number} [params.res_id] res_id of record
* @param {Number} [params.parent_id=false] parent_id of message
@@ -55,10 +49,8 @@ openerp.mail = function(session) {
this.params.offset = this.params.offset || 0;
this.params.records = this.params.records || null;
/* DataSets and internal vars */
- this.parent_stack = [];
- this.cur_thread_level = 0;
this.map_hash = {};
- this.params.thread_show_more = true;
+ this.display_show_more = true;
this.ds = new session.web.DataSet(this, this.params.res_model);
this.ds_users = new session.web.DataSet(this, 'res.users');
},
@@ -122,112 +114,35 @@ openerp.mail = function(session) {
},
display_comments: function (records) {
- console.log('deginb display');
- console.log(records);
var self = this;
- // sort comments
- var sorted_comments = this.new_sort_comments(records);
+ var sorted_comments = this.sort_comments(records);
this.sorted_comments = sorted_comments;
- this.bidouille = false;
- this.sub_com = [];
+
+ /* WIP: map matched regexp -> records to browse with name */
+ //_(records).each(function (record) {
+ //self.do_check_internal_links(record.body_text);
+ //});
_(records).each(function (record) {
- console.log('new iteration');
- self.sub_com = [];
-
- if ( (record.parent_id == false || record.parent_id[0] == self.params.parent_id) && self.params.thread_level > 0 ) {
+ 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.sorted_comments['root_id_msg_list'][record.id];
_(records).each(function (record) {
if (record.parent_id == false || record.parent_id[0] == self.params.parent_id) return;
if (_.indexOf(_.pluck(sub_list, 'id'), record.id) != -1) {
- self.sub_com.push(record);
+ sub_msgs.push(record);
}
});
-
- console.log('--found root');
- console.log(record);
- console.log(sub_list);
- console.log(self.sub_com);
-
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': self.sub_com, 'thread_level': (self.params.thread_level-1),
- 'parent_id': record.id});
+ 'records': sub_msgs, 'thread_level': (self.params.thread_level-1), 'parent_id': record.id});
self.$element.find('div.oe_mail_thread_msg:last').append('<div class="oe_mail_thread_subthread"/>');
self.thread.appendTo(self.$element.find('div.oe_mail_thread_subthread:last'));
}
-
else if (self.params.thread_level == 0) {
self.display_comment(record);
}
-
});
- console.log('end display');
- // update offset for "More" buttons
- this.params.offset += records.length;
- },
-
- old_display_comments: function (records) {
- var self = this;
- // sort comments
- var sorted_comments = this.sort_comments(records);
- this.sorted_comments = sorted_comments;
- this.bidouille = false;
- this.sub_com = [];
- console.log('display_comments');
- console.log(sorted_comments);
- console.log(records);
- //return true;
-
- /* WIP: map matched regexp -> records to browse with name */
- //_(records).each(function (record) {
- //self.do_check_internal_links(record.body_text);
- //});
-
- _(sorted_comments).each(function (record) {
- console.log('new iteration');
- var sub_comments = []
-
- if (record.parent_id == self.params.parent_id && self.params.thread_level > 0) {
- self.display_comment(record);
-
- if (! self.bidouille) {
- self.bidouille = record;
- }
- else {
- self.thread = new mail.Thread(self, {'res_model': self.params.res_model, 'res_id': self.params.res_id, 'uid': self.params.uid,
- 'records': self.sub_com, 'thread_level': (self.params.thread_level-1),
- 'parent_id': record.id});
- self.$element.find('div.oe_mail_thread_msg:last').append('<div class="oe_mail_thread_subthread"/>');
- self.thread.appendTo(self.$element.find('div.oe_mail_thread_subthread:last'));
- self.bidouille = record;
- self.sub_com = [];
- }
-
- }
-
- else if (self.params.thread_level > 0) {
- self.sub_com.push(record);
- return true;
- }
-
- else {
- self.display_comment(record);
- }
-
- });
- console.log(self.sub_com);
- if (self.sub_com.length > 0) {
- self.thread = new mail.Thread(self, {'res_model': self.params.res_model, 'res_id': self.params.res_id, 'uid': self.params.uid,
- 'records': self.sub_com, 'thread_level': (self.params.thread_level-1),
- 'parent_id': self.bidouille.id});
- self.$element.find('div.oe_mail_thread_msg:last').append('<div class="oe_mail_thread_subthread"/>');
- self.thread.appendTo(self.$element.find('div.oe_mail_thread_subthread:last'));
- self.sub_com = [];
- }
-
- console.log('end display');
// update offset for "More" buttons
this.params.offset += records.length;
},
@@ -236,10 +151,6 @@ openerp.mail = function(session) {
* Display a record
*/
display_comment: function (record) {
- console.log('now displaying !');
- console.log(this.params.thread_level);
- console.log(record)
-
if (record.type == 'email') { record.mini_url = ('/mail/static/src/img/email_icon.png'); }
else { record.mini_url = this.thread_get_avatar_mini('res.users', 'avatar_mini', record.user_id[0]); }
// body text manipulation
@@ -257,56 +168,19 @@ openerp.mail = function(session) {
node_body.find('a:last').click(function() { node_body.hide(); node_body_short.show(); return false; });
node_body_short.find('a:last').click(function() { node_body_short.hide(); node_body.show(); return false; });
}
- console.log('end now displaying');
},
-
+
/**
- * Sorts records in an hierarchical way, based on parent_id
- * @param {Array} records records from mail.message
- * @returns {Object} sorted_comments: dict
- * sorted_comments.res_model = {res_ids}
- * sorted_comments.res_model.res_id = [records]
+ * Add records to sorted_comments array
+ * @param {Array} records records from mail.message sorted by date desc
+ * @returns {Object} sc sorted_comments: dict {
+ * 'root_id_list': list or root_ids
+ * 'root_id_msg_list': {'record_id': [ancestor_ids]}, still sorted by date desc
+ * 'id_to_root': {'root_id': [records]}, still sorted by date desc
+ * }
*/
sort_comments: function (records) {
- //console.log('sort_comments');
- if (this.params.thread_level == 0) return records.slice(0);
-
- var done = false;
- var cur_iter = 0;
- var max_iter = 10;
-
- sorted_comments = [];
-
- tmp_records = records.slice(0);
-
- _(records).each(function (record, id) {
- if (! record.parent_id) {
- sorted_comments.push(record);
- }
- });
-
- records.reverse();
-
- _(records).each(function (record, id) {
- var index = _.indexOf(_.pluck(sorted_comments, 'id'), record.parent_id[0]);
- index = 0;
- if (index > -1) {
- if (record.parent_id) {
- sorted_comments.splice(index+1, 0, record);
- }
- }
- });
-
- records.reverse();
- return sorted_comments;
- },
-
- new_sort_comments: function (records) {
var self = this;
- console.log('nsc');
- console.log(records);
- console.log(self.params.parent_id);
- console.log(self.params.thread_level);
sc = {'root_id_list': [], 'root_id_msg_list': {}, 'id_to_root': {}}
var cur_iter = 0; var max_iter = 10; var modif = true;
/* step1: get roots */
@@ -336,7 +210,6 @@ openerp.mail = function(session) {
if (! root_id) return;
sc['root_id_msg_list'][root_id].push(record);
});
- console.log(sc);
return sc;
},
@@ -347,7 +220,7 @@ openerp.mail = function(session) {
do_comment: function () {
var body_text = this.$element.find('textarea').val();
- console.log(body_text + this.params.parent_id);
+ console.log(body_text + '-' + this.params.parent_id);
return true;
//return this.ds.call('message_append_note', [[this.params.res_id], 'Reply comment', body_text, parent_id=this.params.parent_id, type='comment']).then(
//this.proxy('init_comments'));
@@ -375,7 +248,7 @@ openerp.mail = function(session) {
},
do_truncate_string: function(string, max_length) {
- if (string.length <= max_length) return false;
+ if (string.length <= (max_length * 1.2)) return false;
else return string.slice(0, max_length);
},