[IMP] mail: ControlPanel elements: buttons and sidebar

Put 'More' actions in the Sidebar
This commit is contained in:
Aaron Bohy
2015-09-01 20:58:11 +02:00
parent c694df2b6e
commit f0dfe87fa7
2 changed files with 36 additions and 32 deletions
+35 -20
View File
@@ -10,6 +10,7 @@ var Widget = require('web.Widget');
var Dialog = require('web.Dialog');
var ControlPanelMixin = require('web.ControlPanelMixin');
var SearchView = require('web.SearchView');
var Sidebar = require('web.Sidebar');
var WebClient = require('web.WebClient');
var session = require('web.session');
@@ -484,8 +485,8 @@ var ChatMailThread = Widget.extend(mail_thread.MailThreadMixin, ControlPanelMixi
this.on('change:needaction_inbox_counter', this, this.needaction_inbox_change);
return $.when(this._super.apply(this, arguments), this.cp_render_searchview()).then(function(){
// update control panel
self.cp_render_buttons();
// render control panel's elements
self.cp_render_elements();
// apply default channel
var channel_id = self.context.active_id || self.action.params.default_active_id || 'channel_inbox';
if(!_.isString(channel_id)){
@@ -595,16 +596,19 @@ var ChatMailThread = Widget.extend(mail_thread.MailThreadMixin, ControlPanelMixi
},
// control panel
cp_update: function(){
var self = this;
// toggle cp elements
var current_channel_id = this.get('current_channel_id');
// toggle cp buttons
if(_.isString(current_channel_id)){
self.control_elements.$buttons.find('button').hide();
this.control_elements.$buttons.hide();
this.control_elements.$sidebar.hide();
}else{
self.control_elements.$buttons.find('button').show();
var current_channel = this.channels[current_channel_id];
if(current_channel.channel_type == 'chat'){
self.control_elements.$buttons.find('.o_mail_chat_button_invite, .o_mail_chat_button_more').hide();
this.control_elements.$buttons.show();
if(this.channels[current_channel_id].channel_type === 'chat'){
this.control_elements.$buttons.find('.o_mail_chat_button_invite').hide();
this.control_elements.$sidebar.hide();
} else {
this.control_elements.$buttons.find('.o_mail_chat_button_invite').show();
this.control_elements.$sidebar.show();
}
}
@@ -612,22 +616,33 @@ var ChatMailThread = Widget.extend(mail_thread.MailThreadMixin, ControlPanelMixi
var status = {
breadcrumbs: this.action_manager.get_breadcrumbs(),
cp_content: {
$buttons: self.control_elements.$buttons,
$searchview: self.control_elements.$searchview,
$searchview_buttons: self.control_elements.$searchview_buttons,
$switch_buttons: false,
$pager: false,
$buttons: this.control_elements.$buttons,
$searchview: this.control_elements.$searchview,
$searchview_buttons: this.control_elements.$searchview_buttons,
$sidebar: this.control_elements.$sidebar,
},
searchview: self.searchview,
searchview: this.searchview,
};
this.update_control_panel(status, {clear: false});
this.update_control_panel(status);
},
cp_render_buttons: function() {
cp_render_elements: function() {
this.control_elements.$buttons = $(QWeb.render("mail.chat.ControlButtons", {}));
this.control_elements.$buttons.on('click', '.o_mail_chat_button_minimize', _.bind(this.on_click_button_minimize, this));
this.control_elements.$buttons.on('click', '.o_mail_chat_button_invite', _.bind(this.on_click_button_invite, this));
this.control_elements.$buttons.on('click', '.o_mail_chat_button_unsubscribe', _.bind(this.on_click_button_unsubscribe, this));
this.control_elements.$buttons.on('click', '.o_mail_chat_button_settings', _.bind(this.on_click_button_settings, this));
this.control_elements.$buttons.on('click', '.o_mail_chat_button_minimize', _.bind(this.on_click_button_minimize, this));
var $sidebar_container = $('<div>');
new Sidebar(this, {
sections: [
{name: 'more', label: _t('More')},
],
items: {
more: [
{label: _t('Unsubscribe'), classname: 'o_mail_chat_button_unsubscribe', callback: this.on_click_button_unsubscribe},
{label: _t('Settings'), classname: 'o_mail_chat_button_settings', callback: this.on_click_button_settings},
],
},
}).appendTo($sidebar_container);
this.control_elements.$sidebar = $sidebar_container.contents();
},
cp_render_searchview: function(){
var self = this;
@@ -135,21 +135,10 @@
Buttons of the Control Panel
-->
<t t-name="mail.chat.ControlButtons">
<div class="o_mail_chat_cp_buttons">
<div>
<button type="button" class="btn btn-primary btn-sm o_mail_chat_button_invite" t-att-title='_t("Invite people")'>Invite</button>
<button type="button" class="btn btn-default btn-sm o_mail_chat_button_minimize" t-att-title='_t("Minimize the conversation")'>Minimize</button>
<div class="btn-group">
<button type="button" class="btn btn-default btn-sm dropdown-toggle o_mail_chat_button_more" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
More <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li class="o_mail_chat_button_unsubscribe"><a href="#">Unsubscribe</a></li>
<li class="o_mail_chat_button_settings"><a href="#">Settings</a></li>
</ul>
</div>
</div>
</t>
</templates>