diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 342f9efc6cf..36ea829a2f9 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -98,6 +98,13 @@ class Session(openerpweb.Controller): "session_id": req.session_id, "uid": req.session._uid, } + + @openerpweb.jsonrequest + def get_databases_list(self, req): + proxy = req.session.proxy("db") + dbs = proxy.list() + + return {"db_list": dbs} @openerpweb.jsonrequest def modules(self, req): diff --git a/addons/base/static/src/css/base.css b/addons/base/static/src/css/base.css index 7cdf9af0286..fff41c0f557 100644 --- a/addons/base/static/src/css/base.css +++ b/addons/base/static/src/css/base.css @@ -90,7 +90,8 @@ body.openerp { padding: 3px; text-align: right; } -.openerp .login .oe_box2 td input { +.openerp .login .oe_box2 td input, +.openerp .login .oe_box2 td select { width: 100%; } .openerp .login .oe_login_right_pane { diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 2acb66c7ada..6fa95266ba9 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -778,26 +778,29 @@ openerp.base.Login = openerp.base.Controller.extend({ this._super(session, element_id); }, start: function() { - this.$element.html(QWeb.render("Login", {})); - this.$element.find("form").submit(this.on_submit); + var self = this; + this.rpc("/base/session/get_databases_list", {}, function(result) { + self.db_list = result.db_list; + self.display(); + }, function() { + self.display(); + }); }, + display: function() { + this.$element.html(QWeb.render("Login", this)); + this.$element.find("form").submit(this.on_submit); + }, on_login_invalid: function() { - this.$element - .removeClass("login_valid") - .addClass("login_invalid"); this.$element.closest(".openerp").addClass("login-mode"); }, on_login_valid: function() { - this.$element - .removeClass("login_invalid") - .addClass("login_valid"); this.$element.closest(".openerp").removeClass("login-mode"); }, on_submit: function(ev) { ev.preventDefault(); var self = this; var $e = this.$element; - var db = $e.find("form input[name=db]").val(); + var db = $e.find("form [name=db]").val(); var login = $e.find("form input[name=login]").val(); var password = $e.find("form input[name=password]").val(); //$e.hide(); @@ -806,12 +809,15 @@ openerp.base.Login = openerp.base.Controller.extend({ if(self.session.session_is_valid()) { self.on_login_valid(); } else { + self.$element.addClass("login_invalid"); self.on_login_invalid(); } }); }, do_ask_login: function(continuation) { this.on_login_invalid(); + this.$element + .removeClass("login_invalid"); this.on_login_valid.add({ position: "last", unique: true, diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index ca0a0ff7205..afbd4f81d91 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -61,7 +61,16 @@