summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorAntony Lesuisse <al@openerp.com>2013-03-13 00:03:44 +0100
committerAntony Lesuisse <al@openerp.com>2013-03-13 00:03:44 +0100
commitcb9106d99f62852f66e1857b8b2fd3f4bceb3c57 (patch)
tree81d35520c6c5bd846c3f07b01bd75ceb512b8403 /addons/web/static/src
parente35e1990641077eaa3ea0b5e164278918d515547 (diff)
parentb18bca920b405b59f6189d1b1321e550bef1828b (diff)
[FIX] IE9 db creation, better monodb
bzr revid: al@openerp.com-20130312230344-uasy5dx2e8n5ytlr
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/chrome.js95
-rw-r--r--addons/web/static/src/js/coresetup.js4
-rw-r--r--addons/web/static/src/xml/base.xml4
3 files changed, 73 insertions, 30 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index 5d0946206a6..09ac02e326f 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -478,7 +478,16 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
'login': 'admin',
'password': form_obj['create_admin_pwd'],
'login_successful': function() {
- self.do_action("reload");
+ var action = {
+ type: "ir.actions.client",
+ tag: 'reload',
+ params: {
+ url_search : {
+ db: form_obj['db_name'],
+ },
+ }
+ };
+ self.do_action(action);
},
},
_push_me: false,
@@ -589,6 +598,11 @@ instance.web.client_actions.add("database_manager", "instance.web.DatabaseManage
instance.web.Login = instance.web.Widget.extend({
template: "Login",
remember_credentials: true,
+ events: {
+ 'change input[name=db],select[name=db]': function(ev) {
+ this.set('database_selector', $(ev.currentTarget).val());
+ },
+ },
init: function(parent, action) {
this._super(parent);
@@ -600,18 +614,18 @@ instance.web.Login = instance.web.Widget.extend({
if (_.isEmpty(this.params)) {
this.params = $.bbq.getState(true);
}
+ if (action && action.params && action.params.db) {
+ this.params.db = action.params.db;
+ } else if ($.deparam.querystring().db) {
+ this.params.db = $.deparam.querystring().db;
+ }
+ if (this.params.db) {
+ this.selected_db = this.params.db;
+ }
if (this.params.login_successful) {
this.on('login_successful', this, this.params.login_successful);
}
-
- if (this.has_local_storage && this.remember_credentials) {
- this.selected_db = localStorage.getItem('last_db_login_success');
- this.selected_login = localStorage.getItem('last_login_login_success');
- if (jQuery.deparam(jQuery.param.querystring()).debug !== undefined) {
- this.selected_password = localStorage.getItem('last_password_login_success');
- }
- }
},
start: function() {
var self = this;
@@ -619,10 +633,10 @@ instance.web.Login = instance.web.Widget.extend({
self.$el.find('.oe_login_manage_db').click(function() {
self.do_action("database_manager");
});
+ self.on('change:database_selector', this, function() {
+ this.database_selected(this.get('database_selector'));
+ });
var d = $.when();
- if ($.deparam.querystring().db) {
- self.params.db = $.deparam.querystring().db;
- }
if ($.param.fragment().token) {
self.params.token = $.param.fragment().token;
}
@@ -630,16 +644,44 @@ instance.web.Login = instance.web.Widget.extend({
if (self.params.db && self.params.login && self.params.password) {
d = self.do_login(self.params.db, self.params.login, self.params.password);
} else {
- if (self.params.db) {
- self.on_db_loaded([self.params.db])
- } else {
- d = self.rpc("/web/database/get_list", {}).done(self.on_db_loaded).fail(self.on_db_failed);
- }
+ d = self.rpc("/web/database/get_list", {})
+ .done(self.on_db_loaded)
+ .fail(self.on_db_failed)
+ .always(function() {
+ if (self.selected_db && self.has_local_storage && self.remember_credentials) {
+ self.$("[name=login]").val(localStorage.getItem(self.selected_db + '|last_login') || '');
+ if (self.session.debug) {
+ self.$("[name=password]").val(localStorage.getItem(self.selected_db + '|last_password') || '');
+ }
+ }
+ });
}
return d;
},
+ remember_last_used_database: function(db) {
+ // This cookie will be used server side in order to avoid db reloading on first visit
+ var ttl = 24 * 60 * 60 * 365;
+ document.cookie = [
+ 'last_used_database=' + db,
+ 'path=/',
+ 'max-age=' + ttl,
+ 'expires=' + new Date(new Date().getTime() + ttl * 1000).toGMTString()
+ ].join(';');
+ },
+ database_selected: function(db) {
+ var params = $.deparam.querystring();
+ params.db = db;
+ this.remember_last_used_database(db);
+ this.$('.oe_login_dbpane').empty().text(_t('Loading...'));
+ this.$('[name=login], [name=password]').prop('readonly', true);
+ instance.web.redirect('/?' + $.param(params));
+ },
on_db_loaded: function (result) {
+ var self = this;
this.db_list = result;
+ if (!this.selected_db) {
+ this.selected_db = result[0];
+ }
this.$("[name=db]").replaceWith(QWeb.render('Login.dblist', { db_list: this.db_list, selected_db: this.selected_db}));
if(this.db_list.length === 0) {
this.do_action("database_manager");
@@ -680,17 +722,11 @@ instance.web.Login = instance.web.Widget.extend({
self.hide_error();
self.$(".oe_login_pane").fadeOut("slow");
return this.session.session_authenticate(db, login, password).then(function() {
- if (self.has_local_storage) {
- if(self.remember_credentials) {
- localStorage.setItem('last_db_login_success', db);
- localStorage.setItem('last_login_login_success', login);
- if (jQuery.deparam(jQuery.param.querystring()).debug !== undefined) {
- localStorage.setItem('last_password_login_success', password);
- }
- } else {
- localStorage.setItem('last_db_login_success', '');
- localStorage.setItem('last_login_login_success', '');
- localStorage.setItem('last_password_login_success', '');
+ self.remember_last_used_database(db);
+ if (self.has_local_storage && self.remember_credentials) {
+ localStorage.setItem(db + '|last_login', login);
+ if (self.session.debug) {
+ localStorage.setItem(db + '|last_password', password);
}
}
self.trigger('login_successful');
@@ -748,6 +784,9 @@ instance.web.Reload = function(parent, action) {
var sobj = $.deparam(l.search.substr(1));
sobj.ts = new Date().getTime();
+ if (params.url_search) {
+ sobj = _.extend(sobj, params.url_search);
+ }
var search = '?' + $.param(sobj);
var hash = l.hash;
diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js
index 43d292b66db..dedb4a49710 100644
--- a/addons/web/static/src/js/coresetup.js
+++ b/addons/web/static/src/js/coresetup.js
@@ -89,6 +89,10 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess
});
},
session_is_valid: function() {
+ var db = $.deparam.querystring().db;
+ if (db && this.db !== db) {
+ return false;
+ }
return !!this.uid;
},
/**
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 98977e74fad..809e7d2bcb1 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -71,9 +71,9 @@
</div>
<ul>
<li>Username</li>
- <li><input name="login" type="text" t-att-value="widget.selected_login || ''" autofocus="autofocus"/></li>
+ <li><input name="login" type="text" value="" autofocus="autofocus"/></li>
<li>Password</li>
- <li><input name="password" type="password" t-att-value="widget.selected_password || ''"/></li>
+ <li><input name="password" type="password" value=""/></li>
<li><button name="submit">Log in</button></li>
</ul>
</form>