2017-10-12 85 views
2

我想隱藏的所有形式的「創建和編輯」按鈕如何隱藏所有表單odoo「創建和編輯」按鈕,也是在每一行

,也是我想顯示「,「更多搜索」按鈕搜索更多」按鈕,在所有形式

Hide and Show button for all module

目前即時通訊使用odoo 10

讓我們來看看這個插件

https://apps.openerp.com/apps/modules/9.0/web_m2x_options/

我試圖使用該插件,但它根本不起作用。

有人可以幫助我在這種情況下?無論是使用這些插件,還是其他簡單的方法來做我需要做的事情。

我會爲任何答覆apreciate。

在此先感謝。

回答

1

有可能用它爲所有的模塊。但是你需要在ir.config.parameter中創建一條記錄。

配置 - >技術 - >參數 - >系統參數

要刪除create_edit按鈕,你必須添加此信息。

鍵:「web_m2x_options.create_edit」 值:「false」。

並且要在任何many2one和Many2many字段上添加更多搜索,您必須添加。

鍵:「web_m2x_options.search_more」 值:「true」。

PS:你可以看到這個GitHub的頁面上的更多信息https://github.com/OCA/web/tree/9.0/web_m2x_options

+0

酷,它的工作原理和節省我的時間,謝謝兄弟... –

1

你可以把一個小部件種選擇你的工作領域:

<field name="your_one2many_field" widget="selection"/> 

要隱藏「創建和編輯」使用:

<field name="your_one2many_field" options="{'no_create_edit':True}"/> 
+0

我想要做的是爲每個模塊(全部)在odoo中,我必須一個接一個地做嗎?或者有辦法做一次? –

2

在這裏,我將改變odoo的默認behavor顯示使用此創建和編輯時,我想 :

 <field name="many2one_field" options="{'create':true, 'quick_create':true}"/> 

現在你的服裝模塊direcotry定義一個JavaScript文件來改變many2one小部件

you_costum_module_directory_name 
     --> static 
      --> src 
        --> js 
         --> costum_many2one_widget.js 

JavaScript文件:

odoo.define('you_costum_module_directory_name.costum_many2one_widget' , function(require) { 
    // I hope that you know how to add this to odoo backendassets 

     // first we need core 
     var core = require('web.core'); 
     // it's needed when we override get_search_result 
     var data = require('web.data'); 

     // NOTE: i may forget to require some object in the code by mistake check it 

     // now we must get the many2one widget for form widget 
     var FieldMany2One = core.form_widget_registry.get('many2one'); 

     // now we can override the method to change the behavor 
     FieldMany2one.include({ 
      // if you want the search more to be always shown we must overrid 
      // get_search_result and we need to require every thing we need first like data object 
      // now to show search more always we must reimplement the 
      get_search_result: function(search_val) { 
       var self = this; 

       var dataset = new data.DataSet(this, this.field.relation, self.build_context()); 
       this.last_query = search_val; 
       var exclusion_domain = [], ids_blacklist = this.get_search_blacklist(); 
       if (!_(ids_blacklist).isEmpty()) { 
        exclusion_domain.push(['id', 'not in', ids_blacklist]); 
       } 

       return this.orderer.add(dataset.name_search(
         search_val, new data.CompoundDomain(self.build_domain(), exclusion_domain), 
         'ilike', this.limit + 1, self.build_context())).then(function(_data) { 
        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].trim()) || data.noDisplayContent, 
          value: x[1], 
          name: x[1], 
          id: x[0], 
         }; 
        }); 

        // show search more if there is only one element at least 
        // you can make it 0 if you want 
        if (values.length >= 1) { 
         values = values.slice(0, self.limit); 
         values.push({ 
          label: _t("Search More..."), 
          action: function() { 
           dataset.name_search(search_val, self.build_domain(), 'ilike', 160).done(function(_data) { 
            self._search_create_popup("search", _data); 
           }); 
          }, 
          classname: 'o_m2o_dropdown_option' 
         }); 
        } 
        // if the user provide an option quick_create show quick create 
        var raw_result = _(_data.result).map(function(x) {return x[1];}); 
        if (
         search_val.length > 0 && 
         !_.include(raw_result, search_val) && 
         self.options && self.options.quick_create 
         ) { 
         self.can_create && values.push({ 
          label: _.str.sprintf(_t('Create "<strong>%s</strong>"'), 
           $('<span />').text(search_val).html()), 
          action: function() { 
           self._quick_create(search_val); 
          }, 
          classname: 'o_m2o_dropdown_option' 
         }); 
        } 
        // if the user provide a create option show create and Edit option 
        if (self.options && self.options.create && self.can_create){ 
         values.push({ 
          label: _t("Create and Edit..."), 
          action: function() { 
           self._search_create_popup("form", undefined, self._create_context(search_val)); 
          }, 
          classname: 'o_m2o_dropdown_option' 
         }); 
        } 
        else if (values.length === 0) { 
         values.push({ 
          label: _t("No results to show..."), 
          action: function() {}, 
          classname: 'o_m2o_dropdown_option' 
         }); 
        } 

        return values; 
       }); 
      } 
     }); 


     // id don't know if this line is required or not 
     // but if we have to registre the widget again 
     core.form_widget_registry.add('many2one', FieldMany2One); 

    }); 

現在,你需要添加js文件到你backendassets模板

you_costum_module_directory_name 
      --> static 
       --> src 
         --> js 
          --> costum_many2one_widget.js 

      --> xml 
       --> widgets.xml 

添加XML文件來體現:

<?xml version="1.0" encoding="utf-8" ?> 
    <openerp> <!-- odoo in odoo 10.0 --> 
     <data> 

      <!--We need to load our js file to backend_assets--> 
      <template id="assets_backend" name="many2one new edits " inherit_id="web.assets_backend"> 
       <xpath expr="." position="inside"> 
        <script type="text/javascript" src="/you_costum_module_directory_name/static/src/js/costum_many2one_widget.js"></script> 
       </xpath> 
      </template> 

     </data> 
    </openerp> 

在您的清單__openerp__.py添加XML文件:

+0

對不起我的錯誤,當我使用one2many鍵而不是many2one希望這可以幫助你和其他我建議閱讀本教程與一點點的JavaScript可以使你的昂貴odoo做什麼你想要的:https://www.odoo.com/documentation/10.0/howtos/web.html#the-form-view-custom-widgets – Cherif

+0

有一件事我用odoo 10的代碼是用來定義get_search_result我不是這樣的odoo 9.0不同,但如果你有任何proplem只是去網頁模塊,並複製該方法的orignal代碼,並編輯它 – Cherif

+0

我真的apreciate爲您的答案,謝謝兄弟。但我可以先爲你的代碼做到這一點,謝謝 –

相關問題