summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2012-02-23 18:44:39 +0100
committerFabien Meghazi <fme@openerp.com>2012-02-23 18:44:39 +0100
commitb64f4c6875b099aa780c5cfd15bfcacec88c2003 (patch)
treeee5891fc8f5bad90d9a3154a609546c6b9dcd916 /addons/web/static/src/js
parent0889435d6fa569a14fc6160b0c44f4bdcd2b714d (diff)
[ADD] Added dropdown menu.
bzr revid: fme@openerp.com-20120223174439-nlyeqjobi230e7xx
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/chrome.js77
1 files changed, 76 insertions, 1 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index 4e648e46856..838fdb4f79f 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -984,7 +984,7 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{
return false;
},
do_hide_secondary: function() {
- this.$secondary_menu.hide();
+ //this.$secondary_menu.hide();
},
do_show_secondary: function($sub_menu, $main_menu) {
var self = this;
@@ -1008,6 +1008,78 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{
}
});
+openerp.web.DropDownMenu = openerp.web.Widget.extend(/** @lends openerp.web.Header# */{
+ template: "DropDownMenu",
+ /**
+ * @constructs openerp.web.DropDownMenu
+ * @extends openerp.web.OldWidget
+ *
+ * @param parent
+ */
+ init: function(parent) {
+ this._super(parent);
+ },
+ start: function() {
+ var self = this;
+ this._super.apply(this, arguments);
+ $('html').bind('click', function() {
+ self.$element.find('.oe_dropdown_options').hide();
+ });
+ this.$element.find('.oe_dropdown_toggle').click(function() {
+ self.$element.find('.oe_dropdown_options').toggle();
+ return false;
+ });
+ this.$element.find('.oe_dropdown_options li a').click(function() {
+ var f = self['on_menu_' + $(this).data('menu')];
+ f && f();
+ self.$element.find('.oe_dropdown_options').hide();
+ return false;
+ });
+ },
+ on_menu_logout: function() {
+ },
+ on_menu_settings: function() {
+ var self = this;
+ var action_manager = new openerp.web.ActionManager(this);
+ var dataset = new openerp.web.DataSet (this,'res.users',this.context);
+ dataset.call ('action_get','',function (result){
+ self.rpc('/web/action/load', {action_id:result}, function(result){
+ action_manager.do_action(_.extend(result['result'], {
+ res_id: self.session.uid,
+ res_model: 'res.users',
+ flags: {
+ action_buttons: false,
+ search_view: false,
+ sidebar: false,
+ views_switcher: false,
+ pager: false
+ }
+ }));
+ });
+ });
+ this.dialog = new openerp.web.Dialog(this,{
+ title: _t("Preferences"),
+ width: '700px',
+ buttons: [
+ {text: _t("Cancel"), click: function(){ $(this).dialog('destroy'); }},
+ {text: _t("Change password"), click: function(){ self.change_password(); }},
+ {text: _t("Save"), click: function(){
+ var inner_viewmanager = action_manager.inner_viewmanager;
+ inner_viewmanager.views[inner_viewmanager.active_view].controller.do_save()
+ .then(function() {
+ self.dialog.destroy();
+ // needs to refresh interface in case language changed
+ window.location.reload();
+ });
+ }
+ }
+ ]
+ }).open();
+ action_manager.appendTo(this.dialog);
+ action_manager.render(this.dialog);
+ }
+});
+
openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClient */{
/**
* @constructs openerp.web.WebClient
@@ -1071,6 +1143,9 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie
self.menu = new openerp.web.Menu(self);
self.menu.replace(this.$element.find('.oe_menu_placeholder'));
self.menu.on_action.add(this.proxy('on_menu_action'));
+ self.dropdown_menu = new openerp.web.DropDownMenu(self);
+ self.dropdown_menu.replace(this.$element.find('.oe_dropdown_menu_placeholder'));
+ self.dropdown_menu.on_menu_logout.add(this.proxy('on_logout'));
},
show_common: function() {
var self = this;