[FIX] auth_openid: properly inherit Login.start and return a `deferred`

bzr revid: odo@openerp.com-20121122142942-jz8chz5xtf2lj7t4
This commit is contained in:
Olivier Dony 2012-11-22 15:29:42 +01:00
parent f50f0bd089
commit f3955000e7
1 changed files with 34 additions and 32 deletions

View File

@ -5,34 +5,34 @@ var QWeb = instance.web.qweb;
instance.web.Login = instance.web.Login.extend({ instance.web.Login = instance.web.Login.extend({
start: function() { start: function() {
this._super.apply(this, arguments);
var self = this; var self = this;
var d = self._super.apply(this, arguments).done(function() {
this._default_error_message = this.$el.find('.oe_login_error_message').text(); self._default_error_message = self.$el.find('.oe_login_error_message').text();
this.$openid_selected_button = $(); self.$openid_selected_button = $();
this.$openid_selected_input = $(); self.$openid_selected_input = $();
this.$openid_selected_provider = null; self.$openid_selected_provider = null;
var openIdProvider = null; var openIdProvider = null;
if (this.has_local_storage && this.remember_credentials) { if (self.has_local_storage && self.remember_credentials) {
openIdProvider = localStorage.getItem('openid-provider'); openIdProvider = localStorage.getItem('openid-provider');
} }
if (openIdProvider) { if (openIdProvider) {
$openid_selected_provider = openIdProvider; $openid_selected_provider = openIdProvider;
this.do_openid_select('a[href="#' + openIdProvider + '"]', openIdProvider, true); self.do_openid_select('a[href="#' + openIdProvider + '"]', openIdProvider, true);
if (this.has_local_storage && this.remember_credentials) { if (self.has_local_storage && self.remember_credentials) {
this.$openid_selected_input.find('input').val(localStorage.getItem('openid-login')); self.$openid_selected_input.find('input').val(localStorage.getItem('openid-login'));
} }
} }
else { else {
this.do_openid_select('a[data-url=""]', 'login,password', true); self.do_openid_select('a[data-url=""]', 'login,password', true);
} }
this.$el.find('a[data-url]').click(function (event) { self.$el.find('a[data-url]').click(function (event) {
event.preventDefault(); event.preventDefault();
var selected_oidh = $(this).attr('href').substr(1); var selected_oidh = $(this).attr('href').substr(1);
if (selected_oidh != self.$openid_selected_provider) { if (selected_oidh != self.$openid_selected_provider) {
@ -40,7 +40,9 @@ instance.web.Login = instance.web.Login.extend({
} }
}); });
this._check_error(); self._check_error();
});
return d;
}, },