diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index c901f6e64c2..2268e66ce36 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -126,6 +126,8 @@ class mail_thread(osv.AbstractModel):
for id in ids:
res[id]['message_subtype_data'] = subtype_dict.copy()
+ if context and 'partner_id' in context:
+ user_pid = context.get('partner_id')
# find the document followers, update the data
fol_obj = self.pool.get('mail.followers')
fol_ids = fol_obj.search(cr, uid, [
@@ -138,6 +140,7 @@ class mail_thread(osv.AbstractModel):
for subtype in fol.subtype_ids:
thread_subtype_dict[subtype.name]['followed'] = True
res[fol.res_id]['message_subtype_data'] = thread_subtype_dict
+
return res
def _search_message_unread(self, cr, uid, obj=None, name=None, domain=None, context=None):
@@ -289,34 +292,8 @@ class mail_thread(osv.AbstractModel):
default['message_follower_ids'] = []
return super(mail_thread, self).copy(cr, uid, id, default=default, context=context)
- #------------------------------------------------------
- # Edit and apply followers subtypes.
- #------------------------------------------------------
- def edit_followers_subtype(self, cr, uid, ids, partner_id, context=None):
- res = dict((id, dict(message_subtype_data='')) for id in ids)
-
- subtype_obj = self.pool.get('mail.message.subtype')
- subtype_ids = subtype_obj.search(cr, uid, ['|', ('res_model', '=', self._name), ('res_model', '=', False)], context=context)
- subtype_dict = dict((subtype.name, dict(default=subtype.default, followed=False, id=subtype.id)) for subtype in subtype_obj.browse(cr, uid, subtype_ids, context=context))
- for id in ids:
- res[id]['message_subtype_data'] = subtype_dict.copy()
-
- fol_obj = self.pool.get('mail.followers')
- fol_ids = fol_obj.search(cr, uid, [
- ('partner_id', '=', partner_id),
- ('res_id', 'in', ids),
- ('res_model', '=', self._name),
- ], context=context)
- for fol in fol_obj.browse(cr, uid, fol_ids, context=context):
- thread_subtype_dict = res[fol.res_id]['message_subtype_data']
- for subtype in fol.subtype_ids:
- thread_subtype_dict[subtype.name]['followed'] = True
- res[fol.res_id]['message_subtype_data'] = thread_subtype_dict
- return res
-
def apply_edited_subtypes(self, cr, uid, ids, partner_id, check_list, context=None):
- """ Apply the edited subtypes
- of the user."""
+ """ Apply the edited subtypes of the user."""
fol_obj = self.pool.get('mail.followers')
fol_ids = fol_obj.search(cr, uid, [
('partner_id', '=', partner_id),
diff --git a/addons/mail/static/src/js/mail_followers.js b/addons/mail/static/src/js/mail_followers.js
index 1ca65087316..155cd74ebeb 100644
--- a/addons/mail/static/src/js/mail_followers.js
+++ b/addons/mail/static/src/js/mail_followers.js
@@ -81,37 +81,27 @@ openerp_mail_followers = function(session, mail) {
on_edit_subtype: function(event) {
var self = this;
- var records = [];
var partner_id = $(event.target).data('id');
- var partner_name = $(event.target).siblings('a').text();
- var id = this.view.datarecord.id;
- var res_model = this.view.dataset.model;
- var $dialog = new session.web.dialog($('
'), {
+ var context = new session.web.CompoundContext(this.build_context(), {'partner_id': partner_id});
+ self.$dialog = new session.web.dialog($('
'), {
modal: true,
- title: _t('Edit Subtypes of ') + '"' + partner_name + '"',
+ width: 'auto',
+ height: 'auto',
+ title: _t('Edit Subscriptions of ') + $(event.target).siblings('a').text(),
buttons: [
{ text: _t("Apply"), click: function() {
- self.on_apply_subtype(id, partner_id);
+ self.on_apply_subtype(partner_id);
$(this).remove();
}},
{ text: _t("Cancel"), click: function() { $(this).remove(); }}
],
});
- this.ds_model.call('edit_followers_subtype', [[id], partner_id, new session.web.CompoundContext(this.build_context(), {})])
- .then(function (data) {
- if (data[id]) {
- records = data[id].message_subtype_data;
- }
- _(records).each(function (record, record_name) {
- record.name = record_name;
- record.followed = record.followed || undefined;
- $(session.web.qweb.render("mail.followers.edit.subtype", {'record': record})).appendTo($dialog);
- });
- });
+ return self.fetch_subtypes(context);
},
- on_apply_subtype: function(id, partner_id) {
+ on_apply_subtype: function(partner_id) {
var check_list = new Array();
+ var id = this.view.datarecord.id;
_($('.oe_edit_actions input[type="checkbox"]')).each(function (record) {
if ($(record).is(':checked')) {
check_list.push(parseInt($(record).data('id')));
@@ -256,25 +246,34 @@ openerp_mail_followers = function(session, mail) {
},
/** Fetch subtypes, only if current user is follower */
- fetch_subtypes: function () {
+ fetch_subtypes: function (context) {
var self = this;
- var subtype_list_ul = this.$('.oe_subtype_list').empty();
- if (! this.message_is_follower) return;
+ var mode = "";
+ if (context && context.eval('partner_id')) {
+ mode = "edit_follower";
+ } else {
+ var subtype_list_ul = this.$('.oe_subtype_list').empty();
+ if (! this.message_is_follower) return;
+ }
var id = this.view.datarecord.id;
- this.ds_model.call('message_get_subscription_data', [[id], new session.web.CompoundContext(this.build_context(), {})])
- .then(function (data) {self.display_subtypes(data, id);});
+ this.ds_model.call('message_get_subscription_data', [[id],context])
+ .then(function (data) {self.display_subtypes(data, id, mode);});
},
/** Display subtypes: {'name': default, followed} */
- display_subtypes:function (data, id) {
+ display_subtypes:function (data, id, mode) {
var self = this;
var $list = this.$('.oe_subtype_list');
- $list.empty().hide();
+ if (mode.length == 0){ $list.empty().hide();}
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;
record.followed = record.followed || undefined;
- $(session.web.qweb.render('mail.followers.subtype', {'record': record})).appendTo( self.$('.oe_subtype_list') );
+ if (mode.length == 0) {
+ $(session.web.qweb.render('mail.followers.subtype', {'record': record,'mode': mode})).appendTo( self.$('.oe_subtype_list') );
+ } else {
+ $(session.web.qweb.render('mail.followers.subtype', {'record': record,'mode': mode})).appendTo(self.$dialog);
+ }
});
if (_.size(records) > 1) {
$list.show();
diff --git a/addons/mail/static/src/xml/mail_followers.xml b/addons/mail/static/src/xml/mail_followers.xml
index ea11c26570b..6420046477c 100644
--- a/addons/mail/static/src/xml/mail_followers.xml
+++ b/addons/mail/static/src/xml/mail_followers.xml
@@ -42,21 +42,8 @@
-
-
-
-
-