[MERGE]: survey: fixed a bug in warning message when users exceed maximal number...
[odoo/odoo.git] / addons / web / static / src / js / view_form.js
index 221d5a3..43f5923 100644 (file)
@@ -143,7 +143,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
                 // null index means we should start a new record
                 result = self.on_button_new();
             } else {
-                result = self.dataset.read_index(_.keys(self.fields_view.fields)).pipe(self.on_record_loaded);
+                result = self.dataset.read_index(_.keys(self.fields_view.fields), {
+                    context : { 'bin_size' : true }
+                }).pipe(self.on_record_loaded);
             }
             result.pipe(function() {
                 self.$element.css('visibility', 'visible');
@@ -306,7 +308,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
     },
     do_onchange: function(widget, processed) {
         var self = this;
-        var act = function() {
+        return this.on_change_mutex.exec(function() {
             try {
                 processed = processed || [];
                 var on_change = widget.node.attrs.on_change;
@@ -333,8 +335,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
                 console.error(e);
                 return $.Deferred().reject();
             }
-        };
-        return this.on_change_mutex.exec(act);
+        });
     },
     on_processed_onchange: function(response, processed) {
         try {
@@ -416,7 +417,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
      */
     do_save: function(success, prepend_on_create) {
         var self = this;
-        var action = function() {
+        return this.mutating_mutex.exec(function() { return self.is_initialized.pipe(function() {
             try {
             var form_invalid = false,
                 values = {},
@@ -443,15 +444,15 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
             } else {
                 var save_deferral;
                 if (!self.datarecord.id) {
-                    console.log("FormView(", self, ") : About to create", values);
+                    //console.log("FormView(", self, ") : About to create", values);
                     save_deferral = self.dataset.create(values).pipe(function(r) {
                         return self.on_created(r, undefined, prepend_on_create);
                     }, null);
                 } else if (_.isEmpty(values)) {
-                    console.log("FormView(", self, ") : Nothing to save");
+                    //console.log("FormView(", self, ") : Nothing to save");
                     save_deferral = $.Deferred().resolve({}).promise();
                 } else {
-                    console.log("FormView(", self, ") : About to save", values);
+                    //console.log("FormView(", self, ") : About to save", values);
                     save_deferral = self.dataset.write(self.datarecord.id, values, {}).pipe(function(r) {
                         return self.on_saved(r);
                     }, null);
@@ -462,10 +463,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
                 console.error(e);
                 return $.Deferred().reject();
             }
-        };
-        return this.mutating_mutex.exec(function() {
-            return self.is_initialized.pipe(action);
-        });
+        });});
     },
     on_invalid: function() {
         var msg = "<ul>";
@@ -516,7 +514,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
             if (this.sidebar) {
                 this.sidebar.attachments.do_update();
             }
-            openerp.log("The record has been created with id #" + this.datarecord.id);
+            //openerp.log("The record has been created with id #" + this.datarecord.id);
             this.reload();
             return $.when(_.extend(r, {created: true})).then(success);
         }
@@ -526,14 +524,15 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
     },
     reload: function() {
         var self = this;
-        var act = function() {
+        return this.reload_mutex.exec(function() {
             if (self.dataset.index == null || self.dataset.index < 0) {
                 return $.when(self.on_button_new());
             } else {
-                return self.dataset.read_index(_.keys(self.fields_view.fields)).pipe(self.on_record_loaded);
+                return self.dataset.read_index(_.keys(self.fields_view.fields), {
+                    context : { 'bin_size' : true }
+                }).pipe(self.on_record_loaded);
             }
-        };
-        return this.reload_mutex.exec(act);
+        });
     },
     get_fields_values: function(blacklist) {
        blacklist = blacklist || [];
@@ -630,7 +629,7 @@ openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({
                     ['res_model', '=', this.view.dataset.model],
                     ['res_id', '=', this.view.datarecord.id],
                     ['type', 'in', ['binary', 'url']]
-                ])).read_slice(['name', 'url', 'type'], {}, this.on_attachments_loaded);
+                ])).read_slice(['name', 'url', 'type'], {}).then(this.on_attachments_loaded);
         }
     },
     on_attachments_loaded: function(attachments) {
@@ -1699,15 +1698,11 @@ openerp.web.form.FieldSelection = openerp.web.form.Field.extend({
 
 openerp.web.form.dialog = function(content, options) {
     options = _.extend({
-        autoOpen: true,
         width: '90%',
-        height: '90%',
-        min_width: '800px',
-        min_height: '600px'
+        height: 'auto',
+        min_width: '800px'
     }, options || {});
-    options.autoOpen = true;
-    var dialog = new openerp.web.Dialog(null, options);
-    dialog.$element = $(content).dialog(dialog.dialog_options);
+    var dialog = new openerp.web.Dialog(null, options, content).open();
     return dialog.$element;
 };
 
@@ -1767,7 +1762,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({
                         self.open_related(self.related_entries[i]);
                     };
                 });
-                var cmenu = self.$menu_btn.contextMenu(self.cm_id, {'leftClickToo': true,
+                var cmenu = self.$menu_btn.contextMenu(self.cm_id, {'noRightClick': true,
                     bindings: bindings, itemStyle: {"color": ""},
                     onContextMenu: function() {
                         if(self.value) {
@@ -1787,7 +1782,6 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({
             });
         });
         var ctx_callback = function(e) {init_context_menu_def.resolve(e); e.preventDefault()};
-        this.$menu_btn.bind('contextmenu', ctx_callback);
         this.$menu_btn.click(ctx_callback);
 
         // some behavior for input
@@ -2297,6 +2291,9 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
                    this.viewmanager.views[this.viewmanager.active_view].controller) {
                    var view = this.viewmanager.views[this.viewmanager.active_view].controller;
                    if (this.viewmanager.active_view === "form") {
+                       if (!view.is_initialized.isResolved()) {
+                           return false;
+                       }
                        var res = $.when(view.do_save());
                        if (!res.isResolved() && !res.isRejected()) {
                            console.warn("Asynchronous get_value() is not supported in form view.");
@@ -2428,7 +2425,10 @@ openerp.web.form.One2ManyFormView = openerp.web.FormView.extend({
     form_template: 'One2Many.formview',
     on_loaded: function(data) {
         this._super(data);
-        this.$form_header.find('button.oe_form_button_create').click(this.on_button_new);
+        var self = this;
+        this.$form_header.find('button.oe_form_button_create').click(function() {
+            self.do_save().then(self.on_button_new);
+        });
     }
 });
 
@@ -2744,7 +2744,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
             var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save-new");
             $nbutton.click(function() {
                 $.when(self.view_form.do_save()).then(function() {
-                    self.view_form.reload_lock.then(function() {
+                    self.view_form.reload_mutex.exec(function() {
                         self.view_form.on_button_new();
                     });
                 });
@@ -2752,7 +2752,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
             var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save");
             $nbutton.click(function() {
                 $.when(self.view_form.do_save()).then(function() {
-                    self.view_form.reload_lock.then(function() {
+                    self.view_form.reload_mutex.exec(function() {
                         self.check_exit();
                     });
                 });
@@ -3014,7 +3014,7 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({
     on_save_as: function() {
         var url = '/web/binary/saveas?session_id=' + this.session.session_id + '&model=' +
             this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name +
-            '&fieldname=' + (this.node.attrs.filename || '') + '&t=' + (new Date().getTime());
+            '&filename_field=' + (this.node.attrs.filename || '') + '&t=' + (new Date().getTime());
         window.open(url);
     },
     on_clear: function() {