You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
6.6 KiB
170 lines
6.6 KiB
/*
|
|
|
|
Copyright (C) 2012-2015 Therp BV
|
|
License: GNU AFFERO GENERAL PUBLIC LICENSE
|
|
Version 3 or any later version
|
|
|
|
Usage: if you run an OpenERP support company and you support
|
|
customers without an OPW, you can brand the OpenERP instance
|
|
accordingly using this module. Please enter the two variables
|
|
in the code below, 'support_name' and 'support_link'. They will
|
|
replace the unfriendly message about the OpenERP instance not
|
|
being supported.
|
|
|
|
*/
|
|
|
|
openerp.support_branding = function(instance) {
|
|
var QWeb = instance.web.qweb,
|
|
_t = instance.web._t;
|
|
|
|
instance.web.Session.include({
|
|
session_authenticate: function()
|
|
{
|
|
var self = this;
|
|
return this._super.apply(this, arguments)
|
|
.then(function()
|
|
{
|
|
return self.setup_branding()
|
|
});
|
|
},
|
|
session_init: function()
|
|
{
|
|
var self = this;
|
|
return this._super.apply(this, arguments)
|
|
.then(function()
|
|
{
|
|
return self.setup_branding()
|
|
});
|
|
},
|
|
setup_branding: function()
|
|
{
|
|
var self = this,
|
|
ir_config_parameter = new instance.web.Model('ir.config_parameter');
|
|
if(!self.uid)
|
|
{
|
|
return jQuery.when();
|
|
};
|
|
return (new instance.web.Model('ir.config_parameter'))
|
|
.query(['key', 'value'])
|
|
.filter([
|
|
[
|
|
'key', 'in', [
|
|
'support_branding.support_email',
|
|
'support_branding.company_name',
|
|
'support_branding.company_color',
|
|
'support_branding.company_url',
|
|
'support_branding.release',
|
|
],
|
|
]
|
|
])
|
|
.all()
|
|
.then(function(branding_values)
|
|
{
|
|
_.each(branding_values, function(record)
|
|
{
|
|
self[record.key.replace('.', '_')] = record.value;
|
|
});
|
|
});
|
|
},
|
|
});
|
|
|
|
instance.web.CrashManager.include({
|
|
show_error: function(error)
|
|
{
|
|
this._super.apply(this, arguments);
|
|
jQuery('.support-branding-submit-form').each(function()
|
|
{
|
|
var $form = jQuery(this),
|
|
$button = $form.find('button'),
|
|
$description = $form.find('textarea[name="description"]'),
|
|
$subject = $form.find('input[name="subject"]'),
|
|
$body = $form.find('input[name="body"]');
|
|
if(instance.client.session.support_branding_support_email)
|
|
{
|
|
$form.attr(
|
|
'action',
|
|
'mailto:' + instance.client.session.support_branding_support_email);
|
|
$form.parents('.ui-dialog').find('.ui-dialog-content')
|
|
.css('max-height', '70vh');
|
|
$button.click(function(ev)
|
|
{
|
|
var mail_mail = new instance.web.Model('mail.mail');
|
|
if(!$description.val())
|
|
{
|
|
$description.parent().addClass('oe_form_invalid');
|
|
ev.preventDefault();
|
|
return;
|
|
}
|
|
mail_mail.call(
|
|
'create',
|
|
[{
|
|
state: 'outgoing',
|
|
auto_delete: false,
|
|
email_to: instance.client.session.support_branding_support_email,
|
|
subject: $subject.val(),
|
|
body_html: jQuery('<div/>').append(
|
|
jQuery('<div/>').text($description.val()),
|
|
jQuery('<pre/>').text($body.val())
|
|
).html(),
|
|
}])
|
|
.then(function(mail_id)
|
|
{
|
|
return mail_mail.call('send', [[mail_id]]);
|
|
}, function()
|
|
{
|
|
// if the call failed, fire the mailto link
|
|
// hoping there is a properly configured email
|
|
// client
|
|
$body.val($description.val() + '\n' + $body.val())
|
|
$button.unbind('click');
|
|
$button.click();
|
|
})
|
|
.then(function()
|
|
{
|
|
$form.parents('.ui-dialog').dialog().dialog("close");
|
|
$('.ui-widget-overlay').hide()
|
|
});
|
|
ev.preventDefault();
|
|
});
|
|
}
|
|
else
|
|
{
|
|
$description.hide();
|
|
$button.hide();
|
|
}
|
|
if(instance.client.session.support_branding_company_name)
|
|
{
|
|
$button.text(
|
|
_.str.sprintf(
|
|
instance.web._t('Email to %s'),
|
|
instance.client.session.support_branding_company_name));
|
|
}
|
|
$form.prependTo(
|
|
$form.parents('.ui-dialog').find('.ui-dialog-buttonpane'));
|
|
});
|
|
}
|
|
});
|
|
|
|
instance.web.WebClient.include({
|
|
show_application: function()
|
|
{
|
|
var self = this;
|
|
return jQuery.when(this._super(this, arguments))
|
|
.then(function()
|
|
{
|
|
var $link = self.$el.find('.support_branding_link');
|
|
var text = instance.client.session.support_branding_company_name
|
|
$link.text(instance.client.session.support_branding_company_name);
|
|
$link.css('color', instance.client.session.support_branding_company_color);
|
|
$link.attr('href', instance.client.session.support_branding_company_url);
|
|
if(instance.client.session.support_branding_release)
|
|
{
|
|
var $release = self.$el.find('.support_branding_release');
|
|
$release.text(
|
|
instance.web._t("Version") + " "
|
|
+ instance.client.session.support_branding_release);
|
|
}
|
|
});
|
|
},
|
|
});
|
|
};
|