From 0a4a4e799aba0606d00cdb3be44abdae788c01bd Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 6 Jun 2011 11:04:54 +0200 Subject: [PATCH] [imp] implemented logout + improved login design bzr revid: nicolas.vanhoren@openerp.com-20110606090454-b2t5wun7vgcj5qb6 --- addons/base/static/src/css/base.css | 17 +++++++++-------- addons/base/static/src/js/chrome.js | 23 ++++++++++++++++++----- addons/base/static/src/xml/base.xml | 6 +++++- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/addons/base/static/src/css/base.css b/addons/base/static/src/css/base.css index d9042e7e251..f65a9be5253 100644 --- a/addons/base/static/src/css/base.css +++ b/addons/base/static/src/css/base.css @@ -61,19 +61,20 @@ body.openerp { /* Login */ .openerp .login { display: none; - padding: 6px; - z-index: 1002; - width: 34%; - position: fixed; - top: 0; - left: 33%; } .openerp .login_valid { - background-color: #8f8; } .openerp .login_invalid { - background-color: #f88; +} + +.openerp.login-mode .login { + display: block; +} +.openerp.login-mode #oe_menu, +.openerp.login-mode #oe_secondary_menu, +.openerp.login-mode #oe_app { + display: none; } /* Main*/ diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 86549eca001..cefa4c89c84 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -441,6 +441,13 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b this.set_cookie('uid', this.uid); this.set_cookie('session_id', this.session_id); }, + logout: function() { + this.uid = this.get_cookie('uid'); + this.session_id = this.get_cookie('session_id'); + this.set_cookie('uid', false); + this.set_cookie('session_id', false); + this.on_session_invalid(function() {}); + }, /** * Fetches a cookie stored by an openerp session * @@ -777,14 +784,14 @@ openerp.base.Login = openerp.base.Controller.extend({ on_login_invalid: function() { this.$element .removeClass("login_valid") - .addClass("login_invalid") - .show(); + .addClass("login_invalid"); + this.$element.closest(".openerp").addClass("login-mode"); }, on_login_valid: function() { this.$element .removeClass("login_invalid") - .addClass("login_valid") - .hide(); + .addClass("login_valid"); + this.$element.closest(".openerp").removeClass("login-mode"); }, on_submit: function(ev) { ev.preventDefault(); @@ -810,6 +817,9 @@ openerp.base.Login = openerp.base.Controller.extend({ unique: true, callback: continuation }); + }, + on_logout: function() { + this.session.logout(); } }); @@ -822,7 +832,9 @@ openerp.base.Header = openerp.base.Controller.extend({ }, do_update: function() { this.$element.html(QWeb.render("Header", this)); - } + this.$element.find(".logout").click(this.on_logout); + }, + on_logout: function() {} }); openerp.base.Menu = openerp.base.Controller.extend({ @@ -937,6 +949,7 @@ openerp.base.WebClient = openerp.base.Controller.extend({ this.header = new openerp.base.Header(this.session, "oe_header"); this.login = new openerp.base.Login(this.session, "oe_login"); + this.header.on_logout.add(this.login.on_logout); this.session.on_session_invalid.add(this.login.do_ask_login); this.session.on_session_valid.add_last(this.header.do_update); diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index b8412aa1b19..3a8e5128f6f 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -17,7 +17,6 @@

#{text}

-
+ + +
@@ -34,6 +33,11 @@
+ +