diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/mail/views | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/mail/views')
20 files changed, 2087 insertions, 0 deletions
diff --git a/addons/mail/views/assets.xml b/addons/mail/views/assets.xml new file mode 100644 index 00000000..4290edba --- /dev/null +++ b/addons/mail/views/assets.xml @@ -0,0 +1,324 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data> + <template id="_assets_primary_variables" inherit_id="web._assets_primary_variables"> + <xpath expr="//link[last()]" position="after"> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/variables.scss"/> + </xpath> + </template> + + <template id="assets_backend" name="mail assets" inherit_id="web.assets_backend"> + <xpath expr="." position="inside"> + <script type="text/javascript" src="/mail/static/src/js/core/translation.js"></script> + + <script type="text/javascript" src="/mail/static/src/js/many2many_tags_email.js"></script> + <script type="text/javascript" src="/mail/static/src/js/many2one_avatar_user.js"></script> + <script type="text/javascript" src="/mail/static/src/js/field_char.js"></script> + + <!-- Widgets --> + <script type="text/javascript" src="/mail/static/src/js/document_viewer.js"></script> + <script type="text/javascript" src="/mail/static/src/js/basic_view.js"></script> + <!-- systray --> + <script type="text/javascript" src="/mail/static/src/js/systray/systray_activity_menu.js"></script> + <script type="text/javascript" src="/mail/static/src/js/tours/mail.js"></script> + <!-- tools --> + <script type="text/javascript" src="/mail/static/src/js/tools/debug_manager.js"></script> + <!-- filter menu --> + <script type="text/javascript" src="/mail/static/src/js/custom_filter_item.js"></script> + <!-- utils --> + <script type="text/javascript" src="/mail/static/src/js/utils.js"></script> + <script type="text/javascript" src="/mail/static/src/js/activity.js"></script> + <!-- Activity view type --> + <script type="text/javascript" src="/mail/static/src/js/views/activity/activity_view.js"></script> + <script type="text/javascript" src="/mail/static/src/js/views/activity/activity_model.js"></script> + <script type="text/javascript" src="/mail/static/src/js/views/activity/activity_controller.js"></script> + <script type="text/javascript" src="/mail/static/src/js/views/activity/activity_renderer.js"></script> + <script type="text/javascript" src="/mail/static/src/js/views/activity/activity_record.js"></script> + <script type="text/javascript" src="/mail/static/src/js/views/activity/activity_cell.js"></script> + <!-- Emojis --> + <script type="text/javascript" src="/mail/static/src/js/emojis.js"></script> + <script type="text/javascript" src="/mail/static/src/js/emojis_mixin.js"/> + <script type="text/javascript" src="/mail/static/src/js/field_emojis_common.js"/> + <script type="text/javascript" src="/mail/static/src/js/field_char_emojis.js"/> + <script type="text/javascript" src="/mail/static/src/js/field_text_emojis.js"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/emojis.scss"/> + <!-- Others --> + + <link rel="stylesheet" type="text/scss" href="/mail/static/src/variables.scss"/> + + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/discuss.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/composer.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/thread.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/systray.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/mail_activity.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/many2one_avatar_user.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/activity_view.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/scss/kanban_view.scss"/> + + <script type="text/javascript" src="/mail/static/src/bugfix/bugfix.js"></script> + <script type="text/javascript" src="/mail/static/src/component_hooks/use_drag_visible_dropzone/use_drag_visible_dropzone.js"></script> + <script type="text/javascript" src="/mail/static/src/component_hooks/use_refs/use_refs.js"></script> + <script type="text/javascript" src="/mail/static/src/component_hooks/use_store/use_store.js"></script> + <script type="text/javascript" src="/mail/static/src/components/activity/activity.js"></script> + <script type="text/javascript" src="/mail/static/src/components/activity_box/activity_box.js"></script> + <script type="text/javascript" src="/mail/static/src/components/activity_mark_done_popover/activity_mark_done_popover.js"></script> + <script type="text/javascript" src="/mail/static/src/components/attachment/attachment.js"></script> + <script type="text/javascript" src="/mail/static/src/components/attachment_box/attachment_box.js"></script> + <script type="text/javascript" src="/mail/static/src/components/attachment_delete_confirm_dialog/attachment_delete_confirm_dialog.js"/> + <script type="text/javascript" src="/mail/static/src/components/attachment_list/attachment_list.js"></script> + <script type="text/javascript" src="/mail/static/src/components/attachment_viewer/attachment_viewer.js"></script> + <script type="text/javascript" src="/mail/static/src/components/autocomplete_input/autocomplete_input.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chat_window/chat_window.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chat_window_header/chat_window_header.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chat_window_hidden_menu/chat_window_hidden_menu.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chat_window_manager/chat_window_manager.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chatter/chatter.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chatter_container/chatter_container.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chatter_topbar/chatter_topbar.js"></script> + <script type="text/javascript" src="/mail/static/src/components/composer/composer.js"></script> + <script type="text/javascript" src="/mail/static/src/components/composer_suggested_recipient/composer_suggested_recipient.js"/> + <script type="text/javascript" src="/mail/static/src/components/composer_suggested_recipient_list/composer_suggested_recipient_list.js"/> + <script type="text/javascript" src="/mail/static/src/components/composer_suggestion/composer_suggestion.js"/> + <script type="text/javascript" src="/mail/static/src/components/composer_suggestion_list/composer_suggestion_list.js"/> + <script type="text/javascript" src="/mail/static/src/components/composer_text_input/composer_text_input.js"></script> + <script type="text/javascript" src="/mail/static/src/components/dialog/dialog.js"></script> + <script type="text/javascript" src="/mail/static/src/components/dialog_manager/dialog_manager.js"></script> + <script type="text/javascript" src="/mail/static/src/components/discuss/discuss.js"></script> + <script type="text/javascript" src="/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js"></script> + <script type="text/javascript" src="/mail/static/src/components/discuss_sidebar/discuss_sidebar.js"></script> + <script type="text/javascript" src="/mail/static/src/components/discuss_sidebar_item/discuss_sidebar_item.js"></script> + <script type="text/javascript" src="/mail/static/src/components/drop_zone/drop_zone.js"></script> + <script type="text/javascript" src="/mail/static/src/components/editable_text/editable_text.js"></script> + <script type="text/javascript" src="/mail/static/src/components/emojis_popover/emojis_popover.js"></script> + <script type="text/javascript" src="/mail/static/src/components/file_uploader/file_uploader.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follow_button/follow_button.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follower/follower.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follower_list_menu/follower_list_menu.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follower_subtype/follower_subtype.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follower_subtype_list/follower_subtype_list.js"></script> + <script type="text/javascript" src="/mail/static/src/components/mail_template/mail_template.js"></script> + <script type="text/javascript" src="/mail/static/src/components/message/message.js"></script> + <script type="text/javascript" src="/mail/static/src/components/message_author_prefix/message_author_prefix.js"></script> + <script type="text/javascript" src="/mail/static/src/components/message_list/message_list.js"></script> + <script type="text/javascript" src="/mail/static/src/components/message_seen_indicator/message_seen_indicator.js"></script> + <script type="text/javascript" src="/mail/static/src/components/messaging_menu/messaging_menu.js"></script> + <script type="text/javascript" src="/mail/static/src/components/mobile_messaging_navbar/mobile_messaging_navbar.js"></script> + <script type="text/javascript" src="/mail/static/src/components/moderation_ban_dialog/moderation_ban_dialog.js"></script> + <script type="text/javascript" src="/mail/static/src/components/moderation_discard_dialog/moderation_discard_dialog.js"></script> + <script type="text/javascript" src="/mail/static/src/components/moderation_reject_dialog/moderation_reject_dialog.js"></script> + <script type="text/javascript" src="/mail/static/src/components/notification_alert/notification_alert.js"/> + <script type="text/javascript" src="/mail/static/src/components/notification_group/notification_group.js"></script> + <script type="text/javascript" src="/mail/static/src/components/notification_list/notification_list.js"></script> + <script type="text/javascript" src="/mail/static/src/components/notification_popover/notification_popover.js"></script> + <script type="text/javascript" src="/mail/static/src/components/notification_request/notification_request.js"/> + <script type="text/javascript" src="/mail/static/src/components/partner_im_status_icon/partner_im_status_icon.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_icon/thread_icon.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_needaction_preview/thread_needaction_preview.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_preview/thread_preview.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_textual_typing_status/thread_textual_typing_status.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_typing_icon/thread_typing_icon.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_view/thread_view.js"></script> + <script type="text/javascript" src="/mail/static/src/model/model_core.js"></script> + <script type="text/javascript" src="/mail/static/src/model/model_errors.js"></script> + <script type="text/javascript" src="/mail/static/src/model/model_field.js"></script> + <script type="text/javascript" src="/mail/static/src/model/model_field_command.js"></script> + <script type="text/javascript" src="/mail/static/src/model/model_manager.js"></script> + <script type="text/javascript" src="/mail/static/src/models/activity/activity.js"></script> + <script type="text/javascript" src="/mail/static/src/models/activity_type/activity_type.js"></script> + <script type="text/javascript" src="/mail/static/src/models/attachment/attachment.js"></script> + <script type="text/javascript" src="/mail/static/src/models/attachment_viewer/attachment_viewer.js"></script> + <script type="text/javascript" src="/mail/static/src/models/canned_response/canned_response.js"/> + <script type="text/javascript" src="/mail/static/src/models/channel_command/channel_command.js"/> + <script type="text/javascript" src="/mail/static/src/models/chat_window/chat_window.js"></script> + <script type="text/javascript" src="/mail/static/src/models/chat_window_manager/chat_window_manager.js"></script> + <script type="text/javascript" src="/mail/static/src/models/chatter/chatter.js"></script> + <script type="text/javascript" src="/mail/static/src/models/composer/composer.js"></script> + <script type="text/javascript" src="/mail/static/src/models/country/country.js"></script> + <script type="text/javascript" src="/mail/static/src/models/device/device.js"></script> + <script type="text/javascript" src="/mail/static/src/models/dialog/dialog.js"></script> + <script type="text/javascript" src="/mail/static/src/models/dialog_manager/dialog_manager.js"></script> + <script type="text/javascript" src="/mail/static/src/models/discuss/discuss.js"></script> + <script type="text/javascript" src="/mail/static/src/models/follower/follower.js"></script> + <script type="text/javascript" src="/mail/static/src/models/follower_subtype/follower_subtype.js"></script> + <script type="text/javascript" src="/mail/static/src/models/follower_subtype_list/follower_subtype_list.js"></script> + <script type="text/javascript" src="/mail/static/src/models/locale/locale.js"></script> + <script type="text/javascript" src="/mail/static/src/models/mail_template/mail_template.js"></script> + <script type="text/javascript" src="/mail/static/src/models/message/message.js"></script> + <script type="text/javascript" src="/mail/static/src/models/message_seen_indicator/message_seen_indicator.js"></script> + <script type="text/javascript" src="/mail/static/src/models/messaging/messaging.js"></script> + <script type="text/javascript" src="/mail/static/src/models/messaging_initializer/messaging_initializer.js"></script> + <script type="text/javascript" src="/mail/static/src/models/messaging_menu/messaging_menu.js"></script> + <script type="text/javascript" src="/mail/static/src/models/messaging_notification_handler/messaging_notification_handler.js"></script> + <script type="text/javascript" src="/mail/static/src/models/model/model.js"></script> + <script type="text/javascript" src="/mail/static/src/models/notification/notification.js"></script> + <script type="text/javascript" src="/mail/static/src/models/notification_group/notification_group.js"></script> + <script type="text/javascript" src="/mail/static/src/models/notification_group_manager/notification_group_manager.js"></script> + <script type="text/javascript" src="/mail/static/src/models/partner/partner.js"></script> + <script type="text/javascript" src="/mail/static/src/models/suggested_recipient_info/suggested_recipient_info.js"/> + <script type="text/javascript" src="/mail/static/src/models/thread/thread.js"></script> + <script type="text/javascript" src="/mail/static/src/models/thread_cache/thread_cache.js"></script> + <script type="text/javascript" src="/mail/static/src/models/thread_partner_seen_info/thread_partner_seen_info.js"></script> + <script type="text/javascript" src="/mail/static/src/models/thread_view/thread_view.js"></script> + <script type="text/javascript" src="/mail/static/src/models/thread_view/thread_viewer.js"></script> + <script type="text/javascript" src="/mail/static/src/models/user/user.js"></script> + <script type="text/javascript" src="/mail/static/src/services/chat_window_service/chat_window_service.js"></script> + <script type="text/javascript" src="/mail/static/src/services/dialog_service/dialog_service.js"></script> + <script type="text/javascript" src="/mail/static/src/utils/deferred/deferred.js"></script> + <script type="text/javascript" src="/mail/static/src/utils/throttle/throttle.js"></script> + <script type="text/javascript" src="/mail/static/src/utils/timer/timer.js"></script> + <script type="text/javascript" src="/mail/static/src/utils/utils.js"></script> + <script type="text/javascript" src="/mail/static/src/widgets/discuss/discuss.js"></script> + <script type="text/javascript" src="/mail/static/src/widgets/discuss_invite_partner_dialog/discuss_invite_partner_dialog.js"></script> + <script type="text/javascript" src="/mail/static/src/widgets/form_renderer/form_renderer.js"></script> + <script type="text/javascript" src="/mail/static/src/widgets/messaging_menu/messaging_menu.js"></script> + <script type="text/javascript" src="/mail/static/src/widgets/notification_alert/notification_alert.js"/> + + <!-- notification_list_item.scss contains variables/mixins, it must be positioned before sub-components of NotificationList --> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/notification_list/notification_list_item.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/bugfix/bugfix.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/activity/activity.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/activity_box/activity_box.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/activity_mark_done_popover/activity_mark_done_popover.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/attachment/attachment.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/attachment_box/attachment_box.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/attachment_list/attachment_list.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/attachment_viewer/attachment_viewer.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/chat_window/chat_window.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/chat_window_header/chat_window_header.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/chat_window_hidden_menu/chat_window_hidden_menu.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/chat_window_manager/chat_window_manager.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/chatter/chatter.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/chatter_container/chatter_container.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/chatter_topbar/chatter_topbar.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/composer/composer.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/composer_suggested_recipient/composer_suggested_recipient.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/composer_suggested_recipient_list/composer_suggested_recipient_list.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/composer_suggestion/composer_suggestion.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/composer_suggestion_list/composer_suggestion_list.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/composer_text_input/composer_text_input.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/dialog/dialog.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/discuss/discuss.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/discuss_sidebar/discuss_sidebar.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/discuss_sidebar_item/discuss_sidebar_item.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/drop_zone/drop_zone.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/emojis_popover/emojis_popover.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/file_uploader/file_uploader.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/follow_button/follow_button.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/follower/follower.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/follower_list_menu/follower_list_menu.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/follower_subtype/follower_subtype.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/follower_subtype_list/follower_subtype_list.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/mail_template/mail_template.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/message/message.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/message_author_prefix/message_author_prefix.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/message_list/message_list.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/message_seen_indicator/message_seen_indicator.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/messaging_menu/messaging_menu.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/mobile_messaging_navbar/mobile_messaging_navbar.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/notification_group/notification_group.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/notification_list/notification_list.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/notification_popover/notification_popover.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/notification_request/notification_request.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/partner_im_status_icon/partner_im_status_icon.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/thread_icon/thread_icon.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/thread_needaction_preview/thread_needaction_preview.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/thread_preview/thread_preview.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/thread_textual_typing_status/thread_textual_typing_status.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/thread_typing_icon/thread_typing_icon.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/components/thread_view/thread_view.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/widgets/discuss/discuss.scss"/> + <link rel="stylesheet" type="text/scss" href="/mail/static/src/widgets/form_renderer/form_renderer.scss"/> + </xpath> + </template> + + <template id="assets_backend_prod_only" name="mail prod only assets" inherit_id="web.assets_backend_prod_only"> + <xpath expr="." position="inside"> + <script type="text/javascript" src="/mail/static/src/js/main.js"></script> + </xpath> + </template> + + <template id="assets_tests" name="Mail Assets Tests" inherit_id="web.assets_tests"> + <xpath expr="." position="inside"> + <script type="text/javascript" src="/mail/static/tests/tours/mail_full_composer_test_tour.js"/> + </xpath> + </template> + + <template id="tests_assets" name="mail_tests_assets" inherit_id="web.tests_assets"> + <xpath expr="." position="inside"> + <script type="text/javascript" src="/mail/static/src/env/test_env.js"></script> + <script type="text/javascript" src="/mail/static/src/utils/test_utils.js"></script> + <script type="text/javascript" src="/mail/static/tests/helpers/mock_models.js"></script> + <script type="text/javascript" src="/mail/static/tests/helpers/mock_server.js"></script> + </xpath> + </template> + + <template id="qunit_suite" name="mail_tests" inherit_id="web.qunit_suite_tests"> + <xpath expr="." position="inside"> + <script type="text/javascript" src="/mail/static/tests/chatter_tests.js"></script> + <script type="text/javascript" src="/mail/static/tests/mail_utils_tests.js"></script> + <script type="text/javascript" src="/mail/static/tests/document_viewer_tests.js"></script> + <script type="text/javascript" src="/mail/static/tests/many2one_avatar_user_tests.js"></script> + <!-- systray --> + <script type="text/javascript" src="/mail/static/tests/systray/systray_activity_menu_tests.js"></script> + <!-- tools --> + <script type="text/javascript" src="/mail/static/tests/tools/debug_manager_tests.js"></script>> + <!-- activity view --> + <script type="text/javascript" src="/mail/static/tests/activity_tests.js"></script> + + <script type="text/javascript" src="/mail/static/src/bugfix/bugfix_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/component_hooks/use_store/use_store_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/activity/activity_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/activity_mark_done_popover/activity_mark_done_popover_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/attachment/attachment_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/attachment_box/attachment_box_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chat_window_manager/chat_window_manager_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chatter/chatter_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chatter/chatter_suggested_recipient_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/chatter_topbar/chatter_topbar_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/composer/composer_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/composer_suggestion/composer_suggestion_canned_response_tests.js"/> + <script type="text/javascript" src="/mail/static/src/components/composer_suggestion/composer_suggestion_channel_tests.js"/> + <script type="text/javascript" src="/mail/static/src/components/composer_suggestion/composer_suggestion_command_tests.js"/> + <script type="text/javascript" src="/mail/static/src/components/composer_suggestion/composer_suggestion_partner_tests.js"/> + <script type="text/javascript" src="/mail/static/src/components/dialog_manager/dialog_manager_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/discuss/tests/discuss_domain_tests.js"/> + <script type="text/javascript" src="/mail/static/src/components/discuss/tests/discuss_inbox_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/discuss/tests/discuss_moderation_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/discuss/tests/discuss_pinned_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/discuss/tests/discuss_sidebar_tests.js"/> + <script type="text/javascript" src="/mail/static/src/components/discuss/tests/discuss_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/file_uploader/file_uploader_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follow_button/follow_button_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follower/follower_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follower_list_menu/follower_list_menu_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/follower_subtype/follower_subtype_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/message/message_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/message_seen_indicator/message_seen_indicator_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/messaging_menu/messaging_menu_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/notification_list/notification_list_notification_group_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/notification_list/notification_list_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/partner_im_status_icon/partner_im_status_icon_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_icon/thread_icon_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_needaction_preview/thread_needaction_preview_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_preview/thread_preview_tests.js"/> + <script type="text/javascript" src="/mail/static/src/components/thread_textual_typing_status/thread_textual_typing_status_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/components/thread_view/thread_view_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/models/attachment/attachment_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/models/message/message_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/models/messaging/messaging_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/models/thread/thread_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/utils/throttle/throttle_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/utils/timer/timer_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/widgets/form_renderer/form_renderer_tests.js"></script> + <script type="text/javascript" src="/mail/static/src/widgets/notification_alert/notification_alert_tests.js"/> + </xpath> + </template> + + <template id="qunit_mobile_suite" name="mail_qunit_mobile_suite" inherit_id="web.qunit_mobile_suite_tests"> + <xpath expr="." position="inside"> + <script type="text/javascript" src="/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection_tests.js"/> + </xpath> + </template> + </data> +</odoo> diff --git a/addons/mail/views/ir_actions_views.xml b/addons/mail/views/ir_actions_views.xml new file mode 100644 index 00000000..0c7e2ef6 --- /dev/null +++ b/addons/mail/views/ir_actions_views.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data> + + <record model="ir.ui.view" id="view_server_action_form_template"> + <field name="name">ir.actions.server.form</field> + <field name="model">ir.actions.server</field> + <field name="inherit_id" ref="base.view_server_action_form"/> + <field name="arch" type="xml"> + <xpath expr="//page[@name='page_object']" position="after"> + <page string="Activity" name="next_activity" autofocus="autofocus" attrs="{'invisible': [('state', '!=', 'next_activity')]}"> + <group> + <group> + <field name="activity_type_id" options="{'no_create': True, 'no_open': True}" attrs="{'required': [('state', '=', 'next_activity')]}"/> + <field name="activity_summary" placeholder="e.g. Discuss proposal"/> + </group> + <group> + <label for="activity_date_deadline_range"/> + <div class="o_row"> + <field name="activity_date_deadline_range"/> + <field name="activity_date_deadline_range_type" attrs="{ + 'required': [('state', '=', 'next_activity'), ('activity_date_deadline_range', '>', 0)] + }"/> + </div> + <field name="activity_user_type"/> + <field name="activity_user_field_name" attrs="{ + 'invisible': [('activity_user_type', '=', 'specific')], + 'required': [('state', '=', 'next_activity'), ('activity_user_type', '=', 'generic')] + }"/> + <field name="activity_user_id" attrs="{ + 'invisible': [('activity_user_type', '=', 'generic')], + 'required': [('state', '=', 'next_activity'), ('activity_user_type', '=', 'specific')] + }"/> + </group> + </group> + <field name="activity_note" placeholder="Log a note..."/> + </page> + </xpath> + <xpath expr="//field[@name='link_field_id']" position="after"> + <field name="partner_ids" widget="many2many_tags" + attrs="{'invisible': [('state', '!=', 'followers')]}"/> + <field name="channel_ids" widget="many2many_tags" + attrs="{'invisible': [('state', '!=', 'followers')]}"/> + <field name="template_id" + attrs="{'invisible': [('state', '!=', 'email')], + 'required': [('state', '=', 'email')]}"/> + </xpath> + </field> + </record> + + </data> +</odoo> diff --git a/addons/mail/views/ir_model_views.xml b/addons/mail/views/ir_model_views.xml new file mode 100644 index 00000000..f146375f --- /dev/null +++ b/addons/mail/views/ir_model_views.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <record id="model_form_view" model="ir.ui.view"> + <field name="model">ir.model</field> + <field name="inherit_id" ref="base.view_model_form"/> + <field name="arch" type="xml"> + <field name="transient" position="after"> + <field name="is_mail_thread" attrs="{'readonly': [('state','!=', 'manual')]}" groups="base.group_no_one"/> + <field name="is_mail_activity" attrs="{'readonly': [('state','!=', 'manual')]}" groups="base.group_no_one"/> + <field name="is_mail_blacklist" attrs="{'readonly': [('state','!=', 'manual')]}" groups="base.group_no_one"/> + </field> + <xpath expr="//field[@name='field_id']//field[@name='copied']" position="after"> + <field name="tracking" attrs="{'readonly': [('state','!=', 'manual')]}"/> + </xpath> + </field> + </record> + + <record id="model_search_view" model="ir.ui.view"> + <field name="model">ir.model</field> + <field name="inherit_id" ref="base.view_model_search"/> + <field name="arch" type="xml"> + <field name="model" position="after"> + <filter string="Mail Thread" name="is_mail_thread" domain="[('is_mail_thread', '=', True)]"/> + <filter string="Mail Activity" name="is_mail_activity" domain="[('is_mail_activity', '=', True)]"/> + <filter string="Mail Blacklist" name="is_mail_blacklist" domain="[('is_mail_blacklist', '=', True)]"/> + </field> + </field> + </record> + + <record id="field_form_view" model="ir.ui.view"> + <field name="model">ir.model.fields</field> + <field name="inherit_id" ref="base.view_model_fields_form"/> + <field name="arch" type="xml"> + <field name="copied" position="after"> + <field name="tracking" attrs="{'readonly': [('state','!=', 'manual')]}"/> + </field> + </field> + </record> + +</odoo> diff --git a/addons/mail/views/mail_activity_views.xml b/addons/mail/views/mail_activity_views.xml new file mode 100644 index 00000000..71bc3592 --- /dev/null +++ b/addons/mail/views/mail_activity_views.xml @@ -0,0 +1,220 @@ +<?xml version="1.0"?> +<odoo> + <record id="mail_activity_type_view_form" model="ir.ui.view"> + <field name="name">mail.activity.type.view.form</field> + <field name="model">mail.activity.type</field> + <field name="arch" type="xml"> + <form string="Activities"> + <sheet> + <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/> + <div class="oe_title"> + <label for="name" class="oe_edit_only"/> + <h1><field name="name"/></h1> + </div> + <group> + <group name="activity_details"> + <field name="active" invisible="1"/> + <field name="category"/> + <field name="default_user_id" options="{'no_create': True, 'no_edit': True}" domain="[('share', '=', False)]"/> + <field name="res_model_id" groups="base.group_no_one"/> + <field name="res_model_change" invisible="1"/> + <field name="initial_res_model_id" invisible="1"/> + <field name="summary"/> + <field name="icon" groups="base.group_no_one"/> + <field name="decoration_type" groups="base.group_no_one"/> + </group> + <group name="activity_planning"> + <field name="force_next"/> + <field name="default_next_type_id" attrs="{'required': [('force_next', '=', True)]}" context="{'default_res_model_id': res_model_id}"/> + <field name="next_type_ids" widget="many2many_tags" + attrs="{'invisible': ['|', ('force_next', '=', True), ('category', '=', 'upload_file')]}" context="{'default_res_model_id': res_model_id}"/> + <field name="mail_template_ids" widget="many2many_tags" + domain="[('model_id', '=', res_model_id)]" + attrs="{'invisible': [('res_model_id', '=', False)]}" + context="{'default_model_id': res_model_id}"/> + <label for="delay_count"/> + <div> + <div class="o_row"> + <field name="delay_count"/> + <field name="delay_unit"/> + </div> + <field name="delay_from"/> + </div> + </group> + </group> + <group> + <field name="default_description"/> + </group> + <p class="alert alert-info" role="alert" attrs="{'invisible': [('res_model_change', '=', False)]}">Modifying the model can have an impact on existing activities using this activity type, be careful.</p> + </sheet> + </form> + </field> + </record> + + <record id="mail_activity_type_view_search" model="ir.ui.view"> + <field name="name">mail.activity.type.search</field> + <field name="model">mail.activity.type</field> + <field name="arch" type="xml"> + <search string="Activities"> + <field name="name"/> + <filter string="Archived" domain="[('active', '=', False)]" name="archived"/> + </search> + </field> + </record> + + <record id="mail_activity_type_view_tree" model="ir.ui.view"> + <field name="name">mail.activity.type.view.tree</field> + <field name="model">mail.activity.type</field> + <field name="arch" type="xml"> + <tree string="Activities" sample="1"> + <field name="sequence" widget="handle"/> + <field name="name"/> + <field name="summary"/> + <field name="delay_label" string="Planned in" class="text-right"/> + <field name="delay_from" string="Type"/> + <field name="res_model_id" groups="base.group_no_one"/> + <field name="icon" groups="base.group_no_one"/> + </tree> + </field> + </record> + + <record id="mail_activity_type_action" model="ir.actions.act_window"> + <field name="name">Activity Types</field> + <field name="res_model">mail.activity.type</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem + id="menu_mail_activity_type" + action="mail_activity_type_action" + parent="mail.mail_menu_technical" + sequence="10" + /> + + <record id="mail_activity_action" model="ir.actions.act_window"> + <field name="name">Activities</field> + <field name="res_model">mail.activity</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem + id="menu_mail_activities" + action="mail_activity_action" + parent="mail.mail_menu_technical" + sequence="11" + /> + + <record id="mail_activity_view_form_popup" model="ir.ui.view"> + <field name="name">mail.activity.view.form.popup</field> + <field name="model">mail.activity</field> + <field name="priority">20</field> + <field name="arch" type="xml"> + <form string="Log an Activity" create="false"> + <sheet string="Activity"> + <group invisible="1"> + <field name="activity_category" invisible="1" /> + <field name="res_model" invisible="1"/> + <field name="res_model_id" invisible="1"/> + <field name="res_id" invisible="1" widget="integer"/> + <field name="force_next" invisible="1"/> + <field name="previous_activity_type_id"/> + <field name="has_recommended_activities"/> + </group> + <group attrs="{'invisible': [('has_recommended_activities','=',False)]}"> + <div class="o_row"> + <strong>Recommended Activities</strong> + <field name="recommended_activity_type_id" widget="selection_badge" + domain="[('previous_type_ids', '=', previous_activity_type_id)]" + nolabel="1"/> + </div> + </group> + <group> + <group> + <field name="activity_type_id" required="1" options="{'no_create': True, 'no_open': True}"/> + <field name="summary" placeholder="e.g. Discuss proposal"/> + </group> + <group> + <field name="date_deadline"/> + <field name="user_id"/> + </group> + </group> + <field name="note" placeholder="Log a note..."/> + <footer> + <field name="id" invisible="1"/> + <button string="Schedule" name="action_close_dialog" type="object" class="btn-primary" + attrs="{'invisible': [('id', '!=', False)]}"/> + <button string="Save" name="action_close_dialog" type="object" class="btn-primary" + attrs="{'invisible': [('id', '=', False)]}"/> + <button attrs="{'invisible': [('force_next', '=', True)]}" string="Mark as Done" name="action_done" + type="object" class="btn-secondary" + context="{'mail_activity_quick_update': True}"/> + <button attrs="{'invisible': [('force_next', '=', True)]}" string="Done & Schedule Next" name="action_done_schedule_next" + type="object" class="btn-secondary" + context="{'mail_activity_quick_update': True}"/> + <button attrs="{'invisible': [('force_next', '=', False)]}" string="Done & Launch Next" name="action_done_schedule_next" + type="object" class="btn-secondary" + context="{'mail_activity_quick_update': True}"/> + <button string="Discard" class="btn-secondary" special="cancel" /> + </footer> + </sheet> + </form> + </field> + </record> + + <record id="mail_activity_view_search" model="ir.ui.view"> + <field name="name">mail.activity.view.search</field> + <field name="model">mail.activity</field> + <field name="arch" type="xml"> + <search string="Activity"> + <field name="res_model_id"/> + <field name="summary"/> + <field name="activity_type_id"/> + <filter invisible="1" string="Late Activities" name="activities_overdue" + domain="[('date_deadline', '<', context_today().strftime('%Y-%m-%d'))]" + help="Show all records which has next action date is before today"/> + <filter invisible="1" string="Today Activities" name="activities_today" + domain="[('date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/> + <filter invisible="1" string="Future Activities" name="activities_upcoming_all" + domain="[('date_deadline', '>', context_today().strftime('%Y-%m-%d')) + ]"/> + <group expand="0" string="Group By"> + <filter string="Deadline" name="date_deadline" context="{'group_by': 'date_deadline'}"/> + <filter string="Created By" name="createdby" context="{'group_by': 'create_uid'}"/> + <filter string="Activity Type" name="activittype" context="{'group_by': 'activity_type_id'}"/> + </group> + </search> + </field> + </record> + + <record id="mail_activity_view_tree" model="ir.ui.view"> + <field name="name">mail.activity.view.tree</field> + <field name="model">mail.activity</field> + <field name="arch" type="xml"> + <tree string="Next Activities" + decoration-danger="date_deadline < current_date" + decoration-success="date_deadline == current_date" + default_order="date_deadline" create="false"> + <field name="res_name"/> + <field name="activity_type_id"/> + <field name="summary"/> + <field name="date_deadline"/> + </tree> + </field> + </record> + + <record id="mail_activity_view_calendar" model="ir.ui.view"> + <field name="name">mail.activity.view.calendar</field> + <field name="model">mail.activity</field> + <field name="priority" eval="2"/> + <field name="arch" type="xml"> + <calendar string="Activity" date_start="date_deadline" color="activity_type_id"> + <field name="user_id" avatar_field="image_128"/> + <field name="res_name"/> + <field name="date_deadline"/> + <field name="summary"/> + <field name="activity_type_id" filters="1" invisible="1"/> + </calendar> + </field> + </record> + +</odoo> diff --git a/addons/mail/views/mail_alias_views.xml b/addons/mail/views/mail_alias_views.xml new file mode 100644 index 00000000..3584bac5 --- /dev/null +++ b/addons/mail/views/mail_alias_views.xml @@ -0,0 +1,88 @@ +<?xml version="1.0"?> +<odoo> + <data> + + <!-- Alias Form View --> + <record model="ir.ui.view" id="view_mail_alias_form"> + <field name="name">mail.alias.form</field> + <field name="model">mail.alias</field> + <field name="arch" type="xml"> + <form string="Alias"> + <sheet> + <div class="oe_button_box" name="button_box"> + <button name="open_document" string="Open Document" + type="object" class="oe_link" + attrs="{'invisible': ['|', ('alias_model_id', '=', False), ('alias_force_thread_id', '=', 0)]}"/> + <button name="open_parent_document" string="Open Parent Document" + type="object" class="oe_link" icon="fa-sitemap" + attrs="{'invisible': ['|', ('alias_parent_model_id', '=', False), ('alias_parent_thread_id', '=', 0)]}"/> + </div> + <h2><field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline"/></h2> + <group> + <field name="alias_model_id"/> + <field name="alias_force_thread_id"/> + <field name="alias_defaults"/> + <field name="alias_contact"/> + <field name="alias_user_id"/> + <field name="alias_parent_model_id"/> + <field name="alias_parent_thread_id"/> + <field name="alias_bounced_content" attrs="{'invisible':[('alias_contact', '=', 'everyone')]}"/> + </group> + </sheet> + </form> + </field> + </record> + + <!-- Alias List View --> + <record model="ir.ui.view" id="view_mail_alias_tree"> + <field name="name">mail.alias.tree</field> + <field name="model">mail.alias</field> + <field name="arch" type="xml"> + <tree string="Alias"> + <field name="alias_name"/> + <field name="alias_model_id"/> + <field name="alias_user_id"/> + <field name="alias_defaults"/> + <field name="alias_contact"/> + </tree> + </field> + </record> + + <!-- Alias Search View --> + <record model="ir.ui.view" id="view_mail_alias_search"> + <field name="name">mail.alias.search</field> + <field name="model">mail.alias</field> + <field name="arch" type="xml"> + <search string="Search Alias"> + <field name="alias_name"/> + <field name="alias_model_id"/> + <field name="alias_force_thread_id"/> + <field name="alias_parent_model_id"/> + <field name="alias_parent_thread_id"/> + <separator/> + <filter string="Active" name="active" domain="[('alias_name', '!=', False)]"/> + <group expand="0" string="Group By"> + <filter string="User" name="User" context="{'group_by':'alias_user_id'}"/> + <filter string="Model" name="Model" context="{'group_by':'alias_model_id'}"/> + </group> + </search> + </field> + </record> + + <record id="action_view_mail_alias" model="ir.actions.act_window"> + <field name="name">Aliases</field> + <field name="res_model">mail.alias</field> + <field name="context">{ + 'search_default_active': True, + } + </field> + </record> + + <menuitem id="mail_alias_menu" + parent="base.menu_email" + action="action_view_mail_alias" + sequence="11" + groups="base.group_no_one"/> + + </data> +</odoo> diff --git a/addons/mail/views/mail_blacklist_views.xml b/addons/mail/views/mail_blacklist_views.xml new file mode 100644 index 00000000..4ad4dc86 --- /dev/null +++ b/addons/mail/views/mail_blacklist_views.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="UTF-8"?> +<odoo> + <record id="mail_blacklist_view_tree" model="ir.ui.view"> + <field name="name">mail.blacklist.view.tree</field> + <field name="model">mail.blacklist</field> + <field name="arch" type="xml"> + <tree string="Email Blacklist"> + <field name="create_date" string="Blacklist Date"/> + <field name="email"/> + </tree> + </field> + </record> + + <record id="mail_blacklist_view_form" model="ir.ui.view"> + <field name="name">mail.blacklist.view.form</field> + <field name="model">mail.blacklist</field> + <field name="arch" type="xml"> + <form string="Add Email Blacklist" duplicate="false" edit="false"> + <header> + <button name="mail_action_blacklist_remove" string="Unblacklist" + type="object" class="oe_highlight" context="{'default_email': email}" + attrs="{'invisible': ['|', ('active', '=', False), ('email', '=', False)]}"/> + <button name="action_add" string="Blacklist" + type="object" class="oe_highlight" + attrs="{'invisible': ['|', ('active', '=', True), ('email', '=', False)]}"/> + </header> + <sheet> + <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/> + <group> + <group> + <field name="email"/> + <field name="active" readonly="1"/> + <br/> + </group> + </group> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids" groups="base.group_user"/> + <field name="message_ids"/> + </div> + </form> + </field> + </record> + + <record id="mail_blacklist_view_search" model="ir.ui.view"> + <field name="name">mail.blacklist.view.search</field> + <field name="model">mail.blacklist</field> + <field name="arch" type="xml"> + <search> + <field name="email"/> + <filter string="Archived" name="inactive" domain="[('active','=',False)]"/> + </search> + </field> + </record> + + <record id="mail_blacklist_action" model="ir.actions.act_window"> + <field name="name">Blacklisted Email Addresses</field> + <field name="res_model">mail.blacklist</field> + <field name="view_id" ref="mail_blacklist_view_tree"/> + <field name="search_view_id" ref="mail_blacklist_view_search"/> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Add an email address in the blacklist + </p><p> + Email addresses that are blacklisted means that the recipient won't receive mass mailing anymore. + </p> + </field> + </record> + + <!-- Technical Menu --> + <menuitem id="mail_blacklist_menu" + name="Email Blacklist" + action="mail_blacklist_action" + parent="mail.mail_menu_technical" + sequence="22"/> + +</odoo> diff --git a/addons/mail/views/mail_channel_views.xml b/addons/mail/views/mail_channel_views.xml new file mode 100644 index 00000000..78853166 --- /dev/null +++ b/addons/mail/views/mail_channel_views.xml @@ -0,0 +1,227 @@ +<?xml version="1.0"?> +<odoo> + <data> + + <!-- mail.channel.partner --> + <record id="mail_channel_partner_view_tree" model="ir.ui.view"> + <field name="name">mail.channel.partner.tree</field> + <field name="model">mail.channel.partner</field> + <field name="priority">10</field> + <field name="arch" type="xml"> + <tree string="Channels"> + <field name="partner_id"/> + <field name="channel_id"/> + <field name="seen_message_id"/> + </tree> + </field> + </record> + + <record id="mail_channel_partner_view_form" model="ir.ui.view"> + <field name="name">mail.channel.partner.form</field> + <field name="model">mail.channel.partner</field> + <field name="arch" type="xml"> + <form string="Channel"> + <sheet> + <group> + <field name="partner_id"/> + <field name="channel_id"/> + <field name="seen_message_id"/> + </group> + </sheet> + </form> + </field> + </record> + + <record id="mail_channel_partner_action" model="ir.actions.act_window"> + <field name="name">Channels/Partner</field> + <field name="res_model">mail.channel.partner</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem name="Channels/Partner" + id="mail_channel_partner_menu" + parent="base.menu_email" + action="mail_channel_partner_action" + sequence="21" + groups="base.group_no_one"/> + + <!-- mail.channel --> + <record id="mail_channel_view_kanban" model="ir.ui.view"> + <field name="name">mail.channel.kanban</field> + <field name="model">mail.channel</field> + <field name="priority" eval="10"/> + <field name="arch" type="xml"> + <kanban> + <field name="id"/> + <field name="description"/> + <field name="is_subscribed"/> + <field name="group_ids"/> + <field name="public"/> + <templates> + <t t-name="kanban-description"> + <div class="oe_group_description" t-if="record.description.raw_value"> + <field name="description"/> + </div> + </t> + <t t-name="kanban-box"> + <div class="oe_module_vignette oe_kanban_global_click"> + <img t-att-src="kanban_image('mail.channel', 'image_128', record.id.raw_value)" class="oe_module_icon" alt="Channel"/> + <div class="oe_module_desc"> + <h4 class="o_kanban_record_title">#<field name="name"/></h4> + <p class="oe_module_name"> + <field name="description"/> + </p> + <button type="object" attrs="{'invisible':['|', ('is_subscribed','=',True), ('group_ids', '!=', [])]}" class="btn btn-primary float-right" name="channel_join_and_get_info">Join</button> + <button type="object" attrs="{'invisible':['|', ('is_subscribed','=',False), ('group_ids', '!=', [])]}" class="btn btn-secondary float-right" name="action_unfollow">Leave</button> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <record id="mail_channel_view_form" model="ir.ui.view"> + <field name="name">mail.channel.form</field> + <field name="model">mail.channel</field> + <field name="priority" eval="10"/> + <field name="arch" type="xml"> + <form string="Mail Channel Form"> + <header> + <button name="send_guidelines" type="object" string="Send guidelines" confirm="You are going to send the guidelines to all the subscribers. Do you confirm the action?" attrs="{'invisible':['|',('moderation_guidelines','=',False), ('is_moderator', '=', False)]}"/> + </header> + <sheet> + <div class="oe_button_box" name="button_box"> + <field name="is_moderator" invisible="1"/> + <button class="btn oe_stat_button" name="mail.mail_moderation_action" type="action" attrs="{'invisible':[('is_moderator', '=', False)]}" icon="fa-bars" context="{'search_default_channel_id': active_id}"> + <field string="Moderation List" name="moderation_count" widget="statinfo"/> + </button> + </div> + <div class="oe_button_box" name="button_box"/> + <field name="image_128" widget="image" class="oe_avatar" options="{'size': [90, 90]}"/> + <div class="oe_title"> + <div class="oe_edit_only"> + <label for="name"/> + </div> + <h1> + #<field name="name" default_focus="1" placeholder="Name" readonly="0"/> + </h1> + </div> + <group class="o_label_nowrap"> + <field name="active" invisible="1"/> + <field name="email_send"/> + <field name="moderation" attrs="{'invisible': [('email_send', '=', False)]}"/> + <field name="description" placeholder="Topics discussed in this group..."/> + </group> + <group name="group_alias" attrs="{'invisible': [('alias_domain', '=', False)]}"> + <label for="alias_id" string=" " class="fa fa-envelope-o" style="min-width: 20px;" aria-label="Email" title="Email" role="img"/> + <div name="alias_def"> + <field name="alias_id" class="oe_read_only oe_inline" + string="Email Alias" required="0"/> + <div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" > + <field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/> + </div> + </div> + <field name="alias_contact" class="oe_inline" invisible="1"/> + </group> + <notebook> + <page string="Privacy" name="privacy"> + <group class="o_label_nowrap"> + <field name="public" widget="radio" string="Who can follow the group's activities?"/> + <field name="group_public_id" + attrs="{'invisible': [('public','!=','groups')], 'required': [('public','=','groups')]}" + /> + <field name="group_ids" widget="many2many_tags" + string="Auto Subscribe Groups"/> + </group> + </page> + <page string="Members" name="members"> + <field name="channel_last_seen_partner_ids" mode="tree" context="{'active_test': False}"> + <tree string="Members" editable="bottom"> + <field name="partner_id" required="1"/> + <field name="partner_email" readonly="1"/> + </tree> + </field> + </page> + <page string="Moderation" name="moderation" attrs="{'invisible': [('moderation', '=', False)]}"> + <group> + <field name="moderator_ids" widget="many2many_tags"/> + <field name="moderation_notify"/> + <field name="moderation_notify_msg" attrs="{'invisible': [('moderation_notify', '=', False)]}"/> + <field name="moderation_guidelines"/> + <field name="moderation_guidelines_msg" attrs="{'invisible':[('moderation_guidelines', '=', False)]}"/> + </group> + </page> + <page string="Integrations" invisible="1" name="mail_channel_integrations"></page> + </notebook> + <div class="oe_chatter" groups="base.group_no_one"> + <field name="message_follower_ids"/> + </div> + </sheet> + </form> + </field> + </record> + + <record id="mail_channel_view_tree" model="ir.ui.view"> + <field name="name">mail.channel.tree</field> + <field name="model">mail.channel</field> + <field name="priority" eval="10"/> + <field name="arch" type="xml"> + <tree string="Groups"> + <field name="name"/> + </tree> + </field> + </record> + + <record id="mail_channel_view_search" model="ir.ui.view"> + <field name="name">mail.channel.search</field> + <field name="model">mail.channel</field> + <field name="priority" eval="10"/> + <field name="arch" type="xml"> + <search string="Search Groups"> + <field name="name"/> + <filter string="Archived" name="inactive" domain="[('active', '=', False)]"/> + </search> + </field> + </record> + + <record id="mail_channel_action_view" model="ir.actions.act_window"> + <field name="name">Join a group</field> + <field name="res_model">mail.channel</field> + <field name="view_mode">kanban,tree,form</field> + <field name="search_view_id" ref="mail_channel_view_search"/> + </record> + + <!-- settings !--> + <menuitem id="mail_channel_menu_settings" parent="base.menu_email" sequence="20" + name="Channels" action="mail_channel_action_view" + groups="base.group_no_one"/> + + <record id="action_discuss" model="ir.actions.client"> + <field name="name">Discuss</field> + <field name="tag">mail.widgets.discuss</field> + <field name="res_model">mail.channel</field> + <field name="params" eval=""{ 'default_active_id': 'mail.box_inbox' }""/> + </record> + + <menuitem + id="mail.menu_root_discuss" + name="Discuss" + action="action_discuss" + web_icon="mail,static/description/icon.png" + groups="base.group_user" + sequence="1" + /> + + <!-- + This menuitem will be activated by integrations modules (like github, twitter, ...). It + is a hook to ease other modules to plug into mail. + --> + <record id="mail.mail_channel_integrations_menu" model="ir.ui.menu"> + <field name="name">Integrations</field> + <field name="parent_id" ref="mail.menu_root_discuss"></field> + <field name="active" eval="False"></field> + </record> + + </data> +</odoo> diff --git a/addons/mail/views/mail_followers_views.xml b/addons/mail/views/mail_followers_views.xml new file mode 100644 index 00000000..bb098690 --- /dev/null +++ b/addons/mail/views/mail_followers_views.xml @@ -0,0 +1,57 @@ +<?xml version="1.0"?> +<odoo> + <data> + + <!-- FOLLOWERS !--> + <record model="ir.ui.view" id="view_followers_tree"> + <field name="name">mail.followers.tree</field> + <field name="model">mail.followers</field> + <field name="priority">10</field> + <field name="arch" type="xml"> + <tree string="Followers"> + <field name="res_model"/> + <field name="res_id" widget="integer"/> + <field name="partner_id"/> + <field name="channel_id"/> + </tree> + </field> + </record> + + <record model="ir.ui.view" id="view_mail_subscription_form"> + <field name="name">mail.followers.form</field> + <field name="model">mail.followers</field> + <field name="arch" type="xml"> + <form string="Followers Form"> + <sheet> + <group> + <group> + <field name="res_model"/> + <field name="partner_id"/> + <field name="channel_id"/> + </group> + <group> + <field name="res_id" widget="integer"/> + <field name="subtype_ids" widget="many2many_tags"/> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record id="action_view_followers" model="ir.actions.act_window"> + <field name="name">Followers</field> + <field name="res_model">mail.followers</field> + <field name="view_mode">tree,form</field> + </record> + + <!-- Add followers related menu entries in Settings/Email --> + <menuitem name="Followers" + id="menu_email_followers" + parent="mail.mail_menu_technical" + action="action_view_followers" + sequence="21" + groups="base.group_no_one"/> + + </data> +</odoo> diff --git a/addons/mail/views/mail_mail_views.xml b/addons/mail/views/mail_mail_views.xml new file mode 100644 index 00000000..bc087e39 --- /dev/null +++ b/addons/mail/views/mail_mail_views.xml @@ -0,0 +1,133 @@ +<?xml version="1.0"?> +<odoo> + <data> + <record model="ir.ui.view" id="view_mail_form"> + <field name="name">mail.mail.form</field> + <field name="model">mail.mail</field> + <field name="arch" type="xml"> + <form string="Email message"> + <header> + <button name="send" string="Send Now" type="object" states='outgoing' class="oe_highlight"/> + <button name="mark_outgoing" string="Retry" type="object" states='exception,cancel'/> + <button name="cancel" string="Cancel" type="object" states='outgoing'/> + <field name="state" widget="statusbar" statusbar_visible="outgoing,sent,received,exception,cancel"/> + </header> + <sheet> + <field name="mail_message_id" required="0" invisible="1"/> + <label for="subject" class="oe_edit_only"/> + <h2><field name="subject"/></h2> + <div style="vertical-align: top;"> + by <field name="author_id" class="oe_inline" string="User"/> on <field name="date" readonly="1" class="oe_inline"/> + <button name="%(action_email_compose_message_wizard)d" string="Reply" type="action" icon="fa-reply text-warning" + context="{'default_composition_mode':'comment', 'default_parent_id': mail_message_id}" states='received,sent,exception,cancel'/> + </div> + <group> + <field name="email_from"/> + <field name="email_to"/> + <field name="recipient_ids" widget="many2many_tags"/> + <field name="email_cc"/> + <field name="reply_to"/> + <field name="scheduled_date"/> + </group> + <notebook> + <page string="Body" name="body"> + <field name="body_html" widget="html" options="{'style-inline': true}"/> + </page> + <page string="Advanced" name="advanced" groups="base.group_no_one"> + <group> + <group string="Status"> + <field name="auto_delete"/> + <field name="notification"/> + <field name="message_type"/> + <field name="mail_server_id"/> + <field name="model"/> + <field name="res_id"/> + </group> + <group string="Headers"> + <field name="message_id"/> + <field name="references"/> + <field name="headers"/> + </group> + </group> + </page> + <page string="Attachments" name="attachments"> + <field name="attachment_ids"/> + </page> + <page string="Failure Reason" name="failure_reason" attrs="{'invisible': [('state', '!=', 'exception')]}"> + <field name="failure_reason"/> + </page> + </notebook> + </sheet> + </form> + </field> + </record> + + <record model="ir.ui.view" id="view_mail_tree"> + <field name="name">mail.mail.tree</field> + <field name="model">mail.mail</field> + <field name="arch" type="xml"> + <tree string="Emails" decoration-muted="state in ('sent', 'cancel')" decoration-info="state=='outgoing'" decoration-danger="state=='exception'"> + <field name="date"/> + <field name="subject"/> + <field name="author_id" string="User"/> + <field name="message_id" invisible="1"/> + <field name="recipient_ids" invisible="1"/> + <field name="model" invisible="1"/> + <field name="res_id" invisible="1"/> + <field name="email_from" invisible="1"/> + <field name="state" invisible="1"/> + <field name="message_type" invisible="1"/> + <button name="send" string="Send Now" type="object" icon="fa-paper-plane" states='outgoing'/> + <button name="mark_outgoing" string="Retry" type="object" icon="fa-repeat" states='exception,cancel'/> + <button name="cancel" string="Cancel Email" type="object" icon="fa-times-circle" states='outgoing'/> + </tree> + </field> + </record> + + <record model="ir.ui.view" id="view_mail_search"> + <field name="name">mail.mail.search</field> + <field name="model">mail.mail</field> + <field name="arch" type="xml"> + <search string="Email Search"> + <field name="email_from" filter_domain="['|', '|',('email_from','ilike',self), ('email_to','ilike',self), ('subject','ilike',self)]" string="Email"/> + <field name="date"/> + <filter name="received" string="Received" domain="[('state','=','received')]"/> + <filter name="outgoing" string="Outgoing" domain="[('state','=','outgoing')]"/> + <filter name="sent" string="Sent" domain="[('state','=','sent')]"/> + <filter name="exception" string="Failed" domain="[('state','=','exception')]"/> + <separator/> + <filter name="type_email" string="Email" domain="[('message_type','=','email')]"/> + <filter name="type_comment" string="Comment" domain="[('message_type','=','comment')]"/> + <filter name="type_notification" string="Notification" domain="[('message_type','=','notification')]"/> + <group expand="0" string="Extended Filters..."> + <field name="author_id"/> + <field name="recipient_ids"/> + <field name="model"/> + <field name="res_id"/> + </group> + <group expand="0" string="Group By"> + <filter string="Status" name="status" domain="[]" context="{'group_by':'state'}"/> + <filter string="Author" name="author" context="{'group_by':'author_id'}"/> + <filter string="Thread" name="thread" domain="[]" context="{'group_by':'message_id'}"/> + <filter string="Date" name="month" help="Creation Date" domain="[]" context="{'group_by':'date'}"/> + </group> + </search> + </field> + </record> + + <record id="action_view_mail_mail" model="ir.actions.act_window"> + <field name="name">Emails</field> + <field name="res_model">mail.mail</field> + <field name="view_mode">tree,form</field> + <field name="context">{}</field> + <field name="search_view_id" ref="view_mail_search"/> + </record> + + <!-- Add menu entry in Settings/Email --> + <menuitem name="Emails" + id="menu_mail_mail" + parent="base.menu_email" + action="action_view_mail_mail" + sequence="1"/> + </data> +</odoo> diff --git a/addons/mail/views/mail_menus.xml b/addons/mail/views/mail_menus.xml new file mode 100644 index 00000000..44df3e56 --- /dev/null +++ b/addons/mail/views/mail_menus.xml @@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<odoo><data> + <record id="base.menu_email" model="ir.ui.menu"> + <field name="sequence">3</field> + </record> + + <menuitem name="Discuss" + id="mail_menu_technical" + parent="base.menu_custom" + sequence="1"/> +</data></odoo> diff --git a/addons/mail/views/mail_message_subtype_views.xml b/addons/mail/views/mail_message_subtype_views.xml new file mode 100644 index 00000000..a9c9171e --- /dev/null +++ b/addons/mail/views/mail_message_subtype_views.xml @@ -0,0 +1,57 @@ +<?xml version="1.0"?> +<odoo> + <data> + + <record model="ir.ui.view" id="view_message_subtype_tree"> + <field name="name">mail.message.subtype.tree</field> + <field name="model">mail.message.subtype</field> + <field name="priority">10</field> + <field name="arch" type="xml"> + <tree string="Subtype"> + <field name="sequence" widget="handle"/> + <field name="name"/> + <field name="res_model"/> + <field name="default"/> + </tree> + </field> + </record> + + <record model="ir.ui.view" id="view_mail_message_subtype_form"> + <field name="name">mail.message.subtype.form</field> + <field name="model">mail.message.subtype</field> + <field name="arch" type="xml"> + <form string="Email message"> + <sheet> + <group> + <group string='Description'> + <field name="name"/> + <field name="sequence"/> + <field name="res_model"/> + <field name="description"/> + <field name="default"/> + <field name="internal"/> + <field name="hidden"/> + </group> + <group string='Auto subscription'> + <field name="parent_id"/> + <field name="relation_field"/> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record model="ir.actions.act_window" id="action_view_message_subtype"> + <field name="name">Subtypes</field> + <field name="res_model">mail.message.subtype</field> + <field name="view_mode">tree,form</field> + </record> + <menuitem name="Subtypes" + id="menu_message_subtype" + parent="mail.mail_menu_technical" + action="action_view_message_subtype" + sequence="4"/> + + </data> +</odoo> diff --git a/addons/mail/views/mail_message_views.xml b/addons/mail/views/mail_message_views.xml new file mode 100644 index 00000000..f0405ea3 --- /dev/null +++ b/addons/mail/views/mail_message_views.xml @@ -0,0 +1,207 @@ +<?xml version="1.0"?> +<odoo> + <data> + <!-- mail.message tree: short view !--> + <record model="ir.ui.view" id="view_message_tree"> + <field name="name">mail.message.tree</field> + <field name="model">mail.message</field> + <field name="priority">20</field> + <field name="arch" type="xml"> + <tree string="Messages"> + <field name="date"/> + <field name="subject"/> + <field name="author_id"/> + <field name="model"/> + <field name="res_id" widget="integer"/> + </tree> + </field> + </record> + + <!-- mail.message form: short view !--> + <record id="mail_message_view_form" model="ir.ui.view"> + <field name="name">mail.message.view.form</field> + <field name="model">mail.message</field> + <field name="priority">20</field> + <field name="arch" type="xml"> + <form string="Message"> + <sheet> + <group> + <group> + <field name="subject"/> + <field name="date"/> + <field name="email_from"/> + <field name="author_id"/> + <field name="message_type"/> + <field name="subtype_id"/> + <field name="is_internal"/> + </group> + <group> + <field name="model"/> + <field name="res_id" widget="integer"/> + <field name="record_name"/> + <field name="parent_id"/> + <field name="moderation_status"/> + <field name="moderator_id"/> + </group> + </group> + <notebook> + <page string="Body" name="body"> + <field name="body" options="{'style-inline': true}"/> + </page> + <page string="Gateway" name="gateway"> + <group> + <group> + <field name="reply_to"/> + <field name="no_auto_thread"/> + </group> + <group> + <field name="message_id"/> + <field name="mail_server_id"/> + </group> + </group> + </page> + <page string="Recipients" name="recipients"> + <group> + <group> + <field name="partner_ids" widget="many2many_tags"/> + <field name="channel_ids" widget="many2many_tags"/> + </group> + <group> + <field name="notified_partner_ids" widget="many2many_tags"/> + <field name="starred_partner_ids" widget="many2many_tags"/> + </group> + </group> + <group> + <field name="notification_ids"> + <tree> + <field name="res_partner_id"/> + <field name="is_read"/> + <field name="notification_type"/> + <field name="notification_status"/> + </tree> + </field> + </group> + </page> + <page string="Tracking" name="page_tracking"> + <field name="tracking_value_ids"/> + </page> + </notebook> + </sheet> + </form> + </field> + </record> + + <!-- mail.message search: wall view !--> + <record model="ir.ui.view" id="view_message_search"> + <field name="name">mail.message.search</field> + <field name="model">mail.message</field> + <field name="priority">25</field> + <field name="arch" type="xml"> + <search string="Messages Search"> + <field name="body" string="Content" filter_domain="['|', ('subject', 'ilike', self), ('body', 'ilike', self)]" /> + <field name="subject"/> + <field name="message_type"/> + <field name="author_id"/> + <field name="partner_ids"/> + <field name="model"/> + <field name="res_id"/> + <field name="parent_id"/> + <filter string="Has Mentions" + name="filter_has_mentions" + domain="[('partner_ids.user_ids', 'in', [uid])]"/> + <separator/> + <filter string="Need Action" + name="message_needaction" help="Unread messages" + domain="[('needaction', '=', True)]"/> + <separator/> + </search> + </field> + </record> + + <record id="action_view_mail_message" model="ir.actions.act_window"> + <field name="name">Messages</field> + <field name="res_model">mail.message</field> + <field name="view_mode">tree,form</field> + <field name="search_view_id" ref="view_message_search"/> + </record> + + <!-- Add menu entry in Settings/Email --> + <menuitem name="Messages" + id="menu_mail_message" + parent="mail.mail_menu_technical" + action="action_view_mail_message" + sequence="1"/> + + <record model="ir.ui.view" id="view_document_file_kanban"> + <field name="name">ir.attachment kanban</field> + <field name="model">ir.attachment</field> + <field name="arch" type="xml"> + <kanban edit="false" import="false"> + <field name="id"/> + <field name="mimetype"/> + <field name="type"/> + <field name="create_uid"/> + <field name="url"/> + <field name="create_date"/> + <field name="name"/> + <templates> + <t t-name="kanban-box"> + <div class="oe_kanban_global_area oe_kanban_global_click o_kanban_attachment"> + <div class="row"> + <div class="offset-10"> + <div class="o_dropdown_kanban dropdown" groups="base.group_user"> + <a role="button" class="dropdown-toggle o-no-caret btn" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu"> + <span class="fa fa-ellipsis-v"/> + </a> + <div class="dropdown-menu" role="menu"> + <a t-if="widget.deletable" role="menuitem" type="delete" class="dropdown-item">Delete</a> + </div> + </div> + </div> + </div> + <div class="o_kanban_image"> + <div class="o_kanban_image_wrapper"> + <t t-set="webimage" t-value="new RegExp('image.*(gif|jpeg|jpg|png)').test(record.mimetype.value)"/> + <div t-if="record.type.raw_value == 'url'" class="o_url_image fa fa-link fa-3x text-muted" aria-label="Image is a link"/> + <img t-elif="webimage" t-attf-src="/web/image/#{record.id.raw_value}" width="100" height="100" alt="Document" class="o_attachment_image"/> + <div t-else="!webimage" class="o_image o_image_thumbnail" t-att-data-mimetype="record.mimetype.value"/> + </div> + </div> + <div class="o_kanban_details"> + <div class="o_kanban_details_wrapper"> + <div t-att-title="record.name.raw_value" class="o_kanban_record_title"> + <field name="name" class="o_text_overflow"/> + </div> + <div class="o_kanban_record_body"> + <t t-if="record.type.raw_value == 'url'"> + <span class="o_document_url"><i class="fa fa-globe" aria-label="Document url"/> <field name="url" widget="url"/></span> + </t> + <samp t-else="" class="text-muted"> </samp> + </div> + <div class="o_kanban_record_bottom"> + <time class="oe_kanban_bottom_left"> + <field name="create_date" widget="date"/> + </time> + <div class="oe_kanban_bottom_right"> + <field name="create_uid" widget="many2one_avatar_user"/> + </div> + </div> + </div> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + <record id="base.action_attachment" model="ir.actions.act_window"> + <field name="view_mode">kanban,tree,form</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Attach a new document + </p> + </field> + </record> + + </data> +</odoo> diff --git a/addons/mail/views/mail_moderation_views.xml b/addons/mail/views/mail_moderation_views.xml new file mode 100644 index 00000000..4bcc602b --- /dev/null +++ b/addons/mail/views/mail_moderation_views.xml @@ -0,0 +1,52 @@ +<?xml version="1.0"?> +<odoo> + <data> + <record id="mail_moderation_view_tree" model="ir.ui.view"> + <field name="name">mail.moderation.view.tree</field> + <field name="model">mail.moderation</field> + <field name="priority">20</field> + <field name="arch" type="xml"> + <tree string="Moderation Lists" editable="bottom"> + <field name="channel_id"/> + <field name="email"/> + <field name="status"/> + </tree> + </field> + </record> + + <record id="mail_moderation_view_search" model="ir.ui.view"> + <field name="name">mail.moderation.view.search</field> + <field name="model">mail.moderation</field> + <field name="priority">25</field> + <field name="arch" type="xml"> + <search string="Search Moderation List"> + <field name="channel_id"/> + <field name="email"/> + <field name="status"/> + <filter string="Is Banned" + name="status_ban" help="Banned Emails" + domain="[('status', '=', 'ban')]"/> + <separator/> + <filter string="Is Allowed" + name="status_allow" help="Allowed Emails" + domain="[('status', '=', 'allow')]"/> + </search> + </field> + </record> + + <record id="mail_moderation_action" model="ir.actions.act_window"> + <field name="name">Moderation</field> + <field name="res_model">mail.moderation</field> + <field name="view_mode">tree,form</field> + <field name="search_view_id" ref="mail_moderation_view_search"/> + <field name="context">{'search_default_status_ban': 1}</field> + </record> + + <!-- Add menu entry in Settings/Email --> + <menuitem name="Channel Moderation" + id="mail_moderation_menu" + parent="base.menu_email" + sequence="22" + action="mail_moderation_action"/> + </data> +</odoo> diff --git a/addons/mail/views/mail_notification_views.xml b/addons/mail/views/mail_notification_views.xml new file mode 100644 index 00000000..3167fb4c --- /dev/null +++ b/addons/mail/views/mail_notification_views.xml @@ -0,0 +1,58 @@ +<?xml version="1.0"?> +<odoo><data> + <record id="mail_notification_view_tree" model="ir.ui.view"> + <field name="name">mail.notification.view.tree</field> + <field name="model">mail.notification</field> + <field name="arch" type="xml"> + <tree string="Notifications"> + <field name="mail_message_id"/> + <field name="notification_type"/> + <field name="res_partner_id"/> + <field name="is_read"/> + <field name="failure_type"/> + </tree> + </field> + </record> + + <record id="mail_notification_view_form" model="ir.ui.view"> + <field name="name">mail.notification.view.form</field> + <field name="model">mail.notification</field> + <field name="arch" type="xml"> + <form string="Notification"> + <header> + <field name="notification_status" widget="statusbar"/> + </header> + <sheet> + <group> + <group string="Source"> + <field name="mail_message_id"/> + <field name="notification_type"/> + <field name="mail_id"/> + <field name="res_partner_id"/> + </group> + <group string="Status"> + <field name="is_read"/> + <field name="read_date"/> + <field name="failure_type"/> + <field name="failure_reason"/> + </group> + </group> + </sheet> + </form> + </field> + </record> + + <record id="mail_notification_action" model="ir.actions.act_window"> + <field name="name">Notifications</field> + <field name="res_model">mail.notification</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem name="Notifications" + id="mail_notification_menu" + parent="mail.mail_menu_technical" + action="mail_notification_action" + sequence="20" + groups="base.group_no_one"/> + +</data></odoo> diff --git a/addons/mail/views/mail_shortcode_views.xml b/addons/mail/views/mail_shortcode_views.xml new file mode 100644 index 00000000..84002678 --- /dev/null +++ b/addons/mail/views/mail_shortcode_views.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data> + + <!-- mail.shortcode --> + <record id="mail_shortcode_action" model="ir.actions.act_window"> + <field name="name">Chat Shortcode</field> + <field name="res_model">mail.shortcode</field> + <field name="view_mode">tree,form</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Define a new chat shortcode + </p><p> + A shortcode is a keyboard shortcut. For instance, you type #gm and it will be transformed into "Good Morning". + </p> + </field> + </record> + + <record id="mail_shortcode_view_tree" model="ir.ui.view"> + <field name="name">mail.shortcode.tree</field> + <field name="model">mail.shortcode</field> + <field name="arch" type="xml"> + <tree string="Shortcodes"> + <field name="source"/> + <field name="substitution"/> + <field name="description"/> + </tree> + </field> + </record> + + <record id="mail_shortcode_view_form" model="ir.ui.view"> + <field name="name">mail.shortcode.form</field> + <field name="model">mail.shortcode</field> + <field name="arch" type="xml"> + <form string="Shortcodes"> + <sheet> + <group> + <field name="source"/> + <field name="substitution"/> + <field name="description"/> + </group> + </sheet> + </form> + </field> + </record> + + </data> +</odoo> diff --git a/addons/mail/views/mail_template_views.xml b/addons/mail/views/mail_template_views.xml new file mode 100644 index 00000000..0f374402 --- /dev/null +++ b/addons/mail/views/mail_template_views.xml @@ -0,0 +1,138 @@ +<?xml version="1.0" encoding="UTF-8"?> +<odoo> + <data> + <record model="ir.ui.view" id="email_template_form"> + <field name="name">email.template.form</field> + <field name="model">mail.template</field> + <field name="arch" type="xml"> + <form string="Templates"> + <sheet> + <div class="oe_button_box" name="button_box"> + <field name="ref_ir_act_window" invisible="1"/> + <button class="oe_stat_button" + groups="base.group_system" + name="create_action" type="object" + attrs="{'invisible':[('ref_ir_act_window','!=',False)]}" icon="fa-plus" + help="Display an option on related documents to open a composition wizard with this template"> + <div class="o_field_widget o_stat_info"> + <span class="o_stat_text">Add</span> + <span class="o_stat_text">Context Action</span> + </div> + </button> + <button name="unlink_action" type="object" + groups="base.group_system" + class="oe_stat_button" icon="fa-minus" + attrs="{'invisible':[('ref_ir_act_window','=',False)]}" + help="Remove the contextual action to use this template on related documents" widget="statinfo"> + <div class="o_field_widget o_stat_info"> + <span class="o_stat_text">Remove</span> + <span class="o_stat_text">Context Action</span> + </div> + </button> + <button class="oe_stat_button" name="%(mail_template_preview_action)d" icon="fa-search-plus" string="Preview" + type="action" target="new"/> + </div> + <div class="oe_title"> + <label for="name" class="oe_edit_only"/> + <h1><field name="name" required="1"/></h1> + <group> + <field name="model_id" required="1" options="{'no_create': True}"/> + <field name="model" invisible="1"/> + </group> + </div> + <notebook> + <page string="Content" name="content"> + <label for="subject"/> + <h2 style="display: inline-block;"><field name="subject" placeholder="Subject (placeholders may be used here)"/></h2> + <field name="body_html" widget="html" options="{'style-inline': true}"/> + <field name="attachment_ids" widget="many2many_binary"/> + </page> + <page string="Email Configuration" name="email_configuration"> + <group> + <field name="email_from" + placeholder="Override author's email"/> + <field name="use_default_to"/> + <field name="email_to" attrs="{'invisible': [('use_default_to', '=', True)]}" + placeholder="Comma-separated recipient addresses"/> + <field name="partner_to" attrs="{'invisible': [('use_default_to', '=', True)]}" + placeholder="Comma-separated ids of recipient partners"/> + <field name="email_cc" attrs="{'invisible': [('use_default_to', '=', True)]}" + placeholder="Comma-separated carbon copy recipients addresses"/> + <field name="reply_to" + placeholder="Preferred reply address"/> + <field name="scheduled_date" string="Scheduled Send Date"/> + </group> + </page> + <page string="Advanced Settings" name="advanced_settings"> + <group> + <field name="lang" placeholder="${object.partner_id.lang}"/> + <field name="mail_server_id"/> + <field name="auto_delete"/> + <field name="report_template" domain="[('model','=',model)]"/> + <field name="report_name" attrs="{'invisible':[('report_template','=',False)]}"/> + </group> + </page> + <page string="Dynamic Placeholder Generator" name="dynamic_placeholder_generator"> + <group> + <field name="model_object_field" + domain="[('model_id','=',model_id),('ttype','!=','one2many'),('ttype','!=','many2many')]"/> + <field name="sub_object" readonly="1"/> + <field name="sub_model_object_field" + domain="[('model_id','=',sub_object),('ttype','!=','one2many'),('ttype','!=','many2many')]" + attrs="{'readonly':[('sub_object','=',False)],'required':[('sub_object','!=',False)]}"/> + <field name="null_value"/> + <field name="copyvalue"/> + </group> + </page> + </notebook> + </sheet> + </form> + </field> + </record> + + <record model="ir.ui.view" id="email_template_tree"> + <field name="name">email.template.tree</field> + <field name="model">mail.template</field> + <field name="arch" type="xml"> + <tree string="Templates"> + <field name="mail_server_id" invisible="1"/> + <field name="name"/> + <field name="model_id"/> + <field name="subject"/> + <field name="email_from"/> + <field name="email_to"/> + <field name="partner_to"/> + <field name="report_name"/> + </tree> + </field> + </record> + + <record id="view_email_template_search" model="ir.ui.view"> + <field name="name">email.template.search</field> + <field name="model">mail.template</field> + <field name="arch" type="xml"> + <search string="Templates"> + <field name="name" filter_domain="['|', '|', '|',('name','ilike',self), ('report_name','ilike',self), ('subject','ilike',self), ('email_to','ilike',self)]" string="Templates"/> + <field name="lang"/> + <field name="model_id"/> + <group expand="0" string="Group by..."> + <filter string="SMTP Server" name="smtpserver" domain="[]" context="{'group_by':'mail_server_id'}"/> + <filter string="Model" name="model" domain="[]" context="{'group_by':'model_id'}"/> + </group> + </search> + </field> + </record> + + <record model="ir.actions.act_window" id="action_email_template_tree_all"> + <field name="name">Templates</field> + <field name="res_model">mail.template</field> + <field name="view_mode">form,tree</field> + <field name="view_id" ref="email_template_tree" /> + <field name="search_view_id" ref="view_email_template_search"/> + </record> + + <menuitem id="menu_email_templates" parent="base.menu_email" action="action_email_template_tree_all" + sequence="10"/> + + </data> +</odoo> diff --git a/addons/mail/views/mail_tracking_views.xml b/addons/mail/views/mail_tracking_views.xml new file mode 100644 index 00000000..ea43c5fa --- /dev/null +++ b/addons/mail/views/mail_tracking_views.xml @@ -0,0 +1,75 @@ +<?xml version="1.0"?> +<odoo> + <data> + + <record model="ir.ui.view" id="view_mail_tracking_value_tree"> + <field name="name">mail.tracking.value.tree</field> + <field name="model">mail.tracking.value</field> + <field name="priority">12</field> + <field name="arch" type="xml"> + <tree string="Tracking Value"> + <field name="field"/> + <field name="old_value_integer"/> + <field name="old_value_float"/> + <field name="old_value_char"/> + <field name="old_value_text"/> + <field name="old_value_datetime"/> + <field name="new_value_integer"/> + <field name="new_value_float"/> + <field name="new_value_char"/> + <field name="new_value_text"/> + <field name="new_value_datetime"/> + <field name="mail_message_id"/> + </tree> + </field> + </record> + + <record model="ir.ui.view" id="view_mail_tracking_value_form"> + <field name="name">mail.tracking.value.form</field> + <field name="model">mail.tracking.value</field> + <field name="arch" type="xml"> + <form string="Tracking Value"> + <sheet> + <group name="field_details" string="Field details"> + <field name="field"/> + <field name="field_desc"/> + <field name="field_type"/> + <field name="tracking_sequence"/> + </group> + <group name="values"> + <group name="old_values" string="Old values"> + <field name="old_value_integer"/> + <field name="old_value_float"/> + <field name="old_value_char"/> + <field name="old_value_text"/> + <field name="old_value_datetime"/> + </group> + <group name="new_values" string="New values"> + <field name="new_value_integer"/> + <field name="new_value_float"/> + <field name="new_value_char"/> + <field name="new_value_text"/> + <field name="new_value_datetime"/> + </group> + </group> + <group string='Related Message'> + <field name="mail_message_id"/> + </group> + </sheet> + </form> + </field> + </record> + + <record model="ir.actions.act_window" id="action_view_mail_tracking_value"> + <field name="name">Tracking Values</field> + <field name="res_model">mail.tracking.value</field> + <field name="view_mode">tree,form</field> + </record> + <menuitem name="Tracking Values" + id="menu_mail_tracking_value" + parent="mail.mail_menu_technical" + action="action_view_mail_tracking_value" + sequence="5"/> + + </data> +</odoo>
\ No newline at end of file diff --git a/addons/mail/views/res_config_settings_views.xml b/addons/mail/views/res_config_settings_views.xml new file mode 100644 index 00000000..57d65b63 --- /dev/null +++ b/addons/mail/views/res_config_settings_views.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data> + <record id="res_config_settings_view_form" model="ir.ui.view"> + <field name="name">res.config.settings.view.form.inherit.mail</field> + <field name="model">res.config.settings</field> + <field name="inherit_id" ref="base_setup.res_config_settings_view_form"/> + <field name="arch" type="xml"> + <div id="emails" position='replace'> + <h2>Discuss</h2> + <div class="row mt16 o_settings_container" id="emails"> + <div class="col-12 col-lg-6 o_setting_box" id="activities_setting"> + <div class="o_setting_left_pane"/> + <div class="o_setting_right_pane"> + <span class="o_form_label">Activities</span> + <div class="text-muted"> + Configure your activity types + </div> + <div class="content-group"> + <div class="mt8"> + <button name="%(mail.mail_activity_type_action)d" string="Activity Types" type="action" class="oe_link" icon="fa-arrow-right"/> + </div> + </div> + </div> + </div> + <div class="col-12 col-lg-6 o_setting_box" + id="email_servers_setting" + title="Using your own email server is required to send/receive emails in Community and Enterprise versions. Online users already benefit from a ready-to-use email server (@mycompany.odoo.com)."> + <div class="o_setting_left_pane"> + <field name="external_email_server_default"/> + </div> + <div class="o_setting_right_pane"> + <label for="external_email_server_default"/> + <a href="https://www.odoo.com/documentation/14.0/applications/productivity/discuss/advanced/email_servers.html" title="Documentation" class="o_doc_link" target="_blank"></a> + <div class="text-muted" id="external_email_server_default"> + Configure your own email servers + </div> + <div class="content-group" attrs="{'invisible': [('external_email_server_default', '=', False)]}"> + <div class="row mt16" id="mail_alias_domain"> + <label for="alias_domain" class="col-lg-3 o_light_label"/> + <field name="alias_domain" placeholder="mycompany.odoo.com"/> + </div> + </div> + </div> + </div> + </div> + </div> + </field> + </record> + </data> +</odoo> diff --git a/addons/mail/views/res_partner_views.xml b/addons/mail/views/res_partner_views.xml new file mode 100644 index 00000000..57c6fc54 --- /dev/null +++ b/addons/mail/views/res_partner_views.xml @@ -0,0 +1,135 @@ +<?xml version="1.0" ?> +<odoo> + <data> + + <record id="res_partner_view_form_inherit_mail" model="ir.ui.view"> + <field name="name">res.partner.view.form.inherit.mail</field> + <field name="model">res.partner</field> + <field name="inherit_id" ref="base.view_partner_form"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='email']" position="replace"> + <field name="is_blacklisted" invisible="1"/> + <label for="email" class="oe_inline"/> + <div class="o_row o_row_readonly"> + <button name="mail_action_blacklist_remove" class="fa fa-ban text-danger" + title="This email is blacklisted for mass mailings. Click to unblacklist." + type="object" context="{'default_email': email}" groups="base.group_user" + attrs="{'invisible': [('is_blacklisted', '=', False)]}"/> + <field name="email" widget="email" context="{'gravatar_image': True}" attrs="{'required': [('user_ids','!=', [])]}"/> + </div> + </xpath> + <xpath expr="//sheet" position="after"> + <div class="oe_chatter"> + <field name="message_follower_ids"/> + <field name="activity_ids"/> + <field name="message_ids"/> + </div> + </xpath> + </field> + </record> + + <record id="res_partner_view_kanban_inherit_mail" model="ir.ui.view"> + <field name="name">res.partner.view.kanban.inherit.mail</field> + <field name="model">res.partner</field> + <field name="inherit_id" ref="base.res_partner_kanban_view"/> + <field name="arch" type="xml"> + <field name="type" position="after"> + <field name="activity_state"/> + </field> + <xpath expr="//span[hasclass('oe_kanban_partner_links')]" position="after"> + <field name="activity_ids" widget="kanban_activity"/> + </xpath> + </field> + </record> + + <record id="res_partner_view_search_inherit_mail" model="ir.ui.view"> + <field name="name">res.partner.view.search.inherit.mail</field> + <field name="model">res.partner</field> + <field name="inherit_id" ref="base.view_res_partner_filter"/> + <field name="arch" type="xml"> + <filter name="inactive" position="after"> + <filter invisible="1" string="Late Activities" name="activities_overdue" + domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]" + help="Show all records which has next action date is before today"/> + <filter invisible="1" string="Today Activities" name="activities_today" + domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/> + <filter invisible="1" string="Future Activities" name="activities_upcoming_all" + domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/> + <separator/> + </filter> + </field> + </record> + + <record id="res_partner_view_tree_inherit_mail" model="ir.ui.view"> + <field name="name">res.partner.view.tree.inherit.mail</field> + <field name="model">res.partner</field> + <field name="inherit_id" ref="base.view_partner_tree"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='user_id']" position="after"> + <field name="activity_ids" optional="show" widget="list_activity"/> + </xpath> + </field> + </record> + + <record id="res_partner_view_activity" model="ir.ui.view"> + <field name="name">res.partner.activity</field> + <field name="model">res.partner</field> + <field name="arch" type="xml"> + <activity string="Contacts"> + <field name="id"/> + <templates> + <div t-name="activity-box"> + <img t-att-src="activity_image('res.partner', 'image_128', record.id.raw_value)" role="img" t-att-title="record.id.value" t-att-alt="record.id.value"/> + <div> + <field name="name" display="full"/> + <field name="parent_id" muted="1" display="full"/> + </div> + </div> + </templates> + </activity> + </field> + </record> + + <!--Definition of an email template with an empty body that will be used in partner mailing. Used to give a + basis for email recipients, name and to ease the definition of a further elaborated template. --> + <record id="email_template_partner" model="mail.template"> + <field name="name">Partner Mass Mail</field> + <field name="model_id" ref="base.model_res_partner"/> + <field name="partner_to">${object.id}</field> + <field name="auto_delete" eval="True"/> + <field name="lang">${object.lang}</field> + </record> + + <!-- Add mail-defined activity view to standard action on partners to manage activities related to partner model --> + <record id="base.action_partner_form" model="ir.actions.act_window"> + <field name="view_mode">kanban,tree,form,activity</field> + </record> + <record id="base.action_partner_customer_form" model="ir.actions.act_window"> + <field name="view_mode">kanban,tree,form,activity</field> + </record> + <record id="base.action_partner_supplier_form" model="ir.actions.act_window"> + <field name="view_mode">kanban,tree,form,activity</field> + </record> + + <!-- Replace the default mass-mailing wizard in base with the composition wizard --> + <record id="action_partner_mass_mail" model="ir.actions.act_window"> + <field name="name">Send email</field> + <field name="res_model">mail.compose.message</field> + <field name="view_mode">form</field> + <field name="target">new</field> + <field name="context" eval="{ + 'default_composition_mode': 'mass_mail', + 'default_partner_to': '${object.id or \'\'}', + 'default_use_template': True, + 'default_template_id': ref('email_template_partner'), + }"/> + <field name="binding_model_id" ref="base.model_res_partner"/> + <field name="binding_view_types">list</field> + </record> + + <record id="email_template_partner" model="mail.template"> + <field name="ref_ir_act_window" ref="action_partner_mass_mail"/> + </record> + + </data> +</odoo> diff --git a/addons/mail/views/res_users_views.xml b/addons/mail/views/res_users_views.xml new file mode 100644 index 00000000..a181a337 --- /dev/null +++ b/addons/mail/views/res_users_views.xml @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<odoo> + <data> + + <!-- Update Preferences form !--> + <record id="view_users_form_simple_modif_mail" model="ir.ui.view"> + <field name="name">res.users.preferences.form.mail</field> + <field name="model">res.users</field> + <field name="inherit_id" ref="base.view_users_form_simple_modif"/> + <field name="arch" type="xml"> + <data> + <field name="email" position="before"> + <field name="notification_type" widget="radio" readonly="0"/> + </field> + <xpath expr="//field[@name='image_1920']" position="before"> + <widget name="notification_alert"/> + </xpath> + </data> + </field> + </record> + + <!-- Update user form !--> + <record id="view_users_form_mail" model="ir.ui.view"> + <field name="name">res.users.form.mail</field> + <field name="model">res.users</field> + <field name="inherit_id" ref="base.view_users_form"/> + <field name="arch" type="xml"> + <data> + <field name="signature" position="before"> + <field name="notification_type" widget="radio"/> + </field> + </data> + </field> + </record> + </data> +</odoo> |
