[REF] mail: review new chatter design
- Use classes instead of repeated mixins - Add real user avatar instead of fake one - Reorganize LESS rules
This commit is contained in:
@@ -127,9 +127,18 @@ var Activity = AbstractActivityField.extend({
|
||||
activity.note = utils.parse_and_transform(activity.note, utils.add_link);
|
||||
}
|
||||
});
|
||||
self.$el.html(QWeb.render('mail.activity_items', {
|
||||
activities: setDelayLabel(self.activities),
|
||||
}));
|
||||
var activities = setDelayLabel(self.activities);
|
||||
if (activities.length) {
|
||||
var nbActivities = _.countBy(activities, 'state');
|
||||
self.$el.html(QWeb.render('mail.activity_items', {
|
||||
activities: activities,
|
||||
nbPlannedActivities: nbActivities.planned,
|
||||
nbTodayActivities: nbActivities.today,
|
||||
nbOverdueActivities: nbActivities.overdue,
|
||||
}));
|
||||
} else {
|
||||
self.$el.empty();
|
||||
}
|
||||
});
|
||||
},
|
||||
_reset: function (record) {
|
||||
|
||||
@@ -126,16 +126,8 @@ var Chatter = Widget.extend(chat_mixin, {
|
||||
this.$('.o_chatter_button_new_message, .o_chatter_button_log_note').removeClass('o_active');
|
||||
this.composer.do_hide();
|
||||
this.composer.clear_composer();
|
||||
this._muteNewMessageButton(false);
|
||||
}
|
||||
},
|
||||
_muteNewMessageButton: function (mute) {
|
||||
// TOCHECK: If this function exist for design pourposes only, it can be removed
|
||||
|
||||
// this.$('.o_chatter_button_new_message')
|
||||
// .toggleClass('btn-primary', !mute)
|
||||
// .toggleClass('btn-default', mute);
|
||||
},
|
||||
_openComposer: function (options) {
|
||||
var self = this;
|
||||
var old_composer = this.composer;
|
||||
@@ -173,13 +165,11 @@ var Chatter = Widget.extend(chat_mixin, {
|
||||
self.composer.on('need_refresh', self, self.trigger_up.bind(self, 'reload'));
|
||||
self.composer.on('close_composer', null, self._closeComposer.bind(self, true));
|
||||
|
||||
// TOCHECK: Toggle active chatter classes. It may be inproved?
|
||||
self.$el.addClass('o_chatter_composer_active');
|
||||
self.$('.o_chatter_button_new_message, .o_chatter_button_log_note').removeClass('o_active');
|
||||
self.$('.o_chatter_button_new_message').toggleClass('o_active', !self.composer.options.is_log);
|
||||
self.$('.o_chatter_button_log_note').toggleClass('o_active', self.composer.options.is_log);
|
||||
});
|
||||
this._muteNewMessageButton(true);
|
||||
},
|
||||
_render: function (def) {
|
||||
// the rendering of the chatter is aynchronous: relational data of its fields needs to be
|
||||
|
||||
@@ -33,6 +33,7 @@ var ChatterComposer = composer.BasicComposer.extend({
|
||||
this.events = _.extend(this.events, {
|
||||
'click .o_composer_button_full_composer': 'on_open_full_composer',
|
||||
});
|
||||
this.notInline = true;
|
||||
},
|
||||
|
||||
should_send: function () {
|
||||
@@ -241,4 +242,4 @@ var ChatterComposer = composer.BasicComposer.extend({
|
||||
|
||||
return ChatterComposer;
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@@ -280,26 +280,24 @@ var ChatAction = Widget.extend(ControlPanelMixin, {
|
||||
},
|
||||
|
||||
select_message: function(message_id) {
|
||||
var self = this;
|
||||
|
||||
this.$el.addClass('o_mail_selection_mode');
|
||||
var message = chat_manager.get_message(message_id);
|
||||
this.selected_message = message;
|
||||
var subject = "Re: " + message.record_name;
|
||||
this.extended_composer.set_subject(subject);
|
||||
|
||||
this.basic_composer.$el.toggleClass('o_hidden', self.channel.type !== 'static');
|
||||
this.extended_composer.$el.addClass('o_hidden');
|
||||
if (this.channel.type !== 'static') {
|
||||
this.basic_composer.do_hide();
|
||||
}
|
||||
this.extended_composer.do_show();
|
||||
|
||||
this.thread.scroll_to({id: message_id, duration: 200, only_if_necessary: true});
|
||||
this.extended_composer.focus('body');
|
||||
},
|
||||
|
||||
unselect_message: function() {
|
||||
var self = this;
|
||||
|
||||
this.basic_composer.$el.toggleClass('o_hidden', !(self.channel.type !== 'static' && !self.channel.mass_mailing));
|
||||
this.extended_composer.$el.toggleClass('o_hidden', !(self.channel.type !== 'static' && self.channel.mass_mailing));
|
||||
this.basic_composer.do_toggle(this.channel.type !== 'static' && !this.channel.mass_mailing);
|
||||
this.extended_composer.do_toggle(this.channel.type !== 'static' && this.channel.mass_mailing);
|
||||
|
||||
if (!config.device.touch) {
|
||||
var composer = this.channel.mass_mailing ? this.extended_composer : this.basic_composer;
|
||||
|
||||
@@ -417,6 +417,14 @@ var BasicComposer = Widget.extend(chat_mixin, {
|
||||
|
||||
// Emojis
|
||||
this.emoji_container_classname = 'o_composer_emoji';
|
||||
|
||||
this.isMini = options.isMini;
|
||||
|
||||
this.avatarURL = session.uid > 0 ? session.url('/web/image', {
|
||||
model: 'res.users',
|
||||
field: 'image_small',
|
||||
id: session.uid,
|
||||
}) : '/web/static/src/img/user_menu_avatar.png';
|
||||
},
|
||||
|
||||
start: function () {
|
||||
@@ -463,10 +471,6 @@ var BasicComposer = Widget.extend(chat_mixin, {
|
||||
return this._super.apply(this, arguments);
|
||||
},
|
||||
|
||||
toggle: function(state) {
|
||||
this.$el.toggle(state);
|
||||
},
|
||||
|
||||
preprocess_message: function () {
|
||||
// Return a deferred as this function is extended with asynchronous
|
||||
// behavior for the chatter composer
|
||||
|
||||
@@ -28,7 +28,7 @@ return ChatWindow.extend({
|
||||
})
|
||||
.focus();
|
||||
} else if (!self.options.input_less) {
|
||||
var basic_composer = new composer.BasicComposer(self, {mention_partners_restricted: true});
|
||||
var basic_composer = new composer.BasicComposer(self, {mention_partners_restricted: true, isMini: true});
|
||||
basic_composer.on('post_message', self, function (message) {
|
||||
this.trigger('post_message', message, this.channel_id);
|
||||
});
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
@o-chat-window-bg: white;
|
||||
@o-chat-window-width: 325px;
|
||||
@o-mail-chatter-gap: 10px; // has to be defined here as this file is both in
|
||||
// backend and other assets (livechat)
|
||||
|
||||
.o_chat_window {
|
||||
.o-flex-display();
|
||||
@@ -33,7 +35,7 @@
|
||||
color: white;
|
||||
padding: @o-mail-chatter-gap*0.5 @o-mail-chatter-gap;
|
||||
border-radius: 3px 3px 0 0;
|
||||
border-bottom: 1px solid @gray-lighter-dark;
|
||||
border-bottom: 1px solid @odoo-color-silver-dark; // cannot use gray-lighter-dark as this file is also frontend
|
||||
background-color: @odoo-brand-primary;
|
||||
|
||||
@media (max-width: @screen-xs-max) {
|
||||
@@ -64,7 +66,7 @@
|
||||
.o_mail_thread {
|
||||
.o-flex(1, 1, auto);
|
||||
overflow: auto;
|
||||
border: 1px solid @gray-lighter-dark;
|
||||
border: 1px solid @odoo-color-silver-dark; // cannot use gray-lighter-dark as this file is also frontend
|
||||
border-width: 0 1px;
|
||||
|
||||
.o_thread_date_separator {
|
||||
@@ -82,10 +84,6 @@
|
||||
padding: 4px 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.o_chat_composer {
|
||||
.o-chat-composer-design(@mini-composer: true);
|
||||
}
|
||||
}
|
||||
|
||||
.o_chat_window_dropdown {
|
||||
|
||||
@@ -1,176 +1,3 @@
|
||||
@o-mail-chatter-gap: 10px;
|
||||
|
||||
// Define the chat_composer design/layout as a mixin
|
||||
.o-chat-composer-design(@inline: false, @mini-composer: false) {
|
||||
// All designs/layouts
|
||||
& {
|
||||
position: relative;
|
||||
.o-flex-display();
|
||||
.o-flex(0, 0, auto);
|
||||
.o-align-items(flex-start);
|
||||
margin: 1px 0;
|
||||
border-top: none;
|
||||
background: @gray-lighter;
|
||||
|
||||
.o_composer, .o_composer_subject {
|
||||
position: relative;
|
||||
background: white;
|
||||
|
||||
textarea, input {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
.o_composer {
|
||||
textarea {
|
||||
resize: none;
|
||||
}
|
||||
|
||||
.btn-icon {
|
||||
.o-hover-opacity(@default-opacity: 0.8, @hover-opacity: 1);
|
||||
border: none;
|
||||
}
|
||||
|
||||
.o_composer_button_full_composer {
|
||||
.o-position-absolute(0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Both inline e not-inline design. Mini-composer disabled.
|
||||
& when (@mini-composer = false) {
|
||||
padding: @mail-thread-avatar-size*0.5;
|
||||
padding-left: @grid-gutter-width*0.5 + @mail-thread-avatar-size + @o-mail-chatter-gap;
|
||||
border: 1px solid @gray-lighter-dark;
|
||||
border-top: none;
|
||||
|
||||
.o_chatter_avatar {
|
||||
.o-position-absolute(0, @left: -@mail-thread-avatar-size - @o-mail-chatter-gap);
|
||||
}
|
||||
|
||||
.o_composer_container, .o_composer_send {
|
||||
.o-flex-display();
|
||||
}
|
||||
|
||||
.o_chatter_composer_info, .o_composer_suggested_partners {
|
||||
.o-flex(0, 0, 100%);
|
||||
margin-bottom: @o-mail-chatter-gap*0.5;
|
||||
}
|
||||
|
||||
.o_composer_container {
|
||||
position: relative;
|
||||
.o-flex-flow(column, nowrap);
|
||||
}
|
||||
|
||||
.o_composer {
|
||||
margin-bottom: @o-mail-chatter-gap;
|
||||
border-radius: 2px;
|
||||
textarea {
|
||||
padding-right: @grid-gutter-width; // avoid overlaps betwenn textarea and o_composer_button_full_composer
|
||||
}
|
||||
}
|
||||
|
||||
.o_composer, .o_composer_subject {
|
||||
border: 1px solid @gray-lighter-dark;
|
||||
|
||||
textarea, input {
|
||||
padding: 0 0 @o-mail-chatter-gap;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
.o_composer_subject {
|
||||
border-bottom: 0;
|
||||
border-radius: 2px 2px 0 0;
|
||||
}
|
||||
|
||||
.o_chatter_composer_tools {
|
||||
border-top: 1px solid @gray-lighter-dark;
|
||||
}
|
||||
}
|
||||
|
||||
// Not-inline design.
|
||||
& when (@inline = false) and (@mini-composer = false) {
|
||||
.o-flex-flow(row, wrap);
|
||||
|
||||
.o_composer_container, .o_composer_button_send {
|
||||
.o-flex(1, 0, 100%);
|
||||
}
|
||||
.o_composer, .o_composer_subject {
|
||||
padding: @o-mail-chatter-gap @o-mail-chatter-gap 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Inline design.
|
||||
& when (@inline = true) and (@mini-composer = false) {
|
||||
.o_composer_container {
|
||||
.o-flex(1, 0, auto);
|
||||
}
|
||||
.o_composer {
|
||||
padding: @o-mail-chatter-gap @o-mail-chatter-gap*0.5 0 @o-mail-chatter-gap;
|
||||
border-radius: 2px 0 0 2px;
|
||||
border-right: 0;
|
||||
}
|
||||
.o_composer_input {
|
||||
.o-flex-display();
|
||||
.o-flex-flow(row, wrap);
|
||||
}
|
||||
.o_composer_text_field {
|
||||
.o-flex(1, 1, 50%);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.o_chatter_composer_tools {
|
||||
.o-flex(0, 1, auto);
|
||||
}
|
||||
.o_composer_attachments_list {
|
||||
.o-flex(1, 0, 100%);
|
||||
}
|
||||
|
||||
.o_chatter_composer_tools {
|
||||
border: none;
|
||||
border-left: 1px solid @gray-lighter-dark;
|
||||
padding-left: @o-mail-chatter-gap*0.5;
|
||||
.o-transform(translateY(-@o-mail-chatter-gap*0.5));
|
||||
}
|
||||
|
||||
.o_composer_button_send {
|
||||
.o-flex(0, 0, auto);
|
||||
border-radius: 0 3px 3px 0;
|
||||
// Make the button appear as the same size as the subject input
|
||||
padding: 10px @padding-base-horizontal;
|
||||
border: 1px solid darken(@odoo-brand-optional, 5%);
|
||||
border-left-width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Mini-composer enabled
|
||||
& when (@mini-composer = true) {
|
||||
.o_composer_container {
|
||||
border-top: 1px solid @gray-lighter-dark;
|
||||
width: 100%;
|
||||
}
|
||||
.o_composer_input {
|
||||
.o-flex-display();
|
||||
.o-flex-flow(row, nowrap);
|
||||
padding: @o-mail-chatter-gap;
|
||||
|
||||
textarea.o_composer_text_field {
|
||||
.o-flex(1, 1, auto);
|
||||
padding-top: @o-mail-chatter-gap*0.5;
|
||||
}
|
||||
|
||||
.o_chatter_composer_tools {
|
||||
.o-flex(0, 0, auto);
|
||||
}
|
||||
}
|
||||
|
||||
.o_composer_button_send, .o_chatter_avatar, .o_composer_button_add_attachment, .o_composer_attachments_list {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Default chatter layout.
|
||||
// Extended in enterprise by form_view.less to achieve the side-chatter
|
||||
.o_chatter {
|
||||
@@ -201,10 +28,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.o_chat_composer {
|
||||
.o-chat-composer-design();
|
||||
}
|
||||
|
||||
&.o_chatter_composer_active .o_chatter_topbar {
|
||||
> .btn, > .o_followers{
|
||||
border-radius: @border-radius-small @border-radius-small 0 0;
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
padding: 2px 5px;
|
||||
}
|
||||
> span {
|
||||
.o-position-absolute(7px, @left:27px);
|
||||
.o-position-absolute(7px, @left: 27px);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -149,14 +149,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.o_chat_composer:not(.o_chat_composer_extended) {
|
||||
.o-chat-composer-design(@inline: true);
|
||||
|
||||
}
|
||||
.o_chat_composer.o_chat_composer_extended {
|
||||
.o-chat-composer-design(@inline: false);
|
||||
}
|
||||
|
||||
.o_mail_snackbar {
|
||||
.o-position-absolute(15px, 15px);
|
||||
padding-top: 10px;
|
||||
|
||||
@@ -1,42 +1,204 @@
|
||||
.o_composer_subject {
|
||||
.o_chat_composer {
|
||||
position: relative;
|
||||
.o-flex(0, 0, auto);
|
||||
.o-flex-display();
|
||||
padding-bottom: 5px;
|
||||
.o-align-items(flex-start);
|
||||
margin: 1px 0;
|
||||
border-top: none;
|
||||
background: @gray-lighter;
|
||||
|
||||
> input {
|
||||
.o-flex(1, 1, auto);
|
||||
padding: 5px;
|
||||
margin-right: 30px;
|
||||
}
|
||||
}
|
||||
.o_composer, .o_composer_subject {
|
||||
position: relative;
|
||||
background: white;
|
||||
|
||||
.o_composer {
|
||||
.o_composer_input > textarea {
|
||||
width: 100%;
|
||||
resize: none;
|
||||
}
|
||||
.o_composer_mention_dropdown .o_mention_proposition > a {
|
||||
.o-text-overflow();
|
||||
width: 100%;
|
||||
padding: 3px 15px;
|
||||
.o_mention_name {
|
||||
font-weight: 500;
|
||||
textarea, input {
|
||||
border: none;
|
||||
}
|
||||
.o_mention_info {
|
||||
font-style: italic;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.o_composer_subject {
|
||||
.o-flex-display();
|
||||
padding-bottom: 5px;
|
||||
|
||||
> input {
|
||||
.o-flex(1, 1, auto);
|
||||
padding: 5px;
|
||||
margin-right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.o_composer {
|
||||
.o_composer_input > textarea {
|
||||
width: 100%;
|
||||
resize: none;
|
||||
}
|
||||
.o_composer_mention_dropdown .o_mention_proposition > a {
|
||||
.o-text-overflow();
|
||||
width: 100%;
|
||||
padding: 3px 15px;
|
||||
.o_mention_name {
|
||||
font-weight: 500;
|
||||
}
|
||||
.o_mention_info {
|
||||
font-style: italic;
|
||||
color: gray;
|
||||
}
|
||||
}
|
||||
textarea {
|
||||
resize: none;
|
||||
}
|
||||
.btn-icon {
|
||||
.o-hover-opacity(@default-opacity: 0.8, @hover-opacity: 1);
|
||||
border: none;
|
||||
}
|
||||
.o_composer_button_full_composer {
|
||||
.o-position-absolute(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Both inline and not-inline design. Mini-composer disabled.
|
||||
&:not(.o_chat_mini_composer) {
|
||||
padding: @mail-thread-avatar-size*0.5;
|
||||
padding-left: @grid-gutter-width*0.5 + @mail-thread-avatar-size + @o-mail-chatter-gap;
|
||||
border: 1px solid @gray-lighter-dark;
|
||||
border-top: none;
|
||||
|
||||
.o_chatter_avatar {
|
||||
.o-position-absolute(0, @left: -@mail-thread-avatar-size - @o-mail-chatter-gap);
|
||||
}
|
||||
|
||||
.o_composer_container, .o_composer_send {
|
||||
.o-flex-display();
|
||||
}
|
||||
|
||||
.o_chatter_composer_info, .o_composer_suggested_partners {
|
||||
.o-flex(0, 0, 100%);
|
||||
margin-bottom: @o-mail-chatter-gap*0.5;
|
||||
}
|
||||
|
||||
.o_composer_container {
|
||||
position: relative;
|
||||
.o-flex-flow(column, nowrap);
|
||||
}
|
||||
|
||||
.o_composer {
|
||||
border-radius: 2px;
|
||||
textarea {
|
||||
padding-right: @grid-gutter-width; // avoid overlaps betwenn textarea and o_composer_button_full_composer
|
||||
}
|
||||
}
|
||||
|
||||
.o_composer, .o_composer_subject {
|
||||
border: 1px solid @gray-lighter-dark;
|
||||
|
||||
textarea, input {
|
||||
padding: 0 0 @o-mail-chatter-gap;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
.o_composer_subject {
|
||||
border-bottom: 0;
|
||||
border-radius: 2px 2px 0 0;
|
||||
}
|
||||
|
||||
.o_chatter_composer_tools {
|
||||
border-top: 1px solid @gray-lighter-dark;
|
||||
}
|
||||
|
||||
&:not(.o_chat_inline_composer) {
|
||||
.o-flex-flow(row, wrap);
|
||||
|
||||
.o_composer_container, .o_composer_button_send {
|
||||
.o-flex(1, 0, 100%);
|
||||
}
|
||||
.o_composer, .o_composer_subject {
|
||||
padding: @o-mail-chatter-gap @o-mail-chatter-gap 0;
|
||||
}
|
||||
.o_composer_send {
|
||||
margin-top: @o-mail-chatter-gap;
|
||||
}
|
||||
}
|
||||
|
||||
&.o_chat_inline_composer {
|
||||
.o_composer_container {
|
||||
.o-flex(1, 0, auto);
|
||||
}
|
||||
.o_composer {
|
||||
padding: @o-mail-chatter-gap @o-mail-chatter-gap*0.5 0 @o-mail-chatter-gap;
|
||||
border-radius: 2px 0 0 2px;
|
||||
border-right: 0;
|
||||
}
|
||||
.o_composer_input {
|
||||
.o-flex-display();
|
||||
.o-flex-flow(row, wrap);
|
||||
}
|
||||
.o_composer_text_field {
|
||||
.o-flex(1, 1, 50%);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.o_chatter_composer_tools {
|
||||
.o-flex(0, 1, auto);
|
||||
}
|
||||
.o_composer_attachments_list {
|
||||
.o-flex(1, 0, 100%);
|
||||
}
|
||||
|
||||
.o_chatter_composer_tools {
|
||||
border: none;
|
||||
border-left: 1px solid @gray-lighter-dark;
|
||||
padding-left: @o-mail-chatter-gap*0.5;
|
||||
.o-transform(translateY(-@o-mail-chatter-gap*0.5));
|
||||
}
|
||||
|
||||
.o_composer_button_send {
|
||||
.o-flex(0, 0, auto);
|
||||
border-radius: 0 3px 3px 0;
|
||||
// Make the button appear as the same size as the subject input
|
||||
padding: 10px @padding-base-horizontal;
|
||||
border: 1px solid darken(@odoo-brand-optional, 5%);
|
||||
border-left-width: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Mini-composer enabled
|
||||
&.o_chat_mini_composer {
|
||||
.o_composer_container {
|
||||
border-top: 1px solid @gray-lighter-dark;
|
||||
width: 100%;
|
||||
}
|
||||
.o_composer_input {
|
||||
.o-flex-display();
|
||||
.o-flex-flow(row, nowrap);
|
||||
padding: @o-mail-chatter-gap;
|
||||
|
||||
textarea.o_composer_text_field {
|
||||
.o-flex(1, 1, auto);
|
||||
padding-top: @o-mail-chatter-gap*0.5;
|
||||
}
|
||||
|
||||
.o_chatter_composer_tools {
|
||||
.o-flex(0, 0, auto);
|
||||
}
|
||||
}
|
||||
|
||||
.o_composer_button_send, .o_chatter_avatar, .o_composer_button_add_attachment, .o_composer_attachments_list {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.o_composer_attachments_list {
|
||||
margin-bottom: 5px;
|
||||
.o_composer_attachments_list:not(:empty) {
|
||||
margin-top: @o-mail-chatter-gap;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
// Emoji
|
||||
.o_mail_emoji {
|
||||
display: inline-block;
|
||||
.square(24px);
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
|
||||
> img {
|
||||
width: 100%;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
.o_thread_date_separator {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 30px;
|
||||
border-bottom: solid #E5E5E5 1px; // @gray-lighter
|
||||
border-bottom: 1px solid @gray-lighter;
|
||||
text-align: center;
|
||||
|
||||
.o_thread_date {
|
||||
@@ -102,8 +102,6 @@
|
||||
max-width: 100%;
|
||||
word-wrap: break-word;
|
||||
|
||||
&.o_mail_note {}
|
||||
|
||||
.o_mail_subject {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@@ -1,31 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="mail.activity_items">
|
||||
<div t-if="activities.length" class="o_thread_date_separator o_border_dashed" data-toggle="collapse" data-target="#o_chatter_planned_activities">
|
||||
<t t-set="today_activities" t-value="0"/>
|
||||
<t t-set="planned_activities" t-value="0"/>
|
||||
<t t-set="overdue_activities" t-value="0"/>
|
||||
<t t-foreach="activities" t-as="a">
|
||||
<t t-if="a.state == 'today'" t-set="today_activities" t-value="today_activities + 1"/>
|
||||
<t t-if="a.state == 'overdue'" t-set="overdue_activities" t-value="overdue_activities + 1"/>
|
||||
<t t-if="a.state == 'planned'" t-set="planned_activities" t-value="planned_activities + 1"/>
|
||||
</t>
|
||||
<div class="o_thread_date_separator o_border_dashed" data-toggle="collapse" data-target="#o_chatter_planned_activities">
|
||||
<span class="o_thread_date btn">
|
||||
<i class="fa fa-fw fa-caret-down"/>
|
||||
Planned activities
|
||||
<small class="o_chatter_planned_activities_summary ml8">
|
||||
<span class="label img-circle label-danger"><t t-esc="overdue_activities"/></span>
|
||||
<span class="label img-circle label-warning"><t t-esc="today_activities"/></span>
|
||||
<span class="label img-circle label-success"><t t-esc="planned_activities"/></span>
|
||||
<span class="label img-circle label-danger"><t t-esc="nbOverdueActivities"/></span>
|
||||
<span class="label img-circle label-warning"><t t-esc="nbTodayActivities"/></span>
|
||||
<span class="label img-circle label-success"><t t-esc="nbPlannedActivities"/></span>
|
||||
</small>
|
||||
</span>
|
||||
</div>
|
||||
<div t-if="activities.length" id="o_chatter_planned_activities" class="collapse in">
|
||||
<div id="o_chatter_planned_activities" class="collapse in">
|
||||
<t t-foreach="activities" t-as="activity">
|
||||
<div class="o_thread_message" style="margin-bottom: 10px">
|
||||
<div class="o_thread_message_sidebar">
|
||||
<div class="o_avatar_stack">
|
||||
<img t-attf-src="/web/image/res.users/#{activity.user_id[0]}/image_small" class="o_thread_message_avatar img-circle mb8" t-att-title="activity.create_uid[1]"/>
|
||||
<img t-attf-src="/web/image#{activity.user_id[0] >= 0 ? ('/res.users/' + activity.user_id[0] + '/image_small') : ''}" class="o_thread_message_avatar img-circle mb8" t-att-title="activity.create_uid[1]"/>
|
||||
<i t-att-class="'o_avatar_icon fa ' + activity.icon + ' bg-' + (activity.state == 'planned'? 'success' : (activity.state == 'today'? 'warning' : 'danger')) + '-full'"
|
||||
t-att-title="activity.activity_type_id[1]"/>
|
||||
</div>
|
||||
@@ -35,7 +27,7 @@
|
||||
<strong><span t-attf-class="o_activity_date o_activity_color_#{activity.state}"><t t-esc="activity.label_delay" /></span></strong>:
|
||||
<strong t-if="activity.summary"> “<t t-esc="activity.summary"/>”</strong>
|
||||
<strong t-if="!activity.summary"> <t t-esc="activity.activity_type_id[1]" /></strong>
|
||||
<i> for </i>
|
||||
<em> for </em>
|
||||
<t t-esc="activity.user_id[1]" />
|
||||
<a class="btn btn-link btn-info text-muted collapsed o_activity_info ml4" role="button" data-toggle="collapse" t-attf-data-target="#o_chatter_activity_info_#{activity.id}">
|
||||
<i class="fa fa-info-circle"></i>
|
||||
@@ -48,17 +40,15 @@
|
||||
</dd>
|
||||
<dt>Created By</dt>
|
||||
<dd class="mb8">
|
||||
<img t-attf-src="/web/image/res.users/#{activity.create_uid[0]}/image_small" height="18" width="18" class="img-circle mr4" t-att-title="activity.create_uid[1]"/>
|
||||
<img t-attf-src="/web/image#{activity.create_uid[0] >= 0 ? ('/res.users/' + activity.create_uid[0] + '/image_small') : ''}" height="18" width="18" class="img-circle mr4" t-att-title="activity.create_uid[1]"/>
|
||||
<b><t t-esc="activity.create_uid[1]"/></b>
|
||||
<!-- TODO: fomat date as "25 Dec 2017" (no time) -->
|
||||
<i>, on</i> <t t-esc="activity.create_date"/>
|
||||
<em>, on</em> <t t-esc="moment(activity.create_date)"/>
|
||||
</dd>
|
||||
<dt>Assigned to</dt>
|
||||
<dd class="mb8">
|
||||
<img t-attf-src="/web/image/res.users/#{activity.user_id[0]}/image_small" height="18" width="18" class="img-circle mr4" t-att-title="activity.create_uid[1]"/>
|
||||
<img t-attf-src="/web/image#{activity.user_id[0] >= 0 ? ('/res.users/' + activity.user_id[0] + '/image_small') : ''}" height="18" width="18" class="img-circle mr4" t-att-title="activity.create_uid[1]"/>
|
||||
<b><t t-esc="activity.user_id[1]"/></b>
|
||||
<!-- TODO: fomat date as "25 Dec 2017" (no time) -->
|
||||
<i>, due to </i><span t-attf-class="o_activity_color_#{activity.state}"><t t-esc="activity.date_deadline"/></span>
|
||||
<em>, due to </em><span t-attf-class="o_activity_color_#{activity.state}"><t t-esc="moment(activity.date_deadline)"/></span>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
@@ -95,4 +85,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</templates>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</div>
|
||||
<div class="o_chat_content">
|
||||
</div>
|
||||
<div t-if='!widget.options.input_less' class="o_chat_composer">
|
||||
<div t-if='!widget.options.input_less' class="o_chat_composer o_chat_mini_composer">
|
||||
<input class="o_composer_text_field" t-att-placeholder="widget.options.placeholder"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates xml:space="preserve">
|
||||
|
||||
<div t-name="mail.ChatComposer" t-attf-class="o_chat_composer #{widget.extended ? 'o_chat_composer_extended' : ''}">
|
||||
<div t-name="mail.ChatComposer" t-attf-class="o_chat_composer #{widget.extended ? 'o_chat_composer_extended' : (widget.notInline ? '' : 'o_chat_inline_composer')} #{widget.isMini ? 'o_chat_mini_composer' : ''}">
|
||||
<div class="o_composer_container">
|
||||
<!-- TODO: Use real user avatar -->
|
||||
<img height="36" width="36" class="o_thread_message_sidebar o_chatter_avatar img-circle" src="https://pbs.twimg.com/profile_images/885832422667038720/NmqlCWGq_400x400.jpg"/>
|
||||
<img t-if="widget.avatarURL" height="36" width="36" class="o_thread_message_sidebar o_chatter_avatar img-circle" t-att-src="widget.avatarURL"/>
|
||||
<div t-if="widget.extended" class="o_composer_subject">
|
||||
<input tabindex="1" type="text" placeholder="Subject" class="o_input"/>
|
||||
</div>
|
||||
|
||||
@@ -72,9 +72,12 @@
|
||||
-->
|
||||
<t t-name="mail.Followers.subtype">
|
||||
<li class="o_subtype">
|
||||
<input type="checkbox" t-att-checked="record.followed"
|
||||
t-att-id="'input_mail_followers_subtype_'+record.id+(dialog ? '_in_dialog': '')"
|
||||
t-att-data-id="record.id" t-att-name="record.name" class="o_subtype_checkbox"/>
|
||||
<div class="o_checkbox">
|
||||
<input type="checkbox" t-att-checked="record.followed"
|
||||
t-att-id="'input_mail_followers_subtype_'+record.id+(dialog ? '_in_dialog': '')"
|
||||
t-att-data-id="record.id" t-att-name="record.name" class="o_subtype_checkbox"/>
|
||||
<span/>
|
||||
</div>
|
||||
<span t-att-for="'input_mail_followers_subtype_'+record.id+(dialog ? '_in_dialog': '')">
|
||||
<t t-esc="record.name"/>
|
||||
</span>
|
||||
|
||||
@@ -166,7 +166,6 @@
|
||||
|
||||
<t t-name="mail.ChatComposer.Attachments">
|
||||
<div t-if="attachments.length > 0" class="o_attachments">
|
||||
<h5 class="mt4 mb0 small text-muted">Attachments:</h5>
|
||||
<t t-foreach="attachments" t-as='attachment'>
|
||||
<t t-call="mail.Attachment">
|
||||
<t t-set="editable" t-value="true"/>
|
||||
|
||||
Reference in New Issue
Block a user