diff options
| author | Alexandre Kühn <aku@odoo.com> | 2018-08-11 20:30:51 +0200 |
|---|---|---|
| committer | Alexandre Kühn <aku@odoo.com> | 2018-08-13 14:17:27 +0200 |
| commit | f2302dfb27dd7f6a0dee7c65ab75b62a01706264 (patch) | |
| tree | d58fef9e2e8a5b98c0680f28fc92e24992236029 /addons/mail/static/src/xml/thread.xml | |
| parent | 3de97f168956a7c22c3af6b72950cf28554f4139 (diff) | |
[REF][FIX] mail, im_livechat: various improvements (JS)
This commit makes a lot of small improvements of the JS of mail and
related modules.
A. Mail Manager
---------------
im_support:
- [REF] Slightly more robust way to determine a support
message, so that it more reliably falls back on
default kind of message (i.e. support channel UUID
should be clearly set).
mail:
- [REF] Improved method names for readability purposes.
Some examples:
- `fetchFromServer` becomes `fetchMailStateFromServer`
- `_initialize{*}` becomes `_update{*}FromServer`
- `_isModerator` becomes `_isMyselfModerator`
- [REF] Use 'template' pattern design to make Include on
Mail Manager much more robust. In particular,
the flow is always as follow:
1. Initialize internal state.
2. Listen on buses.
3. Fetch mail data from server.
- [REF] Improved workflow for thread window workflow
(Shorter & more readable).
B. Mail Tests
-------------
- [REF] Thread Window Tests crashes with clean message when
there are some thread windows open before running the
tests.
C. (Model) Message
------------------
- [REF] Improved method names for readability purposes
(e.g. `isAuthor` becomes `isMyselfAuthor`).
D. (Model) Thread
-----------------
- [REF] Improved `init` parameters on each kind of thread.
- [REF] 'Thread With Cache' has been renamed to 'Searchable
Thread': it embraces all kinds of threads that can
be used with the search view.
- [REF] 'DM' has been renamed to 'DM Chat' (for clarity).
- [IMP] New Livechat model in the backend.
- [REF] No more direct instances of the Channel class: public
and private channels are now 'Multi-User' channels,
while DM Chat and Livechat are 'Two-User' channels:
This change has been made so that instances of classes
always have direct classes as "leaf" in the Class
modeling. It eases making changes to a certain model
without being too constrained by another model.
- [REF] As a consequence of above changed, the method `isChat`
has been renamed to `isTwoUserThread`.
This is to avoid confusion with the terminology
'chat', which is more like a shortcut for 'quick real-
time conversation'. In other words, the property of
'chat' depends of the way to interact on a thread, not
of the intrinsic type of the thread.
Still, some parts have kept the terminology 'chat',
such as in the systray messagin menu.
- [IMP] Added `message_added` and `message_posted` hooks,
which may be useful to easily hook on those events.
E. Thread Widget
----------------
- [REF] Now uses a `mail.model.AbstractThread` for the
rendering of a thread, instead of a list of
`{mail.model.AbstractMessage}`.
- [FIX] Stick thread scroll height to bottom on new rendering,
if it was previously at the bottom of the thread.
- [REF] Option ORDER has its meaning changed: it now refers
to the chronological order of messages in the thread,
in which DESC means 'from top to bottom', while ASC
means 'from bottom to top'.
- [REF] Improved doc on templates, in particular with the
option `ORDER`.
F. Thread Window
----------------
- [REF] Moved more logic to thread windows, which were
previously in Mail Window Manager.
- [REF] Now hides the thread widget attribute. So instead of
`threadWindow.threadWidget.isAtBottom()`, it uses
`threadWindow.isAtBottom()`.
- [FIX] New received messages when not having focus on Odoo
tab should always make the corresponding thread
windows "passive" (i.e. windows that keep threads
unread until click on them).
- [FIX] Blank thread window (i.e. 'New message' TW) correctly
opens Discuss with 'Inbox' when clicking on 'Expand'
Button in the title
- [FIX] Do not display the composer for channels with property
'mass-mailing' set in thread windows.
G. (Website) Livechat
---------------------
- [REF] Some `trigger` have been turned into `trigger_up`.
- [REF] Some logic has been moved to models (e.g.
`{im_livechat.model.WebsiteLivechat}`), from
`{im_livechat.im_livechat.LivechatButton}`.
- [FIX] New messages should be received in real-time. The
longpolling was broken with a recent refactoring on
bus service (6448420c5dd160470e465dee7729d19d8d5e7bab).
Diffstat (limited to 'addons/mail/static/src/xml/thread.xml')
| -rw-r--r-- | addons/mail/static/src/xml/thread.xml | 97 |
1 files changed, 82 insertions, 15 deletions
diff --git a/addons/mail/static/src/xml/thread.xml b/addons/mail/static/src/xml/thread.xml index b3443418c2b..b33452382ac 100644 --- a/addons/mail/static/src/xml/thread.xml +++ b/addons/mail/static/src/xml/thread.xml @@ -3,22 +3,13 @@ <!-- @param {mail.model.AbstractThread} thread + @param {Object} options @param {boolean} [options.displayEmptyThread] - @param {boolean} [options.displayLoadMore] @param {boolean} [options.displayNoMatchFound] - @param {integer} [options.displayOrder] 1 or -1 - @param {Object} ORDER - @param {integer} ORDER.ASC=1 - @param {integer} ORDER.DESC=-1 --> <t t-name="mail.widget.Thread"> <t t-if="thread.hasMessages()"> - <t t-set="messages" t-value="thread.getMessages()"/> - <t t-if="options.displayLoadMore and options.displayOrder == ORDER.ASC" - t-call="mail.widget.Thread.LoadMore"/> <t t-call="mail.widget.Thread.Content"/> - <t t-if="options.displayLoadMore and options.displayOrder == ORDER.DESC" - t-call="mail.widget.Thread.LoadMore"/> </t> <t t-elif="options.displayEmptyThread"> <t t-call="mail.widget.Thread.Empty" /> @@ -134,14 +125,90 @@ </div> <!-- - @param {mail.model.AbstractMessage[]} messages messages ordered by increasing IDs + @param {mail.model.AbstractThread} thread + @param {Object} options + @param {integer} [options.displayOrder] 1 or -1 chronological order for the thread messages + @param {Object} ORDER + @param {integer} ORDER.ASC=1 messages are ordered by increasing IDs, from bottom to top + @param {integer} ORDER.DESC=-1 messages are ordered by increasing IDs, from top to bottom + + Ordering of messages in the thread, messages are indexed by increasing IDs: + _____________ _____________ + | | | | + | message 1 | | message n | + | message 2 | | ... | + | ... | | message 2 | + | message n | | message 1 | + |_____________| |_____________| + + ORDER: DESC ASC + + --> + <t t-name="mail.widget.Thread.Content"> + <t t-set="messages" t-value="thread.getMessages()"/> + <t t-if="options.displayOrder === ORDER.ASC" t-call="mail.widget.Thread.Content.ASC"/> + <t t-else="" t-call="mail.widget.Thread.Content.DESC"/> + </t> + + <!-- + @param {mail.model.AbstractThread} thread + @param {Object} options + @param {boolean} [options.displayLoadMore=false] @param {string|integer} [options.messagesSeparatorPosition] 'top' or message ID, the separator is placed just after this message. + + _____________ + | | + | message n | + | ... | + | message 2 | + | message 1 | + |_____________| + + ASC Order + --> - <t t-name="mail.widget.Thread.Content"> - <t t-if="options.messagesSeparatorPosition == 'top'" t-call="mail.MessagesSeparator"/> + <t t-name="mail.widget.Thread.Content.ASC"> + <div class="o_mail_thread_content_asc"> + <t t-if="options.messagesSeparatorPosition == 'top'" t-call="mail.MessagesSeparator"/> + <t t-set="messages" t-value="messages.slice().reverse()"/> + <t t-call="mail.widget.Thread.Messages"/> + <t t-if="options.displayLoadMore" t-call="mail.widget.Thread.LoadMore"/> + </div> + </t> + + <!-- + @param {mail.model.AbstractThread} thread + @param {Object} options + @param {boolean} [options.displayBottomThreadFreeSpace=false] + @param {boolean} [options.displayLoadMore=false] + + _____________ + | | + | message 1 | + | message 2 | + | ... | + | message n | + |_____________| + + DESC Order + --> + <t t-name="mail.widget.Thread.Content.DESC"> + <div class="o_mail_thread_content_desc"> + <t t-if="options.displayLoadMore" t-call="mail.widget.Thread.LoadMore"/> + <t t-call="mail.widget.Thread.Messages"/> + <t t-if="options.displayBottomThreadFreeSpace"> + <div class="o_thread_bottom_free_space"/> + </t> + </div> + </t> + + <!-- + @param {mail.model.AbstractMessage[]} messages messages are ordered based + on desired display order + --> + <t t-name="mail.widget.Thread.Messages"> <t t-set="current_day" t-value="0"/> - <t t-if="options.displayOrder === ORDER.DESC" t-set="messages" t-value="messages.slice().reverse()"/> <t t-foreach="messages" t-as="message"> <div t-if="current_day !== message.getDateDay()" class="o_thread_date_separator"> <span class="o_thread_date"> @@ -261,7 +328,7 @@ <t t-if="message.needsModerationByUser()"> <t t-call="mail.MessageModerationDecision"/> </t> - <t t-elif="message.isAuthor()"> + <t t-elif="message.isMyselfAuthor()"> <t t-call="mail.MessageModerationFeedback"/> </t> </t> |
