From 04f51fe278f7f9c39722c6e441452784418fe72f Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Tue, 1 Aug 2023 10:40:55 +0200 Subject: [PATCH] [IMP] display a helper to add a tooltip on a field. Display the tooltip on list views. One tooltip per field and do not handle user specific tooltips --- web_field_tooltip/__manifest__.py | 2 +- web_field_tooltip/i18n/fr.po | 43 ++- web_field_tooltip/i18n/web_field_tooltip.pot | 35 ++- web_field_tooltip/models/__init__.py | 2 + web_field_tooltip/models/ir_http.py | 19 ++ .../models/ir_model_fields_tooltip.py | 19 +- web_field_tooltip/models/res_users.py | 31 ++ .../security/ir_model_access.xml | 2 +- web_field_tooltip/security/ir_rule.xml | 36 --- web_field_tooltip/security/res_groups.xml | 11 - .../static/src/css/web_field_tooltip.css | 9 +- .../static/src/js/web_field_tooltip.js | 293 ++++++++++++------ .../views/ir_model_fields_tooltip.xml | 1 + web_field_tooltip/views/res_users.xml | 22 ++ 14 files changed, 362 insertions(+), 163 deletions(-) create mode 100644 web_field_tooltip/models/ir_http.py create mode 100644 web_field_tooltip/models/res_users.py delete mode 100644 web_field_tooltip/security/ir_rule.xml create mode 100644 web_field_tooltip/views/res_users.xml diff --git a/web_field_tooltip/__manifest__.py b/web_field_tooltip/__manifest__.py index 737f58080..5e37d5290 100644 --- a/web_field_tooltip/__manifest__.py +++ b/web_field_tooltip/__manifest__.py @@ -14,8 +14,8 @@ "data": [ "security/res_groups.xml", "security/ir_model_access.xml", - "security/ir_rule.xml", "views/ir_model_fields_tooltip.xml", + "views/res_users.xml", "views/template.xml", ], } diff --git a/web_field_tooltip/i18n/fr.po b/web_field_tooltip/i18n/fr.po index 69dcf7a8c..4ac5d91b7 100644 --- a/web_field_tooltip/i18n/fr.po +++ b/web_field_tooltip/i18n/fr.po @@ -6,11 +6,10 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0+e\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-06 07:59+0000\n" -"PO-Revision-Date: 2023-07-06 07:42+0000\n" +"POT-Creation-Date: 2023-08-01 08:24+0000\n" +"PO-Revision-Date: 2023-08-01 08:24+0000\n" "Last-Translator: \n" "Language-Team: \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -25,7 +24,14 @@ msgstr "Une infobulle existe déjà pour ce champ" #. module: web_field_tooltip #: model:ir.model.fields,field_description:web_field_tooltip.field_ir_model_fields_tooltip__active msgid "Active" -msgstr "Active" +msgstr "" + +#. module: web_field_tooltip +#. openerp-web +#: code:addons/web_field_tooltip/static/src/js/web_field_tooltip.js:0 +#, python-format +msgid "Add a Tooltip" +msgstr "Ajouter une infobulle" #. module: web_field_tooltip #: model_terms:ir.ui.view,arch_db:web_field_tooltip.ir_model_fields_tooltip_form_view @@ -83,10 +89,15 @@ msgstr "Infobulle de Champ" msgid "Fields Tooltips" msgstr "Infobulles" +#. module: web_field_tooltip +#: model:ir.model,name:web_field_tooltip.model_ir_http +msgid "HTTP Routing" +msgstr "Routage HTTP" + #. module: web_field_tooltip #: model:ir.model.fields,field_description:web_field_tooltip.field_ir_model_fields_tooltip__id msgid "ID" -msgstr "ID" +msgstr "" #. module: web_field_tooltip #: model:ir.model.fields,field_description:web_field_tooltip.field_ir_model_fields_tooltip____last_update @@ -113,6 +124,7 @@ msgstr "Dernière mise à jour le" #. module: web_field_tooltip #. openerp-web #: code:addons/web_field_tooltip/static/src/js/web_field_tooltip.js:0 +#: code:addons/web_field_tooltip/static/src/js/web_field_tooltip.js:0 #, python-format msgid "Manage Tooltips" msgstr "Gérer les Infobulles" @@ -143,27 +155,32 @@ msgid "Set active to false to hide the Tooltip without removing it." msgstr "" "Mettre le champ actif à faux pour masquer l'Infobulle sans la supprimer." +#. module: web_field_tooltip +#: model:ir.model.fields,field_description:web_field_tooltip.field_res_users__tooltip_show_add_helper +msgid "Show helper to add tooltips on fields" +msgstr "Afficher l'aide pour l'ajout des infobulles sur les champs" + #. module: web_field_tooltip #: model:res.groups,comment:web_field_tooltip.group_tooltip_manager msgid "The user will be able to manage all the tooltips." msgstr "L'utilisateur pourra gérer toutes les infobulles." -#. module: web_field_tooltip -#: model:res.groups,comment:web_field_tooltip.group_tooltip_user -msgid "The user will be able to manage his own tooltips." -msgstr "L'utilisateur pourra gérer ses infobulles." - #. module: web_field_tooltip #: model:res.groups,name:web_field_tooltip.group_tooltip_manager msgid "Tooltip Manager" msgstr "Gestionnaire des infobulles" +#. module: web_field_tooltip +#: model:ir.model.fields,field_description:web_field_tooltip.field_res_users__tooltip_show_add_helper_allowed +msgid "Tooltip Show Add Helper Allowed" +msgstr "" + #. module: web_field_tooltip #: model:ir.model.fields,field_description:web_field_tooltip.field_ir_model_fields_tooltip__tooltip_text msgid "Tooltip Text" msgstr "Texte de l'Infobulle" #. module: web_field_tooltip -#: model:res.groups,name:web_field_tooltip.group_tooltip_user -msgid "Tooltip User" -msgstr "Utilisateur des infobulles" +#: model:ir.model,name:web_field_tooltip.model_res_users +msgid "Users" +msgstr "Utilisateurs" \ No newline at end of file diff --git a/web_field_tooltip/i18n/web_field_tooltip.pot b/web_field_tooltip/i18n/web_field_tooltip.pot index 30f83ba14..f48b5e7af 100644 --- a/web_field_tooltip/i18n/web_field_tooltip.pot +++ b/web_field_tooltip/i18n/web_field_tooltip.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0+e\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-06 07:59+0000\n" -"PO-Revision-Date: 2023-07-06 07:59+0000\n" +"POT-Creation-Date: 2023-08-01 08:32+0000\n" +"PO-Revision-Date: 2023-08-01 08:32+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -26,6 +26,13 @@ msgstr "" msgid "Active" msgstr "" +#. module: web_field_tooltip +#. openerp-web +#: code:addons/web_field_tooltip/static/src/js/web_field_tooltip.js:0 +#, python-format +msgid "Add a Tooltip" +msgstr "" + #. module: web_field_tooltip #: model_terms:ir.ui.view,arch_db:web_field_tooltip.ir_model_fields_tooltip_form_view #: model_terms:ir.ui.view,arch_db:web_field_tooltip.ir_model_fields_tooltip_search_view @@ -82,6 +89,11 @@ msgstr "" msgid "Fields Tooltips" msgstr "" +#. module: web_field_tooltip +#: model:ir.model,name:web_field_tooltip.model_ir_http +msgid "HTTP Routing" +msgstr "" + #. module: web_field_tooltip #: model:ir.model.fields,field_description:web_field_tooltip.field_ir_model_fields_tooltip__id msgid "ID" @@ -143,13 +155,13 @@ msgid "Set active to false to hide the Tooltip without removing it." msgstr "" #. module: web_field_tooltip -#: model:res.groups,comment:web_field_tooltip.group_tooltip_manager -msgid "The user will be able to manage all the tooltips." +#: model:ir.model.fields,field_description:web_field_tooltip.field_res_users__tooltip_show_add_helper +msgid "Show helper to add tooltips on fields" msgstr "" #. module: web_field_tooltip -#: model:res.groups,comment:web_field_tooltip.group_tooltip_user -msgid "The user will be able to manage his own tooltips." +#: model:res.groups,comment:web_field_tooltip.group_tooltip_manager +msgid "The user will be able to manage all the tooltips." msgstr "" #. module: web_field_tooltip @@ -157,12 +169,17 @@ msgstr "" msgid "Tooltip Manager" msgstr "" +#. module: web_field_tooltip +#: model:ir.model.fields,field_description:web_field_tooltip.field_res_users__tooltip_show_add_helper_allowed +msgid "Tooltip Show Add Helper Allowed" +msgstr "" + #. module: web_field_tooltip #: model:ir.model.fields,field_description:web_field_tooltip.field_ir_model_fields_tooltip__tooltip_text msgid "Tooltip Text" msgstr "" #. module: web_field_tooltip -#: model:res.groups,name:web_field_tooltip.group_tooltip_user -msgid "Tooltip User" -msgstr "" +#: model:ir.model,name:web_field_tooltip.model_res_users +msgid "Users" +msgstr "" \ No newline at end of file diff --git a/web_field_tooltip/models/__init__.py b/web_field_tooltip/models/__init__.py index 3f770ce85..99736d12e 100644 --- a/web_field_tooltip/models/__init__.py +++ b/web_field_tooltip/models/__init__.py @@ -1 +1,3 @@ +from . import ir_http from . import ir_model_fields_tooltip +from . import res_users diff --git a/web_field_tooltip/models/ir_http.py b/web_field_tooltip/models/ir_http.py new file mode 100644 index 000000000..b5c8f6d37 --- /dev/null +++ b/web_field_tooltip/models/ir_http.py @@ -0,0 +1,19 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class Http(models.AbstractModel): + _inherit = "ir.http" + + def session_info(self): + result = super().session_info() + user = self.env.user + result.update( + { + "can_manage_tooltips": user._is_tooltip_manager(), + "tooltip_show_add_helper": user.tooltip_show_add_helper, + } + ) + return result diff --git a/web_field_tooltip/models/ir_model_fields_tooltip.py b/web_field_tooltip/models/ir_model_fields_tooltip.py index fc595ed85..42e1bf8a3 100644 --- a/web_field_tooltip/models/ir_model_fields_tooltip.py +++ b/web_field_tooltip/models/ir_model_fields_tooltip.py @@ -31,12 +31,27 @@ class IrModelFieldsTooltip(models.Model): help="Set active to false to hide the Tooltip without removing it.", ) field_name = fields.Char(related="field_id.name") - tooltip_text = fields.Html(string="Tooltip Text") + tooltip_text = fields.Html(string="Tooltip Text", required=True) + + @api.model + def default_get(self, fields_list): + res = super().default_get(fields_list) + context = self.env.context + default_model = context.get("default_model") + default_field = context.get("default_field_name") + if default_model and default_field: + field = self.env["ir.model.fields"].search( + [("model_id.model", "=", default_model), ("name", "=", default_field)], + limit=1, + ) + res.update({"model_id": field.model_id.id, "field_id": field.id}) + return res @api.constrains("model_id", "field_id") def _check_duplicate_tooltip(self): + all_self = self.with_context(active_test=False) for rec in self: - if self.search( + if all_self.search( [ ("model_id", "=", rec.model_id.id), ("field_id", "=", rec.field_id.id), diff --git a/web_field_tooltip/models/res_users.py b/web_field_tooltip/models/res_users.py new file mode 100644 index 000000000..3b44b9c94 --- /dev/null +++ b/web_field_tooltip/models/res_users.py @@ -0,0 +1,31 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + +TOOLTIP_MANAGER_GROUP = "web_field_tooltip.group_tooltip_manager" + + +class ResUsers(models.Model): + _inherit = "res.users" + + tooltip_show_add_helper = fields.Boolean( + string="Show helper to add tooltips on fields", + ) + tooltip_show_add_helper_allowed = fields.Boolean( + compute="_compute_tooltip_show_add_helper_allowed" + ) + + def __init__(self, pool, cr): + super().__init__(pool, cr) + field_names = ["tooltip_show_add_helper"] + self.SELF_READABLE_FIELDS.extend(field_names) + self.SELF_WRITEABLE_FIELDS.extend(field_names) + + def _compute_tooltip_show_add_helper_allowed(self): + for rec in self: + rec.tooltip_show_add_helper_allowed = rec._is_tooltip_manager() + + def _is_tooltip_manager(self): + self.ensure_one() + return self.has_group(TOOLTIP_MANAGER_GROUP) diff --git a/web_field_tooltip/security/ir_model_access.xml b/web_field_tooltip/security/ir_model_access.xml index 0412c0969..df6dfbc0f 100644 --- a/web_field_tooltip/security/ir_model_access.xml +++ b/web_field_tooltip/security/ir_model_access.xml @@ -16,7 +16,7 @@ ir.model.fields.tooltip access user - + diff --git a/web_field_tooltip/security/ir_rule.xml b/web_field_tooltip/security/ir_rule.xml deleted file mode 100644 index ea5cdf58a..000000000 --- a/web_field_tooltip/security/ir_rule.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - All Tooltips - - [(1, '=', 1)] - - - - - Tooltips per user - - [('create_uid','=', user.id)] - - - - - Tooltips read access is for everyone - - [(1, '=', 1)] - - - - - - - diff --git a/web_field_tooltip/security/res_groups.xml b/web_field_tooltip/security/res_groups.xml index 009a46cd3..fc9b875be 100644 --- a/web_field_tooltip/security/res_groups.xml +++ b/web_field_tooltip/security/res_groups.xml @@ -3,20 +3,9 @@ License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> - - Tooltip User - - - The user will be able to manage his own tooltips. - - Tooltip Manager - The user will be able to manage all the tooltips. ", { + class: "fa fa fa-question-circle tooltip-icon text-info", + role: "button", + }); + + $after_elem.on("click", function(e) { + e.preventDefault(); + e.stopPropagation(); + self.do_action({ + type: "ir.actions.act_window", + name: _t("Add a Tooltip"), + res_model: "ir.model.fields.tooltip", + target: "new", + views: [[false, "form"]], + view_mode: "form", + context: { + default_model: self.state.model, + default_field_name: fieldName, + }, + }); + }); + const $sup = $("", { + class: "field-tooltip", + }); + $sup.append($after_elem); + return $sup; + }, + + get_tooltip_elem: function(fieldName, tooltip_title, tooltip) { + const self = this; + const $after_elem = $("