-
Add new options for many2one field
-
-
-
Description
-
This modules modifies "many2one" form fields so as to add some new display
-control options.
-
** New: support many2manytags widget ! **
-
Options provided includes possibility to remove "Create..." and/or "Create and
-Edit..." entries from many2one drop down. You can also change default number of
-proposition appearing in the drop-down. Or prevent the dialog box poping in
-case of validation error.
-
If not specified, the module will avoid proposing any of the create options
-if the current user have no permission rights to create the related object.
-
-
-
Requirements
-
Was tested on openerp v7.0
-
-
-
New option
-
create boolean (Default: depends if user have create rights)
-
-Whether to display the "Create..." entry in dropdown panel.
-
create_edit boolean (Default: depends if user have create rights)
-
-Whether to display "Create and Edit..." entry in dropdown panel
-
m2o_dialog boolean (Default: depends if user have create rights)
-
-Whether to display the many2one dialog in case of validation error.
-
limit int (Default: openerp default value is 7)
-
-Number of displayed record in drop-down panel
-
-
-
Example
-
Your XML form view definition could contain:
-
-...
-<field name="partner_id" options="{'limit': 10, 'create': false, 'create_edit': false}"/>
-...
-
-
-
-
Note
-
Double check that you have no inherited view that remote options you set on a field !
-If nothing work, add a debugger in the first ligne of get_search_result method and enable debug mode in OpenERP. When you write something in a many2one field, javascript debugger should pause. If not verify your installation.
-
-
-
-
diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js
deleted file mode 100644
index 00885a09..00000000
--- a/web_m2x_options/static/src/js/form.js
+++ /dev/null
@@ -1,224 +0,0 @@
-/*global openerp, _, $ */
-
-openerp.web_m2x_options = function (instance) {
-
- "use strict";
-
- var QWeb = instance.web.qweb,
- _t = instance.web._t,
- _lt = instance.web._lt;
-
- instance.web.form.FieldMany2One.include({
-
- show_error_displayer: function () {
- if ((typeof this.options.m2o_dialog === 'undefined' && this.can_create) ||
- this.options.m2o_dialog) {
- new instance.web.form.M2ODialog(this).open();
- }
- },
-
- get_search_result: function (search_val) {
-
- var def = $.Deferred();
- var self = this;
- // add options limit used to change number of selections record
- // returned.
-
- if (typeof this.options.limit === 'number') {
- this.limit = this.options.limit;
- }
-
- var dataset = new instance.web.DataSet(this, this.field.relation,
- self.build_context());
- var blacklist = this.get_search_blacklist();
- this.last_query = search_val;
-
- var search_result = this.orderer.add(dataset.name_search(
- search_val,
- new instance.web.CompoundDomain(
- self.build_domain(), [["id", "not in", blacklist]]),
- 'ilike', this.limit + 1,
- self.build_context()));
-
- var create_rights;
- if (typeof this.options.create === "undefined" ||
- typeof this.options.create_edit === "undefined") {
- create_rights = new instance.web.Model(this.field.relation).call(
- "check_access_rights", ["create", false]);
- }
-
- $.when(search_result, create_rights).then(function (_data, _can_create) {
- var data = _data[0];
-
- var can_create = _can_create ? _can_create[0] : null;
-
- self.can_create = can_create; // for ``.show_error_displayer()``
- self.last_search = data;
- // possible selections for the m2o
- var values = _.map(data, function (x) {
- x[1] = x[1].split("\n")[0];
- return {
- label: _.str.escapeHTML(x[1]),
- value: x[1],
- name: x[1],
- id: x[0],
- };
- });
-
- // search more... if more results that max
-
- if (values.length > self.limit) {
- values = values.slice(0, self.limit);
- values.push({
- label: _t("Search More..."),
- action: function () {
- dataset.name_search(
- search_val, self.build_domain(),
- 'ilike', false).done(function (data) {
- self._search_create_popup("search", data);
- });
- },
- classname: 'oe_m2o_dropdown_option'
- });
- }
-
- // quick create
-
- var raw_result = _(data.result).map(function (x) {
- return x[1];
- });
-
- if ((typeof self.options.create === 'undefined' && can_create) ||
- self.options.create) {
-
- if (search_val.length > 0 &&
- !_.include(raw_result, search_val)) {
-
- values.push({
- label: _.str.sprintf(
- _t('Create "