[MIG] document_url: Migration to 17.0

This commit is contained in:
Franco Leyes 2024-05-22 15:42:24 -03:00 committed by Bhavesh Heliconia
parent 7c1a3cff02
commit 2ee541112c
4 changed files with 94 additions and 91 deletions

View File

@ -2,7 +2,7 @@
# Copyright 2020 Tecnativa - Manuel Calero # Copyright 2020 Tecnativa - Manuel Calero
{ {
"name": "URL attachment", "name": "URL attachment",
"version": "16.0.1.0.4", "version": "17.0.1.0.0",
"category": "Tools", "category": "Tools",
"author": "Tecnativa, Odoo Community Association (OCA)", "author": "Tecnativa, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/knowledge", "website": "https://github.com/OCA/knowledge",

View File

@ -1,47 +1,51 @@
/** @odoo-module **/ /** @odoo-module **/
import {registerPatch} from "@mail/model/model_core"; import {Chatter} from "@mail/core/web/chatter";
import {AttachmentCard} from "@mail/components/attachment_card/attachment_card"; import {patch} from "@web/core/utils/patch";
import {patch} from "web.utils";
import {url} from "@web/core/utils/urls"; import {url} from "@web/core/utils/urls";
import {AttachmentList} from "@mail/core/common/attachment_list";
registerPatch({ patch(Chatter.prototype, {
name: "AttachmentBoxView", _onAddUrl(event) {
recordMethods: { event.preventDefault();
_onAddUrl(event) { event.stopPropagation();
event.preventDefault(); this.action.doAction("document_url.action_ir_attachment_add_url", {
event.stopPropagation(); additionalContext: {
this.env.services.action.doAction( active_id: this.state.thread.id,
"document_url.action_ir_attachment_add_url", active_ids: [this.state.thread.id],
{ active_model: this.state.thread.model,
additionalContext: { },
active_id: this.chatter.thread.id, onClose: async () => {
active_ids: [this.chatter.thread.id], await this.updateThreadAttachments();
active_model: this.chatter.thread.model, },
}, });
onClose: this._onAddedUrl.bind(this), },
} async updateThreadAttachments() {
); const attachments = await this.orm.call("ir.attachment", "search_read", [
}, [
_onAddedUrl() { ["res_model", "=", this.state.thread.model],
this.chatter.refresh(); ["res_id", "=", this.state.thread.id],
}, ],
["id", "name", "mimetype", "url"],
]);
this.state.thread.attachments = attachments.map((att) => ({
id: att.id,
name: att.name,
mimetype: att.mimetype,
url: att.url,
}));
},
onClickAddAttachments(ev) {
ev.stopPropagation();
this.state.isAttachmentBoxOpened = !this.state.isAttachmentBoxOpened;
if (this.state.isAttachmentBoxOpened) {
this.rootRef.el.scrollTop = 0;
this.state.thread.scrollTop = 0;
}
}, },
}); });
registerPatch({ patch(AttachmentList.prototype, {
name: "Chatter",
recordMethods: {
/**
* Handles click on the attach button.
*/
async onClickButtonAddAttachments() {
await this.onClickButtonToggleAttachments();
},
},
});
patch(AttachmentCard.prototype, "document_url/static/src/js/url.js", {
/** /**
* Return the url of the attachment. Temporary attachments, a.k.a. uploading * Return the url of the attachment. Temporary attachments, a.k.a. uploading
* attachments, do not have an url. * attachments, do not have an url.
@ -50,7 +54,7 @@ patch(AttachmentCard.prototype, "document_url/static/src/js/url.js", {
*/ */
get attachmentUrl() { get attachmentUrl() {
return url("/web/content", { return url("/web/content", {
id: this.attachmentCard.attachment.id, id: this.attachment.id,
download: true, download: true,
}); });
}, },

View File

@ -4,67 +4,67 @@
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<templates> <templates>
<t t-inherit="mail.AttachmentBox" t-inherit-mode="extension" owl="1"> <t t-inherit="mail.Chatter" t-inherit-mode="extension">
<xpath <xpath expr="//AttachmentList//..//FileUploader/t" position="replace">
expr="//button[hasclass('o_AttachmentBox_buttonAdd')]" <t t-set-slot="toggler">
position="replace" <div class="d-flex mx-auto">
> <button
<div align="center"> class="btn btn-link"
<button type="button"
class="o_AttachmentBox_buttonAdd btn btn-link" t-att-disabled="!state.thread.hasWriteAccess"
type="button" >
t-on-click="attachmentBoxView.onClickAddAttachment" <i class="fa fa-plus-square" />
t-att-disabled="!attachmentBoxView.chatter.isTemporary and !attachmentBoxView.chatter.hasWriteAccess" Attach files
> </button>
<i class="fa fa-plus-square" /> <button
Attach files class="btn btn-link"
</button> type="button"
<button t-att-disabled="!state.thread.hasWriteAccess"
type="button" t-on-click="_onAddUrl"
class="o_add_url_button btn btn-link" >
t-on-click="attachmentBoxView._onAddUrl" <i class="fa fa-plus-square" />
> Add URL
<i class="fa fa-plus-square" /> </button>
Add URL </div>
</button> </t>
</div>
</xpath> </xpath>
</t> </t>
<t t-inherit="mail.AttachmentCard" t-inherit-mode="extension" owl="1"> <t t-inherit="mail.AttachmentList" t-inherit-mode="extension">
<xpath <xpath
expr="//button[hasclass('o_AttachmentCard_asideItemDownload')]" expr="//div[contains(@class, 'o-mail-AttachmentCard-aside')]//button[@title='Download']"
position="attributes"
>
<attribute name="t-if">attachment.mimetype != 'application/link'</attribute>
</xpath>
<xpath
expr="//div[hasclass('o-mail-AttachmentCard-aside')]//button[@title='Download']"
position="after"
>
<button
class="btn d-flex justify-content-center align-items-center w-100 h-100 rounded-0"
t-attf-class="bg-300"
t-on-click="() => window.open(attachmentUrl, '_blank')"
title="Open"
t-if="attachment.mimetype === 'application/link'"
target="_blank"
>
<i class="fa fa-link" role="img" aria-label="Open" />
</button>
</xpath>
<xpath
expr="//div[hasclass('o-mail-AttachmentCard-image')]"
position="attributes" position="attributes"
> >
<attribute <attribute
name="t-if" name="t-if"
>attachmentCard.attachment.mimetype != 'application/link'</attribute> >attachment.mimetype !== 'application/link'</attribute>
</xpath> </xpath>
<xpath <xpath expr="//div[hasclass('o-mail-AttachmentCard-image')]" position="before">
expr="//button[hasclass('o_AttachmentCard_asideItemDownload')]"
position="after"
>
<button
class="o_AttachmentCard_asideItem o_AttachmentCard_asideItemDownload btn d-flex justify-content-center align-items-center w-100 h-100 rounded-0 bg-300"
t-on-click="() => window.open(attachmentUrl, '_blank')"
title="Open"
t-if="attachmentCard.attachment.mimetype === 'application/link'"
target="new"
>
<i class="fa fa-link" role="img" aria-label="Open" />
</button>
</xpath>
<xpath expr="//div[hasclass('o_AttachmentCard_image')]" position="attributes">
<attribute
name="t-if"
>attachmentCard.attachment.mimetype != 'application/link'</attribute>
</xpath>
<xpath expr="//div[hasclass('o_AttachmentCard_image')]" position="before">
<a <a
class="o_Attachment_url_ico o_image flex-shrink-0 m-1" class="o_Attachment_url_ico o_image flex-shrink-0 m-1"
t-att-href="attachmentUrl" t-att-href="attachmentUrl"
target="new" target="_blank"
t-if="attachmentCard.attachment.mimetype=='application/link'" t-if="attachment.mimetype === 'application/link'"
> >
<i class="fa fa-link fa-2x" /> <i class="fa fa-link fa-2x" />
</a> </a>

View File

@ -24,8 +24,7 @@
class="oe_highlight" class="oe_highlight"
type="object" type="object"
/> />
or <button special="cancel" string="Cancel" class="btn-secondary" />
<button special="cancel" string="Cancel" class="oe_link" />
</footer> </footer>
</form> </form>
</field> </field>