From b1d00a5e8a116cab997823d3623fe4d43402f95a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 19 May 2020 18:57:53 +0200 Subject: [PATCH] Add context to export URL issue9304 review317361002 --- CHANGELOG | 2 ++ src/sao.js | 1 + src/session.js | 31 ++++++++++++++++++++++++------- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 25e61daa8b..4193ae1568 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Keep context in sessionStorage +* Use existing context for get_preferences * Allow changes to editable tree checkboxes without first selecting the line Version 5.6.0 - 2020-05-04 diff --git a/src/sao.js b/src/sao.js index 14d542d71b..ec5ecab96a 100644 --- a/src/sao.js +++ b/src/sao.js @@ -594,6 +594,7 @@ var Sao = {}; jQuery('#user-logout').empty(); jQuery('#menu').empty(); new Sao.Window.Preferences(function() { + Sao.Session.current_session.reset_context(); Sao.get_preferences().then(function(preferences) { Sao.menu(preferences); Sao.user_menu(preferences); diff --git a/src/session.js b/src/session.js index 046ad57ad4..1dac1cc73b 100644 --- a/src/session.js +++ b/src/session.js @@ -17,9 +17,8 @@ this.database = database; this.login = login; this.restore(); - this.context = { - client: Sao.Bus.id, - }; + this.context = {}; + this.restore_context(); if (!Sao.Session.current_session) { Sao.Session.current_session = this; } @@ -82,16 +81,34 @@ reload_context: function() { var args = { 'method': 'model.res.user.get_preferences', - 'params': [true, {}] - }; - this.context = { - client: Sao.Bus.id, + 'params': [true, this.context] }; + this.reset_context(); var prm = Sao.rpc(args, this); return prm.then(function(context) { jQuery.extend(this.context, context); + this.store_context(); }.bind(this)); }, + reset_context: function() { + this.context = { + client: Sao.Bus.id, + }; + }, + restore_context: function() { + this.reset_context(); + var context = sessionStorage.getItem('sao_context_' + this.database); + if (context !== null) { + jQuery.extend( + this.context, Sao.rpc.convertJSONObject(JSON.parse(context))); + } + }, + store_context: function() { + var context = jQuery.extend({}, this.context); + delete context.client; + context = JSON.stringify(Sao.rpc.prepareObject(context)); + sessionStorage.setItem('sao_context_' + this.database, context); + }, restore: function() { if (this.database && !this.session) { var session_data = localStorage.getItem(