summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/css/base.css7
-rw-r--r--addons/web/static/src/css/base.sass7
-rw-r--r--addons/web/static/src/js/chrome.js72
-rw-r--r--addons/web/static/src/js/coresetup.js27
-rw-r--r--addons/web/static/src/js/view_form.js4
-rw-r--r--addons/web/static/src/js/views.js5
-rw-r--r--addons/web/static/src/xml/base.xml8
7 files changed, 93 insertions, 37 deletions
diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css
index 2714925583b..5d2102630cb 100644
--- a/addons/web/static/src/css/base.css
+++ b/addons/web/static/src/css/base.css
@@ -1072,7 +1072,12 @@
position: relative;
}
.openerp .oe_view_manager_switch .oe_vm_switch_gantt:after {
- content: "c";
+ font-family: "mnmliconsRegular" !important;
+ font-size: 21px;
+ font-weight: 300 !important;
+ content: "y";
+ top: -2px;
+ position: relative;
}
.openerp .oe_view_manager_switch .oe_vm_switch_calendar:after {
content: "P";
diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass
index 102e640b918..567732ed080 100644
--- a/addons/web/static/src/css/base.sass
+++ b/addons/web/static/src/css/base.sass
@@ -841,7 +841,12 @@ $colour4: #8a89ba
top: -2px
position: relative
.oe_vm_switch_gantt:after
- content: "c"
+ font-family: "mnmliconsRegular" !important
+ font-size: 21px
+ font-weight: 300 !important
+ content: "y"
+ top: -2px
+ position: relative
.oe_vm_switch_calendar:after
content: "P"
.oe_vm_switch_kanban:after
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index b740c61c9df..b71a504b52f 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -47,7 +47,7 @@ instance.web.dialog = function(element) {
var result = element.dialog.apply(element, _.rest(_.toArray(arguments)));
result.dialog("widget").addClass("openerp");
return result;
-}
+};
instance.web.Dialog = instance.web.Widget.extend({
dialog_title: "",
@@ -162,7 +162,7 @@ instance.web.CrashManager = instance.web.CallbackEnabled.extend({
}
},
on_managed_error: function(error) {
- instance.web.dialog($('<div>' + QWeb.render('CrashManager.warning', {error: error}) + '</div>'), {
+ instance.web.dialog($('<div>' + QWeb.render('CrashManager.warning', {error: error}) + '</div>'), {
title: "OpenERP " + _.str.capitalize(error.type),
buttons: [
{text: _t("Ok"), click: function() { $(this).dialog("close"); }}
@@ -181,7 +181,7 @@ instance.web.CrashManager = instance.web.CallbackEnabled.extend({
// Call the send method from server to send mail with details
new instance.web.DataSet(self, 'publisher_warranty.contract').call_and_eval('send', [error.data,explanation,remark,issuename]).then(function(result){
if (result === false) {
- alert('There was a communication error.')
+ alert('There was a communication error.');
} else {
$this.dialog('close');
}
@@ -269,12 +269,12 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
start: function() {
var self = this;
var fetch_db = this.rpc("/web/database/get_list", {}).pipe(
- function(result) {
- self.db_list = result.db_list;
+ function(result) {
+ self.db_list = result.db_list;
},
- function (_, ev) {
+ function (_, ev) {
ev.preventDefault();
- self.db_list = null;
+ self.db_list = null;
});
var fetch_langs = this.rpc("/web/session/get_lang_list", {}).then(function(result) {
self.lang_list = result.lang_list;
@@ -284,11 +284,15 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
do_render: function() {
var self = this;
self.$element.html(QWeb.render("DatabaseManager", { widget : self }));
- self.$element.find(".oe_database_manager_menu").tabs();
+ self.$element.find(".oe_database_manager_menu").tabs({
+ show: function(event, ui) {
+ $('*[autofocus]:first', ui.panel).focus();
+ }
+ });
self.$element.find("form[name=create_db_form]").validate({ submitHandler: self.do_create });
- self.$element.find("form[name=drop_db_form]").validate({ submitHandler: self.do_drop });
- self.$element.find("form[name=backup_db_form]").validate({ submitHandler: self.do_backup });
- self.$element.find("form[name=restore_db_form]").validate({ submitHandler: self.do_restore });
+ self.$element.find("form[name=drop_db_form]").validate({ submitHandler: self.do_drop });
+ self.$element.find("form[name=backup_db_form]").validate({ submitHandler: self.do_backup });
+ self.$element.find("form[name=restore_db_form]").validate({ submitHandler: self.do_restore });
self.$element.find("form[name=change_pwd_form]").validate({
messages: {
old_pwd: "Please enter your previous password",
@@ -300,7 +304,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
},
submitHandler: self.do_change_password
});
- self.$element.find("#back_to_login").click(self.do_exit);
+ self.$element.find("#back_to_login").click(self.do_exit);
},
destroy: function () {
this.$element.find('#db-create, #db-drop, #db-backup, #db-restore, #db-change-password, #back-to-login').unbind('click').end().empty();
@@ -409,12 +413,12 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
self.display_error({
title: 'Access Denied',
error: 'Incorrect super-administrator password'
- })
+ });
} else {
self.display_error({
title: 'Restore Database',
error: 'Could not restore the database'
- })
+ });
}
},
complete: function() {
@@ -451,7 +455,7 @@ instance.web.Login = instance.web.Widget.extend({
if (this.has_local_storage && this.remember_credentials) {
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) {
+ if (jQuery.deparam(jQuery.param.querystring()).debug !== undefined) {
this.selected_password = localStorage.getItem('last_password_login_success');
}
}
@@ -471,7 +475,7 @@ instance.web.Login = instance.web.Widget.extend({
self.$element.find('.oe_login_bottom').show();
self.$element.find('.oe_login_pane').show();
self.load_db_list();
- })
+ });
});
self.load_db_list();
},
@@ -486,7 +490,7 @@ instance.web.Login = instance.web.Widget.extend({
});
},
set_db_list: function (list) {
- this.$element.find("[name=db]").replaceWith(instance.web.qweb.render('Login.dblist', { db_list: list, selected_db: this.selected_db}))
+ this.$element.find("[name=db]").replaceWith(instance.web.qweb.render('Login.dblist', { db_list: list, selected_db: this.selected_db}));
},
on_submit: function(ev) {
if(ev) {
@@ -525,7 +529,7 @@ instance.web.Login = instance.web.Widget.extend({
if(self.remember_credentials) {
localStorage.setItem('last_db_login_success', db);
localStorage.setItem('last_login_login_success', login);
- if (jQuery.deparam(jQuery.param.querystring()).debug != undefined) {
+ if (jQuery.deparam(jQuery.param.querystring()).debug !== undefined) {
localStorage.setItem('last_password_login_success', password);
}
} else {
@@ -641,8 +645,9 @@ instance.web.Menu = instance.web.Widget.extend({
* @param {Number} id the action_id to match
*/
open_action: function (id) {
- var menu_id, $menu = this.$element.add(this.$secondary_menus).find('a[data-action-id=' + id + ']');
- if (menu_id = $menu.data('menu')) {
+ var $menu = this.$element.add(this.$secondary_menus).find('a[data-action-id=' + id + ']');
+ var menu_id = $menu.data('menu');
+ if (menu_id) {
this.open_menu(menu_id);
}
},
@@ -669,7 +674,7 @@ instance.web.Menu = instance.web.Widget.extend({
action_id = $items.data('action-id');
id = $items.data('menu');
}
- }
+ }
}
this.open_menu(id);
this.current_menu = id;
@@ -709,7 +714,9 @@ instance.web.UserMenu = instance.web.Widget.extend({
});
this.$element.on('click', '.oe_dropdown_options li a[data-menu]', function() {
var f = self['on_menu_' + $(this).data('menu')];
- f && f($(this));
+ if (f) {
+ f($(this));
+ }
self.$element.find('.oe_dropdown_options').hide();
return false;
});
@@ -837,7 +844,7 @@ instance.web.WebClient = instance.web.Widget.extend({
start: function() {
var self = this;
this.$element.addClass("openerp openerp-web-client-container");
- if (jQuery.param != undefined && jQuery.deparam(jQuery.param.querystring()).kitten != undefined) {
+ if (jQuery.param !== undefined && jQuery.deparam(jQuery.param.querystring()).kitten !== undefined) {
this.$element.addClass("kitten-mode-activated");
this.$element.delegate('img.oe-record-edit-link-img', 'hover', function(e) {
self.$element.toggleClass('clark-gable');
@@ -899,7 +906,7 @@ instance.web.WebClient = instance.web.Widget.extend({
message: message,
data: {debug: file + ':' + line}
});
- }
+ };
}
this.notification = new instance.web.Notification(this);
this.notification.appendTo(this.$element);
@@ -954,9 +961,18 @@ instance.web.WebClient = instance.web.Widget.extend({
}
},
on_hashchange: function(event) {
+ var self = this;
var state = event.getState(true);
if (!_.isEqual(this._current_state, state)) {
- this.action_manager.do_load_state(state, !!this._current_state);
+ if(state.action_id === undefined && state.menu_id) {
+ self.menu.has_been_loaded.then(function() {
+ self.menu.do_reload().then(function() {
+ self.menu.menu_click(state.menu_id)
+ });
+ });
+ } else {
+ this.action_manager.do_load_state(state, !!this._current_state);
+ }
}
this._current_state = state;
},
@@ -970,7 +986,7 @@ instance.web.WebClient = instance.web.Widget.extend({
},
do_action: function(action) {
var self = this;
- // TODO replace by client action menuclick
+ // TODO replace by client action menuclick
if(action.menu_id) {
this.do_reload().then(function () {
self.menu.menu_click(action.menu_id);
@@ -989,7 +1005,7 @@ instance.web.EmbeddedClient = instance.web.Widget.extend({
template: 'EmptyComponent',
init: function(parent, action_id, options) {
this._super(parent);
- // TODO take the xmlid of a action instead of its id
+ // TODO take the xmlid of a action instead of its id
this.action_id = action_id;
this.options = options || {};
this.am = new instance.web.ActionManager(this);
@@ -1030,7 +1046,7 @@ instance.web.embed = function (origin, dbname, login, key, action, options) {
});
});
-}
+};
};
diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js
index 8e7b5d4f75d..5a8a2b50722 100644
--- a/addons/web/static/src/js/coresetup.js
+++ b/addons/web/static/src/js/coresetup.js
@@ -579,6 +579,33 @@ $.async_when = function() {
return old_async_when.apply(this, arguments);
};
+/**
+ * Registry for all the client actions key: tag value: widget
+ */
+instance.web.client_actions = new instance.web.Registry();
+
+/**
+ * Client action to reload the whole interface.
+ * If params has an entry 'menu_id', it opens the given menu entry.
+ */
+instance.web.client_actions.add("reload", "instance.web.Reload");
+
+instance.web.Reload = instance.web.Widget.extend({
+ init: function(parent, params) {
+ this._super(parent);
+ this.menu_id = (params && params.menu_id) || false;
+ },
+ start: function() {
+ if (this.menu_id) {
+ // open the given menu id
+ var url_without_fragment = window.location.toString().split("#", 1)[0];
+ window.location = url_without_fragment + "#menu_id=" + this.menu_id;
+ } else {
+ window.location.reload();
+ }
+ }
+});
+
};
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 7590765c08f..3c45e28e28f 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -3228,6 +3228,7 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(_.
* TODO niv: clean those deferred stuff, it could be better
*/
instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
+ template: "FieldMany2Many.render",
multi_selection: false,
disable_utility_classes: true,
init: function(field_manager, node) {
@@ -3278,6 +3279,7 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
'addable': self.get("effective_readonly") ? null : _t("Add"),
'deletable': self.get("effective_readonly") ? false : true,
'selectable': self.multi_selection,
+ '$buttons': $(".oe_form_view_m2m_buttons", self.$element),
});
var embedded = (this.field.views || {}).tree;
if (embedded) {
@@ -3290,7 +3292,7 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
loaded.resolve();
});
$.async_when().then(function () {
- self.list_view.appendTo(self.$element);
+ self.list_view.appendTo($(".oe_form_view_m2m_view", self.$element));
});
return loaded;
},
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index d2387c1ba3f..de2ff53a71a 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -1262,11 +1262,6 @@ instance.web.str_to_xml = function(s) {
}
/**
- * Registry for all the client actions key: tag value: widget
- */
-instance.web.client_actions = new instance.web.Registry();
-
-/**
* Registry for all the main views
*/
instance.web.views = new instance.web.Registry();
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index c0c86af2780..b2af11b7078 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -136,7 +136,7 @@
</tr>
<tr>
<td><label for="db_name">New database name:</label></td>
- <td><input type="text" name="db_name" class="required" matches="^[a-zA-Z][a-zA-Z0-9_]+$"/></td>
+ <td><input type="text" name="db_name" class="required" matches="^[a-zA-Z][a-zA-Z0-9_]+$" autofocus="true"/></td>
</tr>
<tr>
<td><label for="demo_data">Load Demonstration data:</label></td>
@@ -1054,6 +1054,12 @@
</span>
</t>
</t>
+<t t-name="FieldMany2Many.render">
+ <div class="oe_form_view_m2m">
+ <div class="oe_form_view_m2m_buttons" />
+ <div class="oe_form_view_m2m_view" />
+ </div>
+</t>
<t t-name="FieldMany2ManyTags">
<div class="oe_form_field_many2manytags">
<t t-if="! widget.get('effective_readonly')">