mirror of
https://github.com/OCA/knowledge.git
synced 2025-07-13 15:34:49 -06:00
[MIG] document_url: Migration to 15.0
This commit is contained in:
parent
620aac5041
commit
95c078588d
@ -72,6 +72,7 @@ Contributors
|
|||||||
* Ernesto Tejeda
|
* Ernesto Tejeda
|
||||||
* Manuel Calero
|
* Manuel Calero
|
||||||
* Víctor Martínez
|
* Víctor Martínez
|
||||||
|
* Matias Peralta - Adhoc SA
|
||||||
|
|
||||||
Maintainers
|
Maintainers
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
|
@ -2,16 +2,23 @@
|
|||||||
# Copyright 2020 Tecnativa - Manuel Calero
|
# Copyright 2020 Tecnativa - Manuel Calero
|
||||||
{
|
{
|
||||||
"name": "URL attachment",
|
"name": "URL attachment",
|
||||||
"version": "14.0.1.0.0",
|
"version": "15.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",
|
||||||
"license": "AGPL-3",
|
"license": "AGPL-3",
|
||||||
"depends": ["mail"],
|
"depends": ["mail"],
|
||||||
"data": [
|
"data": [
|
||||||
"view/document_url_view.xml",
|
|
||||||
"security/ir.model.access.csv",
|
"security/ir.model.access.csv",
|
||||||
|
"view/document_url_view.xml",
|
||||||
],
|
],
|
||||||
"qweb": ["static/src/xml/url.xml"],
|
"assets": {
|
||||||
|
"web.assets_backend": [
|
||||||
|
"document_url/static/src/js/url.esm.js",
|
||||||
|
],
|
||||||
|
"web.assets_qweb": [
|
||||||
|
"document_url/static/src/xml/url.xml",
|
||||||
|
],
|
||||||
|
},
|
||||||
"installable": True,
|
"installable": True,
|
||||||
}
|
}
|
||||||
|
@ -5,3 +5,4 @@
|
|||||||
* Ernesto Tejeda
|
* Ernesto Tejeda
|
||||||
* Manuel Calero
|
* Manuel Calero
|
||||||
* Víctor Martínez
|
* Víctor Martínez
|
||||||
|
* Matias Peralta - Adhoc SA
|
||||||
|
49
document_url/static/src/js/url.esm.js
Normal file
49
document_url/static/src/js/url.esm.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/** @odoo-module **/
|
||||||
|
|
||||||
|
import {AttachmentBox} from "@mail/components/attachment_box/attachment_box";
|
||||||
|
import {AttachmentCard} from "@mail/components/attachment_card/attachment_card";
|
||||||
|
import {patch} from "web.utils";
|
||||||
|
|
||||||
|
patch(AttachmentBox.prototype, "document_url/static/src/js/url.js", {
|
||||||
|
_onAddUrl(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
this.env.bus.trigger("do-action", {
|
||||||
|
action: "document_url.action_ir_attachment_add_url",
|
||||||
|
options: {
|
||||||
|
additional_context: {
|
||||||
|
active_id: this.messaging.models["mail.chatter"].get(
|
||||||
|
this.props.chatterLocalId
|
||||||
|
).threadId,
|
||||||
|
active_ids: [
|
||||||
|
this.messaging.models["mail.chatter"].get(
|
||||||
|
this.props.chatterLocalId
|
||||||
|
).threadId,
|
||||||
|
],
|
||||||
|
active_model: this.messaging.models["mail.chatter"].get(
|
||||||
|
this.props.chatterLocalId
|
||||||
|
).threadModel,
|
||||||
|
},
|
||||||
|
on_close: this._onAddedUrl.bind(this),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
_onAddedUrl() {
|
||||||
|
this.trigger("reload");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
patch(AttachmentCard.prototype, "document_url/static/src/js/url.js", {
|
||||||
|
/**
|
||||||
|
* Return the url of the attachment. Temporary attachments, a.k.a. uploading
|
||||||
|
* attachments, do not have an url.
|
||||||
|
*
|
||||||
|
* @returns {String}
|
||||||
|
*/
|
||||||
|
get attachmentUrl() {
|
||||||
|
return this.env.session.url("/web/content", {
|
||||||
|
id: this.attachmentCard.attachment.id,
|
||||||
|
download: true,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
@ -1,42 +0,0 @@
|
|||||||
/* Copyright 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com)
|
|
||||||
* Pedro M. Baeza <pedro.baeza@serviciosbaeza.com>
|
|
||||||
* Copyright 2016 ACSONE SA/NV (<http://acsone.eu>)
|
|
||||||
* Copyright 2019 Tecnativa - Ernesto Tejeda
|
|
||||||
* Copyright 2020 Tecnativa - Manuel Calero
|
|
||||||
* Copyright 2021 Tecnativa - Víctor Martínez
|
|
||||||
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
*/
|
|
||||||
odoo.define("document_url", function (require) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const AttachmentBox = require("mail/static/src/components/attachment_box/attachment_box.js");
|
|
||||||
const Attachment = require("mail/static/src/components/attachment/attachment.js");
|
|
||||||
const {patch} = require("web.utils");
|
|
||||||
|
|
||||||
patch(AttachmentBox, "document_url", {
|
|
||||||
_onAddUrl() {
|
|
||||||
this.env.bus.trigger("do-action", {
|
|
||||||
action: "document_url.action_ir_attachment_add_url",
|
|
||||||
options: {
|
|
||||||
additional_context: {
|
|
||||||
active_id: this.thread.id,
|
|
||||||
active_ids: [this.thread.id],
|
|
||||||
active_model: this.thread.model,
|
|
||||||
},
|
|
||||||
on_close: this._onAddedUrl.bind(this),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
},
|
|
||||||
_onAddedUrl() {
|
|
||||||
this.trigger("reload");
|
|
||||||
},
|
|
||||||
});
|
|
||||||
patch(Attachment, "document_url", {
|
|
||||||
_onClickImage(ev) {
|
|
||||||
if (!this.attachment.isViewable) {
|
|
||||||
this._onClickDownload(ev);
|
|
||||||
}
|
|
||||||
this._super.apply(this, arguments);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
@ -2,43 +2,66 @@
|
|||||||
<!-- Copyright 2018 Tecnativa - Ernesto Tejeda
|
<!-- Copyright 2018 Tecnativa - Ernesto Tejeda
|
||||||
Copyright 2021 Tecnativa - Víctor Martínez
|
Copyright 2021 Tecnativa - Víctor Martínez
|
||||||
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 xml:space="preserve">
|
<templates>
|
||||||
<t t-inherit="mail.AttachmentBox" t-inherit-mode="extension" owl="1">
|
<t t-inherit="mail.AttachmentBox" t-inherit-mode="extension" owl="1">
|
||||||
<xpath expr="//button[hasclass('o_AttachmentBox_buttonAdd')]" position="after">
|
<xpath
|
||||||
<button
|
expr="//button[hasclass('o_AttachmentBox_buttonAdd')]"
|
||||||
type="button"
|
position="replace"
|
||||||
class="o_add_url_button btn btn-link"
|
>
|
||||||
t-on-click="_onAddUrl"
|
<div align="center">
|
||||||
>
|
<button
|
||||||
|
class="o_AttachmentBox_buttonAdd btn btn-link"
|
||||||
|
type="button"
|
||||||
|
t-on-click="_onClickAdd"
|
||||||
|
>
|
||||||
|
<i class="fa fa-plus-square" />
|
||||||
|
Add attachments
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="o_add_url_button btn btn-link"
|
||||||
|
t-on-click="_onAddUrl"
|
||||||
|
>
|
||||||
<i class="fa fa-plus-square" />
|
<i class="fa fa-plus-square" />
|
||||||
Add URL
|
Add URL
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
</xpath>
|
</xpath>
|
||||||
</t>
|
</t>
|
||||||
<t t-inherit="mail.Attachment" t-inherit-mode="extension" owl="1">
|
|
||||||
|
<t t-inherit="mail.AttachmentCard" t-inherit-mode="extension" owl="1">
|
||||||
<xpath
|
<xpath
|
||||||
expr="//t[@t-if='attachment']/t/div[1][hasclass('o_Attachment_details')]//div[hasclass('o_Attachment_filename')]/t"
|
expr="//div[hasclass('o_AttachmentCard_details')]/t/div"
|
||||||
position="replace"
|
position="replace"
|
||||||
>
|
>
|
||||||
<a t-att-href="attachmentUrl" target="new">
|
<a t-att-href="attachmentUrl" target="new">
|
||||||
<t t-esc="attachment.displayName" />
|
<t t-esc="attachmentCard.attachment.displayName" />
|
||||||
</a>
|
</a>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath
|
<xpath
|
||||||
expr="//div[hasclass('o_Attachment_asideItemDownload')]"
|
expr="//div[hasclass('o_AttachmentCard_details')]/t[2]/div"
|
||||||
|
position="replace"
|
||||||
|
>
|
||||||
|
</xpath>
|
||||||
|
<xpath
|
||||||
|
expr="//div[hasclass('o_AttachmentCard_asideItemDownload')]"
|
||||||
position="attributes"
|
position="attributes"
|
||||||
>
|
>
|
||||||
<attribute name="t-if">attachment.mimetype != 'application/link'</attribute>
|
<attribute
|
||||||
|
name="t-if"
|
||||||
|
>attachmentCard.attachment.mimetype != 'application/link'</attribute>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//div[hasclass('o_Attachment_image')]" position="attributes">
|
<xpath expr="//div[hasclass('o_AttachmentCard_image')]" position="attributes">
|
||||||
<attribute name="t-if">attachment.mimetype != 'application/link'</attribute>
|
<attribute
|
||||||
|
name="t-if"
|
||||||
|
>attachmentCard.attachment.mimetype != 'application/link'</attribute>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//div[hasclass('o_Attachment_image')]" position="before">
|
<xpath expr="//div[hasclass('o_AttachmentCard_image')]" position="before">
|
||||||
<a
|
<a
|
||||||
class="o_Attachment_url_icon"
|
class="o_Attachment_url_icon"
|
||||||
t-att-href="attachmentUrl"
|
t-att-href="attachmentUrl"
|
||||||
target="new"
|
target="new"
|
||||||
t-if="attachment.mimetype=='application/link'"
|
t-if="attachmentCard.attachment.mimetype=='application/link'"
|
||||||
>
|
>
|
||||||
<i class="fa fa-link fa-2x" />
|
<i class="fa fa-link fa-2x" />
|
||||||
</a>
|
</a>
|
||||||
|
@ -7,14 +7,12 @@ class TestDocumentUrl(common.TransactionCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
wizard_add_url = self.env["ir.attachment.add_url"]
|
wizard_add_url = self.env["ir.attachment.add_url"]
|
||||||
ctx = {
|
|
||||||
"active_model": "res.users",
|
self.wizard_add_url = wizard_add_url.with_context(
|
||||||
"active_id": self.env.ref("base.user_demo").id,
|
active_model="res.users",
|
||||||
"active_ids": [self.env.ref("base.user_demo").id],
|
active_id=self.env.ref("base.user_demo").id,
|
||||||
}
|
active_ids=[self.env.ref("base.user_demo").id],
|
||||||
self.wizard_add_url = wizard_add_url.with_context(ctx).create(
|
).create({"name": "Demo User (Website)", "url": "http://www.odoodemouser.com"})
|
||||||
{"name": "Demo User (Website)", "url": "http://www.odoodemouser.com"}
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_add_url_attachment(self):
|
def test_add_url_attachment(self):
|
||||||
self.wizard_add_url.action_add_url()
|
self.wizard_add_url.action_add_url()
|
||||||
|
@ -1,26 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<odoo>
|
<odoo>
|
||||||
<template
|
<record id='action_ir_attachment_add_url' model='ir.actions.act_window'>
|
||||||
id="assets_backend"
|
<field name='name'>Add URL</field>
|
||||||
name="document_url assets"
|
<field name='res_model'>ir.attachment.add_url</field>
|
||||||
inherit_id="web.assets_backend"
|
<field name='type'>ir.actions.act_window</field>
|
||||||
>
|
<field name='target'>new</field>
|
||||||
<xpath expr="." position="inside">
|
<field name='view_mode'>form</field>
|
||||||
<script type="text/javascript" src="/document_url/static/src/js/url.js" />
|
|
||||||
<link
|
|
||||||
href="/document_url/static/src/scss/document_url.scss"
|
|
||||||
rel="stylesheet"
|
|
||||||
/>
|
|
||||||
</xpath>
|
|
||||||
</template>
|
|
||||||
<record model="ir.actions.act_window" id='action_ir_attachment_add_url'>
|
|
||||||
<field name="name">Add URL</field>
|
|
||||||
<field name="res_model">ir.attachment.add_url</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.ui.view" id="view_ir_attachment_add_url_form">
|
<data>
|
||||||
|
<record id="view_ir_attachment_add_url_form" model="ir.ui.view">
|
||||||
<field name="name">ir.attachment.add_url.form</field>
|
<field name="name">ir.attachment.add_url.form</field>
|
||||||
<field name="model">ir.attachment.add_url</field>
|
<field name="model">ir.attachment.add_url</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
@ -31,15 +19,16 @@
|
|||||||
</group>
|
</group>
|
||||||
<footer>
|
<footer>
|
||||||
<button
|
<button
|
||||||
name="action_add_url"
|
name="action_add_url"
|
||||||
string="Add"
|
string="Add"
|
||||||
class="oe_highlight"
|
class="oe_highlight"
|
||||||
type="object"
|
type="object"
|
||||||
/>
|
/>
|
||||||
or
|
or
|
||||||
<button special="cancel" string="Cancel" class="oe_link" />
|
<button special="cancel" string="Cancel" class="oe_link" />
|
||||||
</footer>
|
</footer>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
</data>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
@ -10,7 +10,7 @@ class AddUrlWizard(models.TransientModel):
|
|||||||
_name = "ir.attachment.add_url"
|
_name = "ir.attachment.add_url"
|
||||||
_description = "Wizard to add URL attachment"
|
_description = "Wizard to add URL attachment"
|
||||||
|
|
||||||
name = fields.Char("Name", required=True)
|
name = fields.Char(required=True)
|
||||||
url = fields.Char("URL", required=True)
|
url = fields.Char("URL", required=True)
|
||||||
|
|
||||||
def action_add_url(self):
|
def action_add_url(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user