diff options
| author | Christophe Simonis <chs@odoo.com> | 2016-04-25 14:43:44 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2016-04-25 14:43:44 +0200 |
| commit | bb8f0f1fc3d0f5574938019ca69cc917a55e7962 (patch) | |
| tree | a6662094bb9c307981461fdb9872195032f2da06 /addons/web | |
| parent | 9ad6a9df6e5e5654bc98c4c655848404b4e946b2 (diff) | |
| parent | 4d337f72ed59d1e5260fa2bb4f3d238e6ed11415 (diff) | |
[MERGE] forward port of branch saas-9 up to 4d337f7
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/i18n/da.po | 18 | ||||
| -rw-r--r-- | addons/web/i18n/en_GB.po | 6 | ||||
| -rw-r--r-- | addons/web/i18n/mk.po | 13 | ||||
| -rw-r--r-- | addons/web/i18n/pt_BR.po | 17 | ||||
| -rw-r--r-- | addons/web/i18n/zh_CN.po | 57 | ||||
| -rw-r--r-- | addons/web/static/src/js/framework/ajax.js | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/framework/data.js | 6 | ||||
| -rw-r--r-- | addons/web/static/src/js/framework/session.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_view.js | 5 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_widgets.js | 19 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/list_view.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/widgets/data_export.js | 3 | ||||
| -rw-r--r-- | addons/web/static/src/js/widgets/debug_manager.js | 4 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 4 |
14 files changed, 92 insertions, 66 deletions
diff --git a/addons/web/i18n/da.po b/addons/web/i18n/da.po index dc6d35ff863..5d07f65575e 100644 --- a/addons/web/i18n/da.po +++ b/addons/web/i18n/da.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-18 04:43+0000\n" -"PO-Revision-Date: 2016-04-08 09:07+0000\n" +"PO-Revision-Date: 2016-04-16 13:32+0000\n" "Last-Translator: Morten Schou <ms@msteknik.dk>\n" "Language-Team: Danish (http://www.transifex.com/odoo/odoo-9/language/da/)\n" "MIME-Version: 1.0\n" @@ -626,7 +626,7 @@ msgstr "Opret \"<strong>%s</strong>\"" #: code:addons/web/static/src/js/views/form_relational_widgets.js:27 #, python-format msgid "Create a %s" -msgstr "" +msgstr "Opret en %s" #. module: web #. openerp-web @@ -640,7 +640,7 @@ msgstr "Opret og rediger" #: code:addons/web/static/src/js/views/form_relational_widgets.js:40 #, python-format msgid "Create and edit" -msgstr "" +msgstr "Opret og rediger" #. module: web #. openerp-web @@ -948,7 +948,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1197 #, python-format msgid "Favorites" -msgstr "" +msgstr "Favoritter" #. module: web #. openerp-web @@ -1005,7 +1005,7 @@ msgstr "Filter" #: code:addons/web/static/src/js/views/search_menus.js:83 #, python-format msgid "Filter name is required." -msgstr "" +msgstr "Filter navn er påkrævet" #. module: web #. openerp-web @@ -1298,7 +1298,7 @@ msgstr "" #: code:addons/web/static/src/js/widgets/debug_manager.js:89 #, python-format msgid "Metadata (%s)" -msgstr "" +msgstr "Metadata (%s)" #. module: web #. openerp-web @@ -1394,7 +1394,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:83 #, python-format msgid "My Odoo.com account" -msgstr "" +msgstr "Min Odoo.com konto" #. module: web #. openerp-web @@ -1489,7 +1489,7 @@ msgstr "" #: code:addons/web/static/src/js/views/form_common.js:243 #, python-format msgid "No results to show..." -msgstr "" +msgstr "Ingen resultater fundet" #. module: web #. openerp-web @@ -2525,7 +2525,7 @@ msgstr "Du skal vælge mindst en post" #: code:addons/web/static/src/js/framework/crash_manager.js:69 #, python-format msgid "Your Odoo session expired. Please refresh the current web page." -msgstr "" +msgstr "Din OpenERP session er udløbet. Genindlæs aktuelle web side." #. module: web #. openerp-web diff --git a/addons/web/i18n/en_GB.po b/addons/web/i18n/en_GB.po index 34f612ae261..ec85047ec73 100644 --- a/addons/web/i18n/en_GB.po +++ b/addons/web/i18n/en_GB.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-18 04:43+0000\n" -"PO-Revision-Date: 2016-01-21 10:35+0000\n" +"PO-Revision-Date: 2016-04-21 09:34+0000\n" "Last-Translator: Martin Trigaux\n" "Language-Team: English (United Kingdom) (http://www.transifex.com/odoo/odoo-9/language/en_GB/)\n" "MIME-Version: 1.0\n" @@ -1645,7 +1645,7 @@ msgstr "On change:" #: code:addons/web/static/src/js/widgets/progress_bar.js:79 #, python-format msgid "Only Integer Value should be valid." -msgstr "" +msgstr "Only Integer Value should be valid." #. module: web #. openerp-web @@ -2454,7 +2454,7 @@ msgstr "Widget:" #: code:addons/web/static/src/js/widgets/progress_bar.js:76 #, python-format msgid "Wrong value entered!" -msgstr "" +msgstr "Wrong value entered!" #. module: web #. openerp-web diff --git a/addons/web/i18n/mk.po b/addons/web/i18n/mk.po index c6736cc5bf9..fbeb0917e80 100644 --- a/addons/web/i18n/mk.po +++ b/addons/web/i18n/mk.po @@ -3,13 +3,14 @@ # * web # # Translators: +# Aleksandar Vangelovski <aleksandarv@hbee.eu>, 2016 msgid "" msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-18 04:43+0000\n" -"PO-Revision-Date: 2016-03-07 14:57+0000\n" -"Last-Translator: Martin Trigaux\n" +"PO-Revision-Date: 2016-04-22 13:33+0000\n" +"Last-Translator: Aleksandar Vangelovski <aleksandarv@hbee.eu>\n" "Language-Team: Macedonian (http://www.transifex.com/odoo/odoo-9/language/mk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,7 +30,7 @@ msgstr "" #: code:addons/web/static/src/js/views/form_widgets.js:442 #, python-format msgid " selected records" -msgstr "" +msgstr "избрани записи" #. module: web #. openerp-web @@ -1019,7 +1020,7 @@ msgstr "Филтер на: %s" #: code:addons/web/static/src/js/views/search_menus.js:90 #, python-format msgid "Filter with same name already exists." -msgstr "" +msgstr "Филтерот со истото име веќе постои." #. module: web #. openerp-web @@ -1141,7 +1142,7 @@ msgstr "Неактивен" #: code:addons/web/static/src/js/views/graph_widget.js:197 #, python-format msgid "Invalid data" -msgstr "" +msgstr "Погрешни информации" #. module: web #. openerp-web @@ -2247,7 +2248,7 @@ msgstr "Тип:" #: code:addons/web/static/src/js/views/list_view.js:309 #, python-format msgid "Unarchive" -msgstr "" +msgstr "Одархивирај" #. module: web #. openerp-web diff --git a/addons/web/i18n/pt_BR.po b/addons/web/i18n/pt_BR.po index abba0e47222..6a851f50037 100644 --- a/addons/web/i18n/pt_BR.po +++ b/addons/web/i18n/pt_BR.po @@ -3,7 +3,8 @@ # * web # # Translators: -# Grazziano Duarte <g.negocios@outlook.com.br>, 2015 +# grazziano <g.negocios@outlook.com.br>, 2015 +# grazziano <g.negocios@outlook.com.br>, 2016 # Martin Trigaux, 2015 # Mateus Cerqueira Lopes <mateus1@gmail.com>, 2015 msgid "" @@ -11,8 +12,8 @@ msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-18 04:43+0000\n" -"PO-Revision-Date: 2016-01-21 10:35+0000\n" -"Last-Translator: Martin Trigaux\n" +"PO-Revision-Date: 2016-04-13 18:49+0000\n" +"Last-Translator: grazziano <g.negocios@outlook.com.br>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/odoo/odoo-9/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1065,7 +1066,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1500 #, python-format msgid "Get this feature and much more with Odoo Enterprise!" -msgstr "" +msgstr "Obtenha este recurso e muito mais com Odoo Enterprise!" #. module: web #. openerp-web @@ -1563,7 +1564,7 @@ msgstr "Odoo" #: code:addons/web/static/src/xml/base.xml:101 #, python-format msgid "Odoo (Formerly OpenERP)" -msgstr "" +msgstr "Odoo (Antigo OpenERP)" #. module: web #. openerp-web @@ -1584,7 +1585,7 @@ msgstr "Odoo Enterprise" #: code:addons/web/static/src/xml/base.xml:117 #, python-format msgid "Odoo S.A." -msgstr "" +msgstr "Odoo S.A." #. module: web #: model:ir.ui.view,arch_db:web.qunit_suite @@ -1596,14 +1597,14 @@ msgstr "Odoo Web Tests" #: code:addons/web/static/src/xml/base.xml:117 #, python-format msgid "Odoo is a trademark of" -msgstr "" +msgstr "Odoo é uma marca registrada de" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:119 #, python-format msgid "Odoo.com" -msgstr "" +msgstr "Odoo.com" #. module: web #. openerp-web diff --git a/addons/web/i18n/zh_CN.po b/addons/web/i18n/zh_CN.po index b4bbd9e5def..692ed80d2b5 100644 --- a/addons/web/i18n/zh_CN.po +++ b/addons/web/i18n/zh_CN.po @@ -5,17 +5,18 @@ # Translators: # fausthuang, 2015 # fausthuang, 2015 -# jeffery chen fan <jeffery9@gmail.com>, 2015 +# Jeffery Chenn <jeffery9@gmail.com>, 2015 +# Jeffery Chenn <jeffery9@gmail.com>, 2016 # liyes <bodetools@gmail.com>, 2015 # wxb <bd5dml@gmail.com>, 2016 -# 珠海-老天 <liangjia@qq.com>, 2015 +# liAnGjiA <liangjia@qq.com>, 2015 msgid "" msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-18 04:43+0000\n" -"PO-Revision-Date: 2016-03-19 05:36+0000\n" -"Last-Translator: Joray <13637815@qq.com>\n" +"PO-Revision-Date: 2016-04-15 11:50+0000\n" +"Last-Translator: Jeffery Chenn <jeffery9@gmail.com>\n" "Language-Team: Chinese (China) (http://www.transifex.com/odoo/odoo-9/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -199,7 +200,7 @@ msgstr "(%d 条记录)" #: code:addons/web/static/src/xml/base.xml:106 #, python-format msgid "(Community Edition)" -msgstr "" +msgstr "(社区版)" #. module: web #. openerp-web @@ -301,7 +302,7 @@ msgstr "激活" #: code:addons/web/static/src/xml/base.xml:96 #, python-format msgid "Activate the developer mode" -msgstr "" +msgstr "激活开发者模式" #. module: web #. openerp-web @@ -387,7 +388,7 @@ msgstr "所有用户" #: code:addons/web/static/src/xml/base.xml:1508 #, python-format msgid "And more" -msgstr "" +msgstr "更多" #. module: web #. openerp-web @@ -452,7 +453,7 @@ msgstr "二进制文件" #: code:addons/web/static/src/xml/base.xml:1507 #, python-format msgid "Bugfixes guarantee" -msgstr "" +msgstr "补丁修复保证" #. module: web #. openerp-web @@ -525,7 +526,7 @@ msgstr "更改默认值:" #: code:addons/web/static/src/js/views/form_widgets.js:447 #, python-format msgid "Change selection " -msgstr "" +msgstr "更改选择" #. module: web #. openerp-web @@ -695,7 +696,7 @@ msgstr "数据库" #: code:addons/web/static/src/xml/base.xml:110 #, python-format msgid "Database expiration:" -msgstr "" +msgstr "数据库过期:" #. module: web #. openerp-web @@ -776,7 +777,7 @@ msgstr "你真的要删除这些记录?" #: code:addons/web/static/src/xml/base.xml:82 #, python-format msgid "Documentation" -msgstr "" +msgstr "文档" #. module: web #. openerp-web @@ -1046,7 +1047,7 @@ msgstr "翻转轴" #: code:addons/web/static/src/xml/base.xml:119 #, python-format msgid "For more information visit" -msgstr "" +msgstr "更多信息请访问" #. module: web #. openerp-web @@ -1061,7 +1062,7 @@ msgstr "表单" #: code:addons/web/static/src/xml/base.xml:118 #, python-format msgid "GNU Lesser General Public License" -msgstr "" +msgstr "GNU宽松通用公共许可证" #. module: web #. openerp-web @@ -1189,7 +1190,7 @@ msgstr "离开Debug 模式" #: code:addons/web/static/src/xml/base.xml:118 #, python-format msgid "Licenced under the terms of" -msgstr "" +msgstr "根据条款被许可" #. module: web #. openerp-web @@ -1290,7 +1291,7 @@ msgstr "也许您应该考虑按 F5 键重新加载程序..." #: code:addons/web/static/src/xml/base.xml:570 #, python-format msgid "Measure" -msgstr "测量" +msgstr "计量" #. module: web #. openerp-web @@ -1325,7 +1326,7 @@ msgstr "缺少记录" #: code:addons/web/static/src/xml/base.xml:1505 #, python-format msgid "Mobile support" -msgstr "" +msgstr "支持移动" #. module: web #. openerp-web @@ -1346,7 +1347,7 @@ msgstr "修改者:" #: code:addons/web/static/src/xml/base_common.xml:67 #, python-format msgid "Modifiers:" -msgstr "修改者:" +msgstr "修饰符:" #. module: web #. openerp-web @@ -1435,7 +1436,7 @@ msgstr "新密码:" #: code:addons/web/static/src/xml/base.xml:1504 #, python-format msgid "New design" -msgstr "" +msgstr "新设计" #. module: web #. openerp-web @@ -1502,7 +1503,7 @@ msgstr "无结果可供显示" #: code:addons/web/static/src/js/views/form_widgets.js:456 #, python-format msgid "No selected record" -msgstr "" +msgstr "无选择的记录" #. module: web #. openerp-web @@ -1566,7 +1567,7 @@ msgstr "Odoo" #: code:addons/web/static/src/xml/base.xml:101 #, python-format msgid "Odoo (Formerly OpenERP)" -msgstr "" +msgstr "Odoo (前 OpenERP)" #. module: web #. openerp-web @@ -1599,7 +1600,7 @@ msgstr "Odoo Web 测试" #: code:addons/web/static/src/xml/base.xml:117 #, python-format msgid "Odoo is a trademark of" -msgstr "" +msgstr "OpenERP 是注册商标,由" #. module: web #. openerp-web @@ -1665,7 +1666,7 @@ msgstr "仅用于您个人" #: code:addons/web/static/src/xml/base.xml:198 #, python-format msgid "Open Debug Menu" -msgstr "" +msgstr "打开除错菜单" #. module: web #. openerp-web @@ -1943,7 +1944,7 @@ msgstr "搜索: " #: code:addons/web/static/src/js/views/form_widgets.js:444 #, python-format msgid "See selection " -msgstr "" +msgstr "见选择" #. module: web #. openerp-web @@ -1963,7 +1964,7 @@ msgstr "选择 <i class=\"fa fa-database\"/>" #: code:addons/web/static/src/js/views/form_widgets.js:468 #, python-format msgid "Select records..." -msgstr "" +msgstr "选择记录..." #. module: web #. openerp-web @@ -1977,7 +1978,7 @@ msgstr "选择地域" #: code:addons/web/static/src/js/views/form_widgets.js:468 #, python-format msgid "Selected records" -msgstr "" +msgstr "选择的记录" #. module: web #. openerp-web @@ -2060,7 +2061,7 @@ msgstr "仍然在加载中...<br />请稍候...." #: code:addons/web/static/src/xml/base.xml:83 #, python-format msgid "Support" -msgstr "" +msgstr "支持" #. module: web #. openerp-web @@ -2340,7 +2341,7 @@ msgstr "即刻升级" #: code:addons/web/static/src/xml/base.xml:1506 #, python-format msgid "Upgrade to future versions" -msgstr "" +msgstr "升级未来版本号" #. module: web #. openerp-web @@ -2384,7 +2385,7 @@ msgstr "验证错误" #: code:addons/web/static/src/xml/base.xml:105 #, python-format msgid "Version" -msgstr "" +msgstr "版本" #. module: web #. openerp-web diff --git a/addons/web/static/src/js/framework/ajax.js b/addons/web/static/src/js/framework/ajax.js index 869e0214ad9..87fd08c7786 100644 --- a/addons/web/static/src/js/framework/ajax.js +++ b/addons/web/static/src/js/framework/ajax.js @@ -203,7 +203,9 @@ function get_file(options) { // opening a new window seems the best way to workaround if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) { var params = _.extend({}, options.data || {}, {token: token}); - var url = this.url(options.url, params); + var url = options.session.url(options.url, params); + if (options.complete) { options.complete(); } + return window.open(url); } diff --git a/addons/web/static/src/js/framework/data.js b/addons/web/static/src/js/framework/data.js index a1b8e1602e9..3e9396a4e96 100644 --- a/addons/web/static/src/js/framework/data.js +++ b/addons/web/static/src/js/framework/data.js @@ -320,6 +320,7 @@ var DataSet = Class.extend(mixins.PropertiesMixin, { this.index = null; this._sort = []; this._model = new Model(model, context); + this.orderer = new utils.DropMisordered(); }, previous: function () { this.index -= 1; @@ -408,10 +409,11 @@ var DataSet = Class.extend(mixins.PropertiesMixin, { read_slice: function (fields, options) { var self = this; options = options || {}; - return this._model.query(fields) + var query = this._model.query(fields) .limit(options.limit || false) .offset(options.offset || 0) - .all().done(function (records) { + .all(); + return this.orderer.add(query).done(function (records) { self.ids = _(records).pluck('id'); }); }, diff --git a/addons/web/static/src/js/framework/session.js b/addons/web/static/src/js/framework/session.js index 71819cc6b7a..6639ab172ba 100644 --- a/addons/web/static/src/js/framework/session.js +++ b/addons/web/static/src/js/framework/session.js @@ -270,6 +270,7 @@ var Session = core.Class.extend(mixins.EventDispatcherMixin, { if (this.override_session){ options.data.session_id = this.session_id; } + options.session = this; ajax.get_file(options); }, synchronized_mode: function(to_execute) { diff --git a/addons/web/static/src/js/views/form_view.js b/addons/web/static/src/js/views/form_view.js index 864931a42c2..32b3e43af7d 100644 --- a/addons/web/static/src/js/views/form_view.js +++ b/addons/web/static/src/js/views/form_view.js @@ -836,7 +836,10 @@ var FormView = View.extend(common.FieldManagerMixin, { def.reject(); }, }; - Dialog.confirm(this, message, options); + var dialog = Dialog.confirm(this, message, options); + dialog.$modal.on('hidden.bs.modal', function() { + def.reject(); + }); return def; }, /** diff --git a/addons/web/static/src/js/views/form_widgets.js b/addons/web/static/src/js/views/form_widgets.js index 2a2a36cdaba..f3a8bd76041 100644 --- a/addons/web/static/src/js/views/form_widgets.js +++ b/addons/web/static/src/js/views/form_widgets.js @@ -1536,13 +1536,20 @@ var FieldStatus = common.AbstractField.extend({ val = $li.data("id"); } if (val != self.get('value')) { - this.view.recursive_save().done(function() { - var change = {}; - change[self.name] = val; - self.view.dataset.write(self.view.datarecord.id, change).done(function() { - self.view.reload(); + if (!this.view.datarecord.id || + this.view.datarecord.id.toString().match(data.BufferedDataSet.virtual_id_regex)) { + // don't save, only set value for not-yet-saved many2ones + self.set_value(val); + } + else { + this.view.recursive_save().done(function() { + var change = {}; + change[self.name] = val; + self.view.dataset.write(self.view.datarecord.id, change).done(function() { + self.view.reload(); + }); }); - }); + } } }, }); diff --git a/addons/web/static/src/js/views/list_view.js b/addons/web/static/src/js/views/list_view.js index b8d0c569609..0923776c951 100644 --- a/addons/web/static/src/js/views/list_view.js +++ b/addons/web/static/src/js/views/list_view.js @@ -1900,6 +1900,7 @@ var Column = Class.extend({ row_data[this.id].value, this, options.value_if_empty)); } }); +ListView.Column = Column; var MetaColumn = Column.extend({ meta: true, diff --git a/addons/web/static/src/js/widgets/data_export.js b/addons/web/static/src/js/widgets/data_export.js index a73020ce9b2..d1c10098586 100644 --- a/addons/web/static/src/js/widgets/data_export.js +++ b/addons/web/static/src/js/widgets/data_export.js @@ -6,6 +6,7 @@ var crash_manager = require('web.crash_manager'); var data = require('web.data'); var Dialog = require('web.Dialog'); var framework = require('web.framework'); +var pyeval = require('web.pyeval'); var QWeb = core.qweb; var _t = core._t; @@ -427,7 +428,7 @@ var DataExport = Dialog.extend({ fields: exported_fields, ids: this.ids_to_export, domain: this.domain, - context: this.dataset.context, + context: pyeval.eval('contexts', [this.dataset._model.context()]), import_compat: !!this.$el.find("#import_compat").val(), })}, complete: framework.unblockUI, diff --git a/addons/web/static/src/js/widgets/debug_manager.js b/addons/web/static/src/js/widgets/debug_manager.js index 36a3a205632..5c6cfa60cfc 100644 --- a/addons/web/static/src/js/widgets/debug_manager.js +++ b/addons/web/static/src/js/widgets/debug_manager.js @@ -85,6 +85,10 @@ if (core.debug) { }, get_metadata: function() { var ds = this.dataset; + if (!this.view.get_selected_ids().length) { + console.warn(_t("No metadata available")); + return + } ds.call('get_metadata', [this.view.get_selected_ids()]).done(function(result) { new Dialog(this, { title: _.str.sprintf(_t("Metadata (%s)"), ds.model), diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 6030c1bce2b..c3670c9aa56 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -204,7 +204,9 @@ </t> <t t-name="WebClient.DebugDropdown"> <t t-if="active_view.type === 'form'"> - <li class="oe_metadata"><a href="#" data-action="get_metadata">View Metadata</a></li> + <t t-if="active_view.controller.get_selected_ids().length == 1"> + <li class="oe_metadata"><a href="#" data-action="get_metadata">View Metadata</a></li> + </t> <li class="oe_layout"><a href="#" data-action="toggle_layout_outline">Toggle Form Layout Outline</a></li> <li class="oe_defaults"><a href="#" data-action="set_defaults">Set Defaults</a></li> </t> |
