The mention mechanism of the chat composer first proposes partners that are
registered to the current channel or followers of the current document, then
users, and finally partners.
Also reduces the mention detection delay to 200ms.
... allowing multi-line edition, like in the chatter.
Shortcuts:
- in the client action: ENTER sends, SHIFT+ENTER goes to newline
- in the chatter: SHIFT+ENTER sends, ENTER goes to newline
Don't use autosize anymore to resize the textarea according to its content as
it didn't fit well within the flex layout of the client action ('height: auto'
didn't increase the height of the flex-item with 'flex-grow: 0'). We perform
the resizing ourselves instead.
including:
- reset scroll position to bottom when leaving channel
- allow clicking on the avatar image
- hide stars when message is of type notification
- sort channel names
- add # before channel names
- rename Whole company channel in general
- replace \n and \r in messages by <br/>
- lighten the hover color of sidebar items in the client action
- Display @ before mentions
Commit 4f9c9ad adds the context to the RPC call of 'message_post', but the
context was only defined for messages sent, and not for internal notes logged.
This causes a crash when logging a note on a calendar event as its method
'message_post' makes the assumption that it always exists, and tries to access
one of its keys.
opw-652470
Closes#9164
When clicking on a partner in the thread of messages, it opens the DM with the
associated user if there is one (and if this user isn't the current user).
Otherwise, or when clicking on a record of any other model, the user is
redirected to that record's form view.
This change required a minor change in chat_manager: create_channel now
returns the created channel, as the client action needs it to switch to it.
Moreover, in the thread, when there is no partner associated with a message
(only an email address), we simply use html's mailto mechanism. This fixes a
bug as we formerly tried to open an unexisting record of res.partner.
The bus was allowed to restart polling, client side, to allow the user
to directly receive messages in new channels. This was only acceptable
as a temporary fix, the correct way to do this is to actually notify the
bus server side. This is even more urgent since the client was allowed
to keep multiple longpolls simultaneously, which degraded the experience
in some cases.
Channel types that disable the 'add a channel' feature like the livechat are
now only rendered in the sidebar of the client action if there exists at least
one channel of that type.
... from the same author, written within 1 minute (restricted to comments).
Also:
- Display stars and needactions on hover only
- Display the date of messages without avatar and info in the margin on hover
- Add 'selected' state of messages (mainly for touch screens to replace hover)
- Fix typo (msg_type -> message_type) on the computation of the avatar url
On firefox, the font-family of the counter was font-awesome instead of Roboto
because the counter was inside the <i> tag on which font-awesome rules applied.
This rev. simply moves the counter out of that <i> tag.
including:
- decrease vertical spacing between user name and text
- decrease vertical spacing between messages
- align avatar width with first line of message
- bold channels more visible (color is actually white)
- decrease online status icon size and change its color
- hide the DM unpin icon, and show it only when hovering
- the add channel icons are less white
- offline user icon is now white
- the unpin icon is now visible when hovering on user name
- correctly display notifications in inbox
Posting message is done in 'html' since mention add html tag in body. Clickable url is done server to allow link in mail and chat message. Plaintext are transform into html, and html message are simply parsed to transform url into clickable link.
- Add recipients as followers, and automatically refresh the follower's list
(before this rev., one needed to reload the record to see the followes' list
updated)
- Don't display needactions on chatter's messages
- Simplify buttons of suggested partner's dialog, as it should only offer two
possibilities: Save or Cancel
- Replace unnecessary t-raw's by t-esc's
- Extract sub-templates for client action's sidebar to ease the livechat
integration
- Handle livechat's channel_type and messages in chat manager
- Make scrollBottom work in the frontend
html_escape_keep_url is now included in plaintext2html method (since the opposite method html2plaintext transform link tags into simple url text). Force the posted message to be plaintext (adding directly html is not safe), and trim the posted message before submitting it.
The url are now clickable again in chat message, but also in chatter messages !
Use the (dbname, 'ir.needaction', partner_id) channel to broadcast needaction to partner. Some message can be needaction, without belonging to a mail channel of the partner. Keep the (dbname, 'res.partner', partner_id) channel for conversation header.
The problem was that, when substituting the emoji pattern by the emoji icon,
we only replaced the first occurence of the pattern.
This rev. replaces all occurences of the pattern by performing a global match
('g' option), and correctly handles matches overlap by using a lookahead
assertion ('x(?=y)') instead of basic non-capturing parentheses ('x(?:y)').
Instead of using the channel's ids to communicate between the client action and
the chat manager, directly use the channel itself. This prevents many lookups
in the channels dict to retrieve the channel from its id.
When receiving a new message, we add it in the client side cache of the
corresponding channel. The problem was that when we previously unsubscribed
to this channel, it was removed from the cache, producing a traceback when
trying to add the new message.
This rev. checks whether or not the channel is in the cache, and if not,
performs an rpc to fetch its info before adding the message.
At least, when someone mentions a user in a message posted in a channel, a
notification is sent by the server that a new message just arrived in that
channel. Client side, we then decide whether or not this message should appear
in the Inbox as well. In the positive case, we can increase the needaction
counter.
Problem remains for messages sent from chatters and by using the mail icon in
the systray, as for those ones, no notification at all is sent by the server.
It was hidding it because the method that removes a message from the thread
didn't pass the options for the thread rendering, and the flag specifiying
whether or not the 'load more' button should be displayed is in this options
object.
in systray and in client action. This is only a client side fix. A
problem persists: the server does not notify the client when a new
message arrives in the inbox, to the client can not possibly increase
the counter.
To display author avatar to public user, using the /web/image url with res.partner returns the placeholder since public doesn't have access. Using the url on mail.message will display the avatar according to the access right defined on res_model/res_id of mail.message. However this executes mush query to fetch the avatar image (1 per message, against 1 per partner).
Maybe this wasn't a bug, but since it is a regression, this deserves to be fixed ...
Read more / less feature is back (and probably ugly). It has probably been
removed when refactoring the old chatter.
[FIX] tools: html shortening: encoding issue
UP and DOWN (keydown event) move the cursor position at begining and end of the input text value. ENTER keypress event add 1 to the cursor position. So these events are now 'preventDefault'.
Embedded the template core in a 'root widget tag' to make the selector 'this.$('.o_mail_chatter_compose_message_suggested_partners input:checked')' works.
On follower list of a document, the user can (if access rights granted) edit the subtype subscription of other follower. This open a modal with checkboxes. This is commit make this feature works and adapt it to channel follower.
The wizard is the same object, but to add channel as follower, some fields was not required. Via the 'mail_invite_follower_channel_only' context key, the unrelevant fields are hidden.