3
0
Fork 0

[MIG] web_ir_actions_act_window_message

13.0
Thomas Binsfeld 2020-06-15 15:20:17 +02:00
parent e288227937
commit e776140f15
6 changed files with 61 additions and 62 deletions

View File

@ -0,0 +1 @@
../../../../web_ir_actions_act_window_message

View File

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@ -2,20 +2,12 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Client side message boxes",
"version": "12.0.1.0.0",
"author": "Therp BV, "
"ACSONE SA/NV, "
"Odoo Community Association (OCA)",
"version": "13.0.1.0.0",
"author": "Therp BV, " "ACSONE SA/NV, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Hidden/Dependency",
"summary": "Show a message box to users",
"depends": [
'web',
],
"data": [
'views/templates.xml',
],
"qweb": [
'static/src/xml/web_ir_actions_act_window_message.xml',
],
"depends": ["web"],
"data": ["views/templates.xml"],
"qweb": ["static/src/xml/web_ir_actions_act_window_message.xml"],
}

View File

@ -1,42 +1,38 @@
/* Copyright 2017 Therp BV, ACSONE SA/NV
* * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define('web.web_ir_actions_act_window_message', function(require)
{
odoo.define("web.web_ir_actions_act_window_message", function(require) {
"use strict";
var ActionManager = require('web.ActionManager'),
core = require('web.core'),
Dialog = require('web.Dialog');
var ActionManager = require("web.ActionManager"),
core = require("web.core"),
Dialog = require("web.Dialog");
var _t = core._t;
ActionManager.include({
_handleAction: function (action, options) {
if (action.type === 'ir.actions.act_window.message') {
_handleAction: function(action, options) {
if (action.type === "ir.actions.act_window.message") {
return this._executeWindowMessageAction(action, options);
}
return this._super.apply(this, arguments);
},
_executeWindowMessageAction: function(action, options)
{
_executeWindowMessageAction: function(action, options) {
var self = this,
buttons = [];
if(action.close_button_title !== false)
{
if (action.close_button_title !== false) {
buttons.push({
text: action.close_button_title || _t('Close'),
text: action.close_button_title || _t("Close"),
click: function() {
// refresh the view before closing the dialog
// Refresh the view before closing the dialog
var controller = self.getCurrentController();
if (controller && controller.widget) {
controller.widget.reload();
}
dialog.close()
},
classes: 'btn-default',
})
classes: "btn-default",
});
}
var is_html = action.is_html_message === true;
@ -50,8 +46,8 @@ odoo.define('web.web_ir_actions_act_window_message', function(require)
content_properties = {
text: action.message,
css: {
'white-space': 'pre-line',
}
"white-space": "pre-line",
},
};
}
@ -59,56 +55,54 @@ odoo.define('web.web_ir_actions_act_window_message', function(require)
this,
_.extend(
{
size: 'medium',
size: "medium",
title: action.title,
$content: $('<div>', content_properties),
$content: $("<div>", content_properties),
buttons: buttons.concat(
this.ir_actions_act_window_message_get_buttons(
action, function() { dialog.close() })
action,
function() {
dialog.close();
}
)
),
},
options)
)
options
)
);
return dialog.open()._opened;
},
ir_actions_act_window_message_get_buttons: function(action, close_func)
{
// return an array of button definitions from action
ir_actions_act_window_message_get_buttons: function(action, close_func) {
// Return an array of button definitions from action
var self = this;
return _.map(action.buttons || [], function(button_definition)
{
return _.map(action.buttons || [], function(button_definition) {
return {
text: button_definition.name || 'No name set',
classes: button_definition.classes || 'btn-default',
text: button_definition.name || "No name set",
classes: button_definition.classes || "btn-default",
click: function() {
if(button_definition.type == 'method')
{
if (button_definition.type == "method") {
self._rpc({
model: button_definition.model,
method: button_definition.method,
args: button_definition.args,
kwargs: button_definition.kwargs
}).then(function(result)
{
if(_.isObject(result))
{
kwargs: button_definition.kwargs,
}).then(function(result) {
if (_.isObject(result)) {
self.do_action(result);
}
// always refresh the view after the action
// Always refresh the view after the action
// ex: action updates a status
var controller = self.getCurrentController();
if (controller && controller.widget) {
controller.widget.reload();
}
});
}
else
{
} else {
self.do_action(button_definition);
}
close_func();
},
}
};
});
},
});

View File

@ -1,5 +1,7 @@
<templates>
<div t-name="web_ir_actions_act_window_message">
<div><t t-esc="action.message" /></div>
<div>
<t t-esc="action.message" />
</div>
</div>
</templates>

View File

@ -1,13 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Therp BV, ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<template id="assets_backend" name="web_ir_actions_act_window_message assets" inherit_id="web.assets_backend">
<template
id="assets_backend"
name="web_ir_actions_act_window_message assets"
inherit_id="web.assets_backend"
>
<xpath expr="." position="inside">
<script type="text/javascript" src="/web_ir_actions_act_window_message/static/src/js/web_ir_actions_act_window_message.js"></script>
<script
type="text/javascript"
src="/web_ir_actions_act_window_message/static/src/js/web_ir_actions_act_window_message.js"
/>
</xpath>
</template>
</odoo>