diff options
| author | ThanhDodeurOdoo <tso@odoo.com> | 2018-11-07 14:52:33 +0000 |
|---|---|---|
| committer | ThanhDodeurOdoo <tso@odoo.com> | 2018-12-06 19:09:33 +0000 |
| commit | 89f20d2c297d99d4eb0ded8be78fbf86b8ec45d3 (patch) | |
| tree | c86e3d9085425ef7aa9ddf4dcdd453b766a0b90f /addons | |
| parent | 72905feee0b5393f8872e51b33a10e4ec7978085 (diff) | |
[REF] base, mail: splits the documents feature from ir attachment
Moved the field 'active', 'res_model_name' and 'thumbnail' from
ir.attachment to enterprise's documents.document.
Moved the pdf split feature to enterprise's Documents module.
task: #1908896
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/mail/static/src/js/document_viewer.js | 22 | ||||
| -rw-r--r-- | addons/mail/static/src/scss/composer.scss | 21 | ||||
| -rw-r--r-- | addons/mail/static/src/xml/thread.xml | 18 | ||||
| -rw-r--r-- | addons/mail/static/tests/chatter_tests.js | 4 | ||||
| -rw-r--r-- | addons/mail/static/tests/document_viewer_tests.js | 42 | ||||
| -rw-r--r-- | addons/mail/views/mail_message_views.xml | 12 |
6 files changed, 18 insertions, 101 deletions
diff --git a/addons/mail/static/src/js/document_viewer.js b/addons/mail/static/src/js/document_viewer.js index e2c03e24d6a..9affc3f41cf 100644 --- a/addons/mail/static/src/js/document_viewer.js +++ b/addons/mail/static/src/js/document_viewer.js @@ -13,7 +13,6 @@ var DocumentViewer = Widget.extend({ template: "DocumentViewer", events: { 'click .o_download_btn': '_onDownload', - 'click .o_split_btn': '_onSplitPDF', 'click .o_viewer_img': '_onImageClicked', 'click .o_viewer_video': '_onVideoClicked', 'click .move_next': '_onNext', @@ -44,7 +43,7 @@ var DocumentViewer = Widget.extend({ init: function (parent, attachments, activeAttachmentID) { this._super.apply(this, arguments); this.attachment = _.filter(attachments, function (attachment) { - var match = attachment.type == 'url' ? attachment.url.match("(youtu|.png|.jpg|.gif)") : attachment.mimetype.match("(image|video|application/pdf|text)"); + var match = attachment.type === 'url' ? attachment.url.match("(youtu|.png|.jpg|.gif)") : attachment.mimetype.match("(image|video|application/pdf|text)"); if (match) { attachment.type = match[1]; @@ -67,6 +66,7 @@ var DocumentViewer = Widget.extend({ } }); this.activeAttachment = _.findWhere(attachments, {id: activeAttachmentID}); + this.modelName = 'ir.attachment'; this._reset(); }, /** @@ -329,24 +329,6 @@ var DocumentViewer = Widget.extend({ * @private * @param {MouseEvent} e */ - _onSplitPDF: function (e) { - e.stopPropagation(); - var self = this; - var indices = $("input[name=Indices]").val(); - var remainder = $("input[type=checkbox][name=remainder]").is(":checked"); - this._rpc({ - model: 'ir.attachment', - method: 'split_pdf', - args: [this.activeAttachment.id, indices, remainder], - }).always(function () { - self.trigger_up('document_viewer_attachment_changed'); - self.destroy(); - }); - }, - /** - * @private - * @param {MouseEvent} e - */ _onStartDrag: function (e) { e.preventDefault(); this.enableDrag = true; diff --git a/addons/mail/static/src/scss/composer.scss b/addons/mail/static/src/scss/composer.scss index bd9307bdd2f..aa5131b0de5 100644 --- a/addons/mail/static/src/scss/composer.scss +++ b/addons/mail/static/src/scss/composer.scss @@ -485,27 +485,6 @@ $o-mail-attachment-margin: 5px; .o_image_caption { bottom: 20%; position: absolute; - - .o_split_pdf_area { - background-color: #3a3a3a; - margin: 5px; - padding: 6px; - margin-left: 50px; - - .o_split_btn { - vertical-align: baseline; - } - - .o_page_number_input { - width: 13%; - color: black; - display: inline; - } - - .o_remainder_input { - vertical-align: middle; - } - } } } diff --git a/addons/mail/static/src/xml/thread.xml b/addons/mail/static/src/xml/thread.xml index fcfe8ba7de2..914168306b8 100644 --- a/addons/mail/static/src/xml/thread.xml +++ b/addons/mail/static/src/xml/thread.xml @@ -35,6 +35,7 @@ --> <t t-name="DocumentViewer.Content"> <div class="o_viewer_content"> + <t t-set="model" t-value="widget.modelName"/> <div class="o_viewer-header"> <span class="o_image_caption"> <i class="fa fa-picture-o mr8" t-if="widget.activeAttachment.type == 'image'" role="img" aria-label="Image" title="Image"/> @@ -42,11 +43,6 @@ <i class="fa fa-video-camera mr8" t-if="widget.activeAttachment.type == 'video'" role="img" aria-label="Video" title="Video"/> <t t-esc="widget.activeAttachment.name"/> <a role="button" href="#" class="o_download_btn ml8 small" data-toggle="tooltip" data-placement="right" title="Download"><i class="fa fa-fw fa-download" role="img" aria-label="Download"/></a> - <span t-if="widget.activeAttachment.type == 'application/pdf'" class="o_split_pdf_area"> - <label for="Indices">Extract pages:&nbsp;</label><input class="o_page_number_input" name="Indices" placeholder="e.g. 1-5, 7, 8-9"/> - <label for="remainder">All pages:&nbsp;</label><input class="o_remainder_input" type="checkbox" name="remainder" value="remainder"/> - <button class="btn btn-sm btn-primary o_split_btn" data-toggle="tooltip" title="Split">Split</button> - </span> </span> <a role="button" class="o_close_btn float-right" href="#" aria-label="Close" title="Close">×</a> </div> @@ -55,12 +51,12 @@ <div t-if="widget.activeAttachment.type == 'image'" class="o_loading_img text-center"> <i class="fa fa-circle-o-notch fa-spin text-gray-light fa-3x fa-fw" role="img" aria-label="Loading" title="Loading"/> </div> - <img t-if="widget.activeAttachment.type == 'image'" class="o_viewer_img" t-attf-src="/web/image/#{widget.activeAttachment.id}?unique=1&signature=#{widget.activeAttachment.checksum}" alt="Viewer"/> - <iframe class="mt32 o_viewer_pdf" t-if="widget.activeAttachment.type == 'application/pdf'" t-attf-src="/web/static/lib/pdfjs/web/viewer.html?file=/web/content/#{widget.activeAttachment.id}" /> - <iframe class="mt32 o_viewer_text" t-if="(widget.activeAttachment.type || '').indexOf('text') !== -1" t-attf-src="/web/content/#{widget.activeAttachment.id}" /> - <iframe class="mt32 o_viewer_text" t-if="widget.activeAttachment.type == 'youtu'" allow="autoplay; encrypted-media" width="560" height="315" t-attf-src="https://www.youtube.com/embed/#{widget.activeAttachment.youtube}"/> + <img t-if="widget.activeAttachment.type === 'image'" class="o_viewer_img" t-attf-src="/web/image/#{widget.activeAttachment.id}?unique=1&signature=#{widget.activeAttachment.checksum}&model=#{model}" alt="Viewer"/> + <iframe t-if="widget.activeAttachment.type == 'application/pdf'" class="mt32 o_viewer_pdf" t-attf-src="/web/static/lib/pdfjs/web/viewer.html?file=/web/content/#{widget.activeAttachment.id}?model%3D#{model}" /> + <iframe t-if="(widget.activeAttachment.type || '').indexOf('text') !== -1" class="mt32 o_viewer_text" t-attf-src="/web/content/#{widget.activeAttachment.id}?model%3D#{model}" /> + <iframe t-if="widget.activeAttachment.type == 'youtu'" class="mt32 o_viewer_text" allow="autoplay; encrypted-media" width="560" height="315" t-attf-src="https://www.youtube.com/embed/#{widget.activeAttachment.youtube}"/> <video t-if="widget.activeAttachment.type == 'video'" class="o_viewer_video" controls="controls"> - <source t-attf-src="/web/image/#{widget.activeAttachment.id}" t-att-data-type="widget.activeAttachment.mimetype"/> + <source t-attf-src="/web/image/#{widget.activeAttachment.id}?model=#{model}" t-att-data-type="widget.activeAttachment.mimetype"/> </video> </div> </div> @@ -86,7 +82,7 @@ --> <t t-name="DocumentViewer"> <div class="modal o_modal_fullscreen" tabindex="-1" data-keyboard="false" role="dialog"> - <t t-call="DocumentViewer.Content"/> + <t class="o_document_viewer_content_call" t-call="DocumentViewer.Content"/> <t t-if="widget.attachment.length !== 1"> <a class="arrow arrow-left move_previous" href="#"> diff --git a/addons/mail/static/tests/chatter_tests.js b/addons/mail/static/tests/chatter_tests.js index 470b6045797..ac9f715be5d 100644 --- a/addons/mail/static/tests/chatter_tests.js +++ b/addons/mail/static/tests/chatter_tests.js @@ -1445,11 +1445,11 @@ QUnit.test('chatter: Attachment viewer', function (assert) { "image caption should have correct download link"); // click on first image attachement testUtils.dom.click(form.$('.o_thread_message .o_attachment .o_image_box .o_image_overlay').first()); - assert.strictEqual($('.o_modal_fullscreen img.o_viewer_img[data-src="/web/image/1?unique=1&signature=999"]').length, 1, + assert.strictEqual($('.o_modal_fullscreen img.o_viewer_img[data-src="/web/image/1?unique=1&signature=999&model=ir.attachment"]').length, 1, "Modal popup should open with first image src"); // click on next button testUtils.dom.click($('.modal .arrow.arrow-right.move_next span')); - assert.strictEqual($('.o_modal_fullscreen img.o_viewer_img[data-src="/web/image/2?unique=1&signature=999"]').length, 1, + assert.strictEqual($('.o_modal_fullscreen img.o_viewer_img[data-src="/web/image/2?unique=1&signature=999&model=ir.attachment"]').length, 1, "Modal popup should have now second image src"); assert.strictEqual($('.o_modal_fullscreen .o_viewer_toolbar .o_download_btn').length, 1, "Modal popup should have download button"); diff --git a/addons/mail/static/tests/document_viewer_tests.js b/addons/mail/static/tests/document_viewer_tests.js index ef825f84e2a..87fa2dbed94 100644 --- a/addons/mail/static/tests/document_viewer_tests.js +++ b/addons/mail/static/tests/document_viewer_tests.js @@ -19,16 +19,16 @@ var createViewer = function (params) { var viewer = new DocumentViewer(parent, params.attachments, params.attachmentID); var mockRPC = function (route) { - if (route === '/web/static/lib/pdfjs/web/viewer.html?file=/web/content/1') { + if (route === '/web/static/lib/pdfjs/web/viewer.html?file=/web/content/1?model%3Dir.attachment') { return $.when(); } if (route === 'https://www.youtube.com/embed/FYqW0Gdwbzk') { return $.when(); } - if (route === '/web/content/4') { + if (route === '/web/content/4?model%3Dir.attachment') { return $.when(); } - if (route === '/web/image/6?unique=1&signature=999') { + if (route === '/web/image/6?unique=1&signature=999&model=ir.attachment') { return $.when(); } }; @@ -100,38 +100,6 @@ QUnit.module('DocumentViewer', { viewer.destroy(); }); - QUnit.test('Document Viewer PDF', function (assert) { - assert.expect(6); - - var viewer = createViewer({ - attachmentID: 1, - attachments: this.attachments, - mockRPC: function (route, args) { - if (args.method === 'split_pdf') { - assert.deepEqual(args.args, [1, "", false], "should have the right arguments"); - return $.when(); - } - return this._super.apply(this, arguments); - }, - intercepts: { - document_viewer_attachment_changed: function () { - assert.ok(true, "should trigger document_viewer_attachment_changed event"); - } - }, - }); - - assert.containsOnce(viewer, '.o_page_number_input', - "pdf should have a page input"); - assert.containsOnce(viewer, '.o_remainder_input', - "pdf should have a remainder checkbox"); - assert.containsOnce(viewer, '.o_split_btn', - "pdf should have a split button"); - - testUtils.dom.click(viewer.$('.o_split_btn')); - - assert.ok(viewer.isDestroyed(), 'viewer should be destroyed'); - }); - QUnit.test('Document Viewer Youtube', function (assert) { assert.expect(3); @@ -165,7 +133,7 @@ QUnit.module('DocumentViewer', { assert.strictEqual(viewer.$(".o_image_caption:contains('text.html')").length, 1, "the viewer be on the right attachment"); - assert.containsOnce(viewer, 'iframe[data-src="/web/content/4"]', + assert.containsOnce(viewer, 'iframe[data-src="/web/content/4?model%3Dir.attachment"]', "there should be an iframe with the right src"); viewer.destroy(); @@ -197,7 +165,7 @@ QUnit.module('DocumentViewer', { assert.strictEqual(viewer.$(".o_image_caption:contains('image.jpg')").length, 1, "the viewer be on the right attachment"); - assert.containsOnce(viewer, 'img[data-src="/web/image/6?unique=1&signature=999"]', + assert.containsOnce(viewer, 'img[data-src="/web/image/6?unique=1&signature=999&model=ir.attachment"]', "there should be a video player"); viewer.destroy(); diff --git a/addons/mail/views/mail_message_views.xml b/addons/mail/views/mail_message_views.xml index d224fb2ccc0..df7643f7f36 100644 --- a/addons/mail/views/mail_message_views.xml +++ b/addons/mail/views/mail_message_views.xml @@ -144,9 +144,7 @@ <field name="url"/> <field name="type"/> <field name="create_date"/> - <field name="active"/> <field name="name"/> - <field name="res_model_name"/> <field name="res_name"/> <templates> <t t-name="kanban-box"> @@ -155,7 +153,7 @@ <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"/> - <img t-elif="webimage" t-attf-src="/web/image/#{record.id.raw_value}?field=thumbnail" width="100" height="100" alt="Document" class="o_attachment_image"/> + <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> @@ -170,13 +168,7 @@ </t> </div> <div class="o_kanban_record_body"> - <t t-if="record.res_model_name.raw_value"> - <strong><field name="res_model_name"/></strong> - <t t-if="record.res_name.raw_value"> - <span t-att-title="record.res_name.raw_value">: <field name="res_name"/></span> - </t> - </t> - <t t-elif="record.type.raw_value == 'url'"> + <t t-if="record.type.raw_value == 'url'"> <span class="o_document_url"><i class="fa fa-globe"/> <field name="url" widget="url"/></span> </t> <samp t-else="" class="text-muted"> </samp> |
