summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2011-09-06 11:50:54 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2011-09-06 11:50:54 +0200
commitf7544bb989ffc0b9bb3d19fc86b44a6a1086e0ee (patch)
treeddad548306d76c0c7e654c8c4fca47eb7cea6374 /addons/web/static/src/js
parentbaed408025a5c4dedf1eac52d2cf78063da78e71 (diff)
parent71cb3b3bc38bcf4f69398138c8193f0fde5d213e (diff)
[imp] lot of improvements to header & about page
bzr revid: nicolas.vanhoren@openerp.com-20110906095054-qjlpmyd83spjm79b
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/chrome.js39
-rw-r--r--addons/web/static/src/js/core.js11
-rw-r--r--addons/web/static/src/js/data.js44
3 files changed, 78 insertions, 16 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index fb4104770f5..9d0f097b6eb 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -438,9 +438,9 @@ openerp.web.Login = openerp.web.Widget.extend({
if (this.has_local_storage && this.remember_creditentials) {
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 = this.selected_password || "a";
+ if (jQuery.deparam(jQuery.param.querystring()).debug != undefined) {
+ this.selected_password = localStorage.getItem('last_password_login_success');
+ }
}
},
start: function() {
@@ -454,7 +454,7 @@ openerp.web.Login = openerp.web.Widget.extend({
},
display: function() {
var self = this;
-
+
this.$element.html(QWeb.render("Login", this));
this.database = new openerp.web.Database(
this, "oe_database", "oe_db_options");
@@ -495,9 +495,13 @@ openerp.web.Login = openerp.web.Widget.extend({
if(self.remember_creditentials) {
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.on_login_valid();
@@ -514,7 +518,7 @@ openerp.web.Login = openerp.web.Widget.extend({
this.on_login_valid.add({
position: "last",
unique: true,
- callback: continuation
+ callback: continuation || function() {}
});
},
on_logout: function() {
@@ -534,11 +538,24 @@ openerp.web.Header = openerp.web.Widget.extend({
this._super();
},
do_update: function () {
- this.$content = $(QWeb.render("Header-content", {widget: this}));
- this.$content.appendTo(this.$element);
- this.$element.find(".logout").click(this.on_logout);
- this.$element.find("a.preferences").click(this.on_preferences);
- return this.shortcut_load();
+ var self = this;
+ var func = new openerp.web.Model(self.session, "res.users").get_func("read");
+ func(self.session.uid, ["name", "company_id"]).then(function(res) {
+ self.$content = $(QWeb.render("Header-content", {widget: self, user: res}));
+ self.$content.appendTo(self.$element);
+ self.$element.find(".logout").click(self.on_logout);
+ self.$element.find("a.preferences").click(self.on_preferences);
+ self.$element.find(".about").click(self.on_about);
+ self.shortcut_load();
+ });
+ },
+ on_about: function() {
+ var self = this;
+ self.rpc("/web/webclient/version_info", {}).then(function(res) {
+ var $help = $(QWeb.render("About-Page", {version_info: res}));
+ $help.dialog({autoOpen: true,
+ modal: true, width: 960, title: "About"});
+ });
},
do_reset: function() {
this.$content.remove();
@@ -676,7 +693,7 @@ openerp.web.Header = openerp.web.Widget.extend({
});
}
});
-},
+ },
display_error: function (error) {
return $('<div>').dialog({
modal: true,
diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js
index 4acc8ec15c3..d826ff34a43 100644
--- a/addons/web/static/src/js/core.js
+++ b/addons/web/static/src/js/core.js
@@ -346,7 +346,6 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web
this.context = {};
this.shortcuts = [];
this.active_id = null;
- this.session = this;
},
start: function() {
this.session_restore();
@@ -471,9 +470,8 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web
self.user_context = result.context;
self.session_save();
self.on_session_valid();
- if (success_callback)
- success_callback();
- });
+ return true;
+ }).then(success_callback);
},
session_logout: function() {
this.uid = false;
@@ -489,7 +487,10 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web
this.user_context = this.get_cookie("user_context");
// we should do an rpc to confirm that this session_id is valid and if it is retrieve the information about db and login
// then call on_session_valid
- this.on_session_valid();
+ if (this.uid)
+ this.on_session_valid();
+ else
+ this.on_session_invalid();
},
/**
* Saves the session id and uid locally
diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js
index 3797121756f..4b4523a2723 100644
--- a/addons/web/static/src/js/data.js
+++ b/addons/web/static/src/js/data.js
@@ -737,6 +737,50 @@ openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({
on_unlink: function(ids) {}
});
+openerp.web.Model = openerp.web.SessionAware.extend({
+ init: function(session, model_name) {
+ this._super(session);
+ this.model_name = model_name;
+ },
+ get_func: function(method_name) {
+ var self = this;
+ return function() {
+ if (method_name == "search_read")
+ return self._search_read.apply(self, arguments);
+ return self._call(method_name, _.toArray(arguments));
+ };
+ },
+ _call: function (method, args) {
+ return this.rpc('/web/dataset/call', {
+ model: this.model_name,
+ method: method,
+ args: args
+ }).pipe(function(result) {
+ if (method == "read" && result instanceof Array && result.length > 0 && result[0]["id"]) {
+ var index = {};
+ _.each(_.range(result.length), function(i) {
+ index[result[i]["id"]] = result[i];
+ })
+ result = _.map(args[0], function(x) {return index[x];});
+ }
+ return result;
+ });
+ },
+ _search_read: function(domain, fields, offset, limit, order, context) {
+ return this.rpc('/web/dataset/search_read', {
+ model: this.model_name,
+ fields: fields,
+ offset: offset,
+ limit: limit,
+ domain: domain,
+ sort: order,
+ context: context
+ }).pipe(function(result) {
+ return result.records;
+ });;
+ }
+});
+
openerp.web.CompoundContext = openerp.web.Class.extend({
init: function () {
this.__ref = "compound_context";