[MIG] web_tree_many2one_clickable: Migration to 15.0

pull/3035/head
Xander De Matteis 2022-06-17 12:30:37 +02:00 committed by Carlos Roca
parent da42521ced
commit f31af38338
4 changed files with 69 additions and 85 deletions

View File

@ -7,7 +7,7 @@
{ {
"name": "Clickable many2one fields for tree views", "name": "Clickable many2one fields for tree views",
"summary": "Open the linked resource when clicking on their name", "summary": "Open the linked resource when clicking on their name",
"version": "14.0.1.0.2", "version": "15.0.1.0.0",
"category": "Hidden", "category": "Hidden",
"website": "https://github.com/OCA/web", "website": "https://github.com/OCA/web",
"author": "Therp BV, " "author": "Therp BV, "
@ -17,5 +17,13 @@
"license": "AGPL-3", "license": "AGPL-3",
"installable": True, "installable": True,
"depends": ["web"], "depends": ["web"],
"data": ["views/assets.xml"], "data": [],
"assets": {
"web.assets_backend": [
"web_tree_many2one_clickable/static/src/js/*.js",
],
"web.assets_common": [
"web_tree_many2one_clickable/static/src/css/web_tree_many2one_clickable.scss",
],
},
} }

View File

@ -1,10 +1,10 @@
td.o_many2one_cell { td.o_many2one_cell {
a { a {
margin-left: 0.5em; margin-left: 0.5em;
visibility: hidden; visibility: hidden;
} }
&:hover a { &:hover a {
visibility: visible; visibility: visible;
} }
} }

View File

@ -7,64 +7,62 @@
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */ * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define("web_tree_many2one_clickable.many2one_clickable", function (require) { odoo.define("web_tree_many2one_clickable.many2one_clickable", function (require) {
"use strict"; "use strict";
var ListRenderer = require("web.ListRenderer"); var ListRenderer = require("web.ListRenderer");
var ListFieldMany2One = require("web.relational_fields").ListFieldMany2One; var ListFieldMany2One = require("web.relational_fields").ListFieldMany2One;
ListRenderer.include({ ListRenderer.include({
_renderBodyCell: function (record, node, colIndex, options) { _renderBodyCell: function (record, node, colIndex, options) {
if ( if (
!node.attrs.widget && !node.attrs.widget &&
node.attrs.name && node.attrs.name &&
this.state.fields[node.attrs.name] && this.state.fields[node.attrs.name] &&
this.state.fields[node.attrs.name].type === "many2one" this.state.fields[node.attrs.name].type === "many2one"
) { ) {
// No explicit widget provided on a many2one field, // No explicit widget provided on a many2one field,
// force `many2one` widget // force `many2one` widget
node.attrs.widget = "many2one"; node.attrs.widget = "many2one";
} }
return this._super(record, node, colIndex, options); return this._super(record, node, colIndex, options);
}, },
}); });
ListFieldMany2One.include({ ListFieldMany2One.include({
_renderReadonly: function () { _renderReadonly: function () {
this._super.apply(this, arguments); this._super.apply(this, arguments);
var self = this; var self = this;
if (!this.noOpen && this.value) { if (!this.noOpen && this.value) {
// Replace '<a>' element // Replace '<a>' element
this.$el.removeClass("o_form_uri"); this.$el.removeClass("o_form_uri");
this.$el = $("<span/>", { this.$el = $("<span/>", {
html: this.$el.html(), html: this.$el.html(),
class: this.$el.attr("class") + " o_field_text", class: this.$el.attr("class") + " o_field_text",
name: this.$el.attr("name"), name: this.$el.attr("name"),
}); });
// Append button // Append button
var $a = $("<a/>", { var $a = $("<a/>", {
href: "#", href: "#",
class: class: "o_form_uri btn btn-sm btn-secondary fa fa-angle-double-right",
"o_form_uri btn btn-sm btn-secondary" + }).on("click", function (ev) {
" fa fa-angle-double-right", ev.preventDefault();
}).on("click", function (ev) { ev.stopPropagation();
ev.preventDefault();
ev.stopPropagation();
self.do_action({ self.do_action({
type: "ir.actions.act_window", type: "ir.actions.act_window",
res_model: self.field.relation, res_model: self.field.relation,
res_id: self.value.res_id, res_id: self.value.res_id,
views: [[false, "form"]], views: [[false, "form"]],
target: "target", target: "target",
context: self.record.getContext({ context: self.record.getContext({
additionalContext: self.attrs.context || {}, additionalContext: self.attrs.context || {},
}), }),
}); });
}); });
this.$el.append($a); this.$el.append($a);
} }
}, },
}); });
}); });

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2015 Pedro M. Baeza <pedro.baeza@serviciosbaeza.com>
Copyright 2019 Alexandre Díaz <alexandre.diaz@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<template
id="assets_backend"
name="web_tree_many2one_clickable assets"
inherit_id="web.assets_backend"
>
<xpath expr="." position="inside">
<link
rel="stylesheet"
href="/web_tree_many2one_clickable/static/src/css/web_tree_many2one_clickable.scss"
/>
<script
type="text/javascript"
src="/web_tree_many2one_clickable/static/src/js/web_tree_many2one_clickable.js"
/>
</xpath>
</template>
</odoo>