From d3b8422c9c44557256836bdc0da5480f553eec4d Mon Sep 17 00:00:00 2001 From: Thanh Dodeur Date: Wed, 12 Dec 2018 10:50:54 +0000 Subject: [PATCH] [FIX] document_indexation: removes the attachment sidebar button This commit removes the attachment button from the sidebar. Reason: following the introduction of the attachment button in the chatter (7f97c9fc056a0949c61c8444ee20f4c95bb3e9a9) and the partial removal of this feature (1dbb555aab8910d1739783c39fd502c4a2e145d0) in V12.0, it has been decided that the chatter button will completely replace this feature. closes odoo/odoo#29468 --- addons/attachment_indexation/__manifest__.py | 3 - .../static/src/js/attachment_indexation.js | 200 ------------------ .../tests/attachment_indexation_tests.js | 112 ---------- .../views/attachment_indexation_templates.xml | 14 -- addons/web/static/tests/views/form_tests.js | 45 ---- 5 files changed, 374 deletions(-) delete mode 100644 addons/attachment_indexation/static/src/js/attachment_indexation.js delete mode 100644 addons/attachment_indexation/static/tests/attachment_indexation_tests.js delete mode 100644 addons/attachment_indexation/views/attachment_indexation_templates.xml diff --git a/addons/attachment_indexation/__manifest__.py b/addons/attachment_indexation/__manifest__.py index 2e0295018d5..9c1cb4baf14 100644 --- a/addons/attachment_indexation/__manifest__.py +++ b/addons/attachment_indexation/__manifest__.py @@ -11,8 +11,5 @@ Attachments list and document indexation * Document Indexation: odt """, 'depends': ['web'], - 'data': [ - 'views/attachment_indexation_templates.xml', - ], 'installable': True, } diff --git a/addons/attachment_indexation/static/src/js/attachment_indexation.js b/addons/attachment_indexation/static/src/js/attachment_indexation.js deleted file mode 100644 index 05e3a4fbb5a..00000000000 --- a/addons/attachment_indexation/static/src/js/attachment_indexation.js +++ /dev/null @@ -1,200 +0,0 @@ -odoo.define('attachment_indexation.document', function (require) { -"use strict"; - -var core = require('web.core'); -var Dialog = require('web.Dialog'); -var framework = require('web.framework'); -var Sidebar = require('web.Sidebar'); -var field_utils = require('web.field_utils'); - -var _t = core._t; - -Sidebar.include({ - /** - * @override - */ - init : function (parent, options) { - this._super.apply(this, arguments); - this.hasAttachments = options.viewType === "form"; - if (this.hasAttachments) { - this.sections.splice(1, 0, { 'name' : 'files', 'label' : _t('Attachment(s)'), }); - this.items.files = []; - this.fileuploadId = _.uniqueId('oe_fileupload'); - $(window).on(this.fileuploadId, this._onFileUploaded.bind(this)); - } - }, - /** - * Get the attachment linked to the record when the toolbar started - * - * @override - */ - start: function () { - var _super = this._super.bind(this); - var def = this.hasAttachments ? this._updateAttachments() : $.when(); - return def.then(_super); - }, - /** - * @override - */ - destroy: function () { - if (this.hasAttachments) { - $(window).off(this.fileuploadId); - } - this._super.apply(this, arguments); - }, - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - /** - * @override - */ - updateEnv: function (env) { - this.env = env; - var _super = _.bind(this._super, this, env); - var def = this.hasAttachments ? this._updateAttachments() : $.when(); - def.then(_super); - }, - - //-------------------------------------------------------------------------- - // Private - //-------------------------------------------------------------------------- - - /** - * Process the attachments then rerender the toolbar - * - * @private - * @param {Object} attachments - */ - _processAttachments: function (attachments) { - //to display number in name if more then one attachment which has same name. - var self = this; - _.chain(attachments) - .groupBy(function (attachment) { return attachment.name; }) - .each(function (attachment) { - if (attachment.length > 1) { - _.map(attachment, function (attachment, i) { - attachment.name = _.str.sprintf(_t("%s (%s)"), attachment.name, i+1); - }); - } - }); - _.each(attachments,function (a) { - a.label = a.name; - if (a.type === "binary") { - a.url = '/web/content/' + a.id + '?download=true'; - } - a.create_date = field_utils.parse.datetime(a.create_date, 'create_date', {isUTC: true}); - a.create_date_string = field_utils.format.datetime(a.create_date, 'create_date', self.env.context.params); - a.write_date = field_utils.parse.datetime(a.write_date, 'write_date', {isUTC: true}); - a.write_date_string = field_utils.format.datetime(a.write_date, 'write_date', self.env.context.params); - }); - this.items.files = attachments; - }, - /** - * @private - * @override - */ - _redraw: function () { - this._super.apply(this, arguments); - if (this.hasAttachments) { - this.$('.o_sidebar_add_attachment .o_form_binary_form') - .change(this._onAddAttachment.bind(this)); - this.$('.o_sidebar_delete_attachment') - .click(this._onDeleteAttachment.bind(this)); - } - }, - /** - * Update the attachments to be displayed in the attachment section - * of the toolbar - * - * @private - */ - _updateAttachments: function () { - if (this.items.files === undefined) { - return $.when(); - } - var activeId = this.env.activeIds[0]; - if (!activeId) { - this.items.files = []; - return $.when(); - } else { - var domain = [ - ['res_model', '=', this.env.model], - ['res_id', '=', activeId], - ['type', 'in', ['binary', 'url']] - ]; - var fields = ['name', 'url', 'type', - 'create_uid', 'create_date', 'write_uid', 'write_date']; - return this._rpc({ - model: 'ir.attachment', - method: 'search_read', - context: this.env.context, - domain: domain, - fields: fields, - }).then(this._processAttachments.bind(this)); - } - }, - - //-------------------------------------------------------------------------- - // Handlers - //-------------------------------------------------------------------------- - - /** - * Method triggered when user click on 'add attachment' and select a file - * - * @private - * @param {Event} event - */ - _onAddAttachment: function (event) { - var $event = $(event.target); - if ($event.val() !== '') { - var $binaryForm = this.$('form.o_form_binary_form'); - $binaryForm.submit(); - $binaryForm.find('input[type=file]').prop('disabled', true); - $binaryForm.find('button').prop('disabled', true).find('img, span').toggle(); - this.$('.o_sidebar_add_attachment a').text(_t('Uploading...')); - framework.blockUI(); - } - }, - /** - * Method triggered when user delete an attachment - * - * @private - * @param {Event} event - */ - _onDeleteAttachment: function (event) { - event.preventDefault(); - var self = this; - var $event = $(event.currentTarget); - var options = { - confirm_callback: function () { - self._rpc({ - model: 'ir.attachment', - method: 'unlink', - args: [parseInt($event.attr('data-id'), 10)], - }) - .then(self._updateAttachments.bind(self)) - .then(self._redraw.bind(self)); - } - }; - Dialog.confirm(this, _t("Do you really want to delete this attachment ?"), options); - }, - /** - * Handler called when the upload is done - * - * @private - */ - _onFileUploaded: function () { - var attachments = Array.prototype.slice.call(arguments, 1); - var uploadErrors = _.filter(attachments, function (attachment) { - return attachment.error; - }); - if (uploadErrors.length) { - this.do_warn(_t('Uploading Error'), uploadErrors[0].error); - } - this._updateAttachments().then(this._redraw.bind(this)); - framework.unblockUI(); - } -}); - -}); diff --git a/addons/attachment_indexation/static/tests/attachment_indexation_tests.js b/addons/attachment_indexation/static/tests/attachment_indexation_tests.js deleted file mode 100644 index ee3f4c414a2..00000000000 --- a/addons/attachment_indexation/static/tests/attachment_indexation_tests.js +++ /dev/null @@ -1,112 +0,0 @@ -odoo.define('attachment_indexation.tests', function (require) { - "use strict"; - - var testUtils = require('web.test_utils'); - var FormView = require('web.FormView'); - var ListView = require('web.ListView'); - - var createView = testUtils.createView; - - QUnit.module('AttachmentIndexationTest', { - beforeEach: function () { - this.data = { - partner: { - fields: { - display_name: { string: "Displayed name", type: "char" } - }, - records: [{ - id: 1, - display_name: "first record", - }, { - id: 2, - display_name: "second record", - }] - }, - 'ir.attachment': { - fields: { - type: { string: "Type", type: "char" }, - name: {string: "Name", type: "char"}, - res_id: {string: "ResId", type: "integer"}, - res_model: {string: "ResModel", type: "char"} - }, - records: [{ - id: 1, - type:"binary", - name: "attachment1", - res_id: 1, - res_model: 'partner' - },{ - id: 2, - type:"binary", - name: "attachment2", - res_id: 1, - res_model: 'partner' - }] - } - }; - } - }, function () { - QUnit.module('DocView'); - QUnit.test('AttachmentIndexationAttachmentTest', function (assert) { - assert.expect(3); - - var form = createView({ - View: FormView, - model: 'partner', - data: this.data, - arch: '
' + - '' + - '' + - '' + - '
', - res_id: 1, - viewOptions: {hasSidebar: true}, - mockRPC: function (route, args) { - if (args.method === 'search_read' && args.model === 'ir.attachment') { - return $.when(this.data['ir.attachment'].records); - } - if (route === '/web/dataset/call_kw/ir.attachment/unlink') { - assert.strictEqual(args.args[0], 1, "Should have correct id of the attachment to be deleted"); - } - return this._super.apply(this, arguments); - } - }); - - assert.containsN(form.sidebar, '.o_sidebar_delete_attachment', 2, "there should be two attachments"); - testUtils.dom.click(form.sidebar.$('.o_dropdown_toggler_btn:contains("Attachment")')); - testUtils.dom.click(form.sidebar.$('.o_sidebar_delete_attachment:eq(0)')); - testUtils.dom.click($('.modal-footer .btn-primary')); - assert.containsOnce(form.sidebar, '.o_sidebar_delete_attachment', "there should be only one attachment"); - form.destroy(); - }); - - QUnit.test('no attachment on list view', function (assert) { - assert.expect(4); - - var list = createView({ - View: ListView, - model: 'partner', - data: this.data, - groupBy: ['display_name'], - viewOptions: {sidebar: true}, - arch: '' + - '' + - '', - mockRPC: function (route, args) { - assert.step(args.model); - return this._super.apply(this, arguments); - } - }); - - // select record then trigger render - testUtils.dom.click(list.$('.o_group_header:last')); - testUtils.dom.click(list.$('.o_data_row input')); - testUtils.dom.click(list.$('.o_group_header:first')); - - assert.verifySteps(['partner', 'partner', 'partner'], - "ir.attachment not called when selecting record in list view"); - - list.destroy(); - }); - }); -}); diff --git a/addons/attachment_indexation/views/attachment_indexation_templates.xml b/addons/attachment_indexation/views/attachment_indexation_templates.xml deleted file mode 100644 index bb58e3f0357..00000000000 --- a/addons/attachment_indexation/views/attachment_indexation_templates.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - -