2018-01-16 11:34:37 +01:00
|
|
|
flectra.define('web.upgrade_widgets', function (require) {
|
2018-01-16 06:58:15 +01:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The upgrade widgets are intended to be used in config settings.
|
|
|
|
* When checked, an upgrade popup is showed to the user.
|
|
|
|
*/
|
|
|
|
|
|
|
|
var AbstractField = require('web.AbstractField');
|
|
|
|
var basic_fields = require('web.basic_fields');
|
|
|
|
var core = require('web.core');
|
|
|
|
var Dialog = require('web.Dialog');
|
|
|
|
var field_registry = require('web.field_registry');
|
|
|
|
var framework = require('web.framework');
|
|
|
|
var relational_fields = require('web.relational_fields');
|
|
|
|
|
|
|
|
var _t = core._t;
|
|
|
|
var QWeb = core.qweb;
|
|
|
|
|
|
|
|
var FieldBoolean = basic_fields.FieldBoolean;
|
|
|
|
var FieldRadio = relational_fields.FieldRadio;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Mixin that defines the common functions shared between Boolean and Radio
|
|
|
|
* upgrade widgets
|
|
|
|
*/
|
|
|
|
var AbstractFieldUpgrade = {
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
// Private
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/**
|
2018-01-16 11:34:37 +01:00
|
|
|
* Redirects the user to the flectra-enterprise/uprade page
|
2018-01-16 06:58:15 +01:00
|
|
|
*
|
|
|
|
* @private
|
|
|
|
* @returns {Deferred}
|
|
|
|
*/
|
|
|
|
_confirmUpgrade: function () {
|
|
|
|
return this._rpc({
|
|
|
|
model: 'res.users',
|
|
|
|
method: 'search_count',
|
|
|
|
args: [[["share", "=", false]]],
|
|
|
|
})
|
|
|
|
.then(function (data) {
|
2018-01-16 11:34:37 +01:00
|
|
|
framework.redirect("https://www.flectra.com/flectra-enterprise/upgrade?num_users=" + data);
|
2018-01-16 06:58:15 +01:00
|
|
|
});
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* This function is meant to be overriden to insert the 'Enterprise' label
|
|
|
|
* JQuery node at the right place.
|
|
|
|
*
|
|
|
|
* @abstract
|
|
|
|
* @private
|
|
|
|
* @param {jQuery} $enterpriseLabel the 'Enterprise' label to insert
|
|
|
|
*/
|
|
|
|
_insertEnterpriseLabel: function ($enterpriseLabel) {},
|
|
|
|
/**
|
|
|
|
* Opens the Upgrade dialog.
|
|
|
|
*
|
|
|
|
* @private
|
|
|
|
* @returns {Dialog} the instance of the opened Dialog
|
|
|
|
*/
|
|
|
|
_openDialog: function () {
|
|
|
|
var message = $(QWeb.render('EnterpriseUpgrade'));
|
|
|
|
|
|
|
|
var buttons = [
|
|
|
|
{
|
|
|
|
text: _t("Upgrade now"),
|
|
|
|
classes: 'btn-primary',
|
|
|
|
close: true,
|
|
|
|
click: this._confirmUpgrade.bind(this),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
text: _t("Cancel"),
|
|
|
|
close: true,
|
|
|
|
},
|
|
|
|
];
|
|
|
|
|
|
|
|
return new Dialog(this, {
|
|
|
|
size: 'medium',
|
|
|
|
buttons: buttons,
|
|
|
|
$content: $('<div>', {
|
|
|
|
html: message,
|
|
|
|
}),
|
2018-01-16 11:34:37 +01:00
|
|
|
title: _t("Flectra Enterprise"),
|
2018-01-16 06:58:15 +01:00
|
|
|
}).open();
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* @override
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_render: function () {
|
|
|
|
this._super.apply(this, arguments);
|
|
|
|
this._insertEnterpriseLabel($("<span>", {
|
|
|
|
text: "Enterprise",
|
|
|
|
'class': "label label-primary oe_inline o_enterprise_label"
|
|
|
|
}));
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* This function is meant to be overriden to reset the $el to its initial
|
|
|
|
* state.
|
|
|
|
*
|
|
|
|
* @abstract
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_resetValue: function () {},
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
// Handlers
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @private
|
|
|
|
* @param {MouseEvent} event
|
|
|
|
*/
|
|
|
|
_onInputClicked: function (event) {
|
|
|
|
if ($(event.currentTarget).prop("checked")) {
|
|
|
|
this._openDialog().on('closed', this, this._resetValue.bind(this));
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
var UpgradeBoolean = FieldBoolean.extend(AbstractFieldUpgrade, {
|
|
|
|
supportedFieldTypes: [],
|
|
|
|
events: _.extend({}, AbstractField.prototype.events, {
|
|
|
|
'click input': '_onInputClicked',
|
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* Re-renders the widget with the label
|
|
|
|
*
|
|
|
|
* @param {jQuery} $label
|
|
|
|
*/
|
|
|
|
renderWithLabel: function ($label) {
|
|
|
|
this.$label = $label;
|
|
|
|
this._render();
|
|
|
|
},
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
// Private
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @override
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_insertEnterpriseLabel: function ($enterpriseLabel) {
|
|
|
|
var $el = this.$label || this.$el;
|
|
|
|
$el.append(' ').append($enterpriseLabel);
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* @override
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_resetValue: function () {
|
|
|
|
this.$input.prop("checked", false).change();
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
var UpgradeRadio = FieldRadio.extend(AbstractFieldUpgrade, {
|
|
|
|
supportedFieldTypes: [],
|
|
|
|
events: _.extend({}, FieldRadio.prototype.events, {
|
|
|
|
'click input:last': '_onInputClicked',
|
|
|
|
}),
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
// Public
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
|
|
isSet: function () {
|
|
|
|
return true;
|
|
|
|
},
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
// Private
|
|
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @override
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_insertEnterpriseLabel: function ($enterpriseLabel) {
|
|
|
|
this.$('label').last().append(' ').append($enterpriseLabel);
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* @override
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_resetValue: function () {
|
|
|
|
this.$('input').first().prop("checked", true).click();
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
field_registry
|
|
|
|
.add('upgrade_boolean', UpgradeBoolean)
|
|
|
|
.add('upgrade_radio', UpgradeRadio);
|
|
|
|
|
|
|
|
});
|