0013262: custom field tab might appear twice
authorCornelius Weiß <c.weiss@metaways.de>
Fri, 23 Jun 2017 09:13:16 +0000 (11:13 +0200)
committerCornelius Weiss <c.weiss@metaways.de>
Fri, 23 Jun 2017 09:15:47 +0000 (11:15 +0200)
Change-Id: Iacaa57db11377cd848ffd6af5f6c82253a3440f7
Reviewed-on: http://gerrit.tine20.com/customers/4937
Reviewed-by: Cornelius Weiss <c.weiss@metaways.de>
Tested-by: Cornelius Weiss <c.weiss@metaways.de>
tine20/Tinebase/js/widgets/customfields/ConfigManager.js
tine20/Tinebase/js/widgets/customfields/EditDialogPlugin.js

index d8ef207..d10ef54 100644 (file)
@@ -14,7 +14,18 @@ Tine.widgets.customfields.ConfigManager = function() {
     var getStore = function(app) {
         app = Tine.Tinebase.appMgr.get(app);
         if (! stores[app.appName]) {
-            var allCfs = (Ext.isFunction(app.getRegistry)) ? app.getRegistry().get('customfields') : null;
+            var _ = window.lodash,
+                allCfs = (Ext.isFunction(app.getRegistry)) ? app.getRegistry().get('customfields') : null;
+
+            // set defaults -- uiconfig are empty strings :-(
+            _.each(allCfs, function(cfConfig) {
+                _.each({tab: 'customfields', 'group': '', sort: 0}, function(defaultValue, field) {
+                    if (_.get(cfConfig, 'definition.uiconfig.' + field, '') == '') {
+                        _.set(cfConfig, 'definition.uiconfig.' + field, defaultValue);
+                    }
+                });
+            });
+
             stores[app.appName] = new Ext.data.JsonStore({
                 fields: Tine.Tinebase.Model.Customfield,
                 data: allCfs ? allCfs : []
index 2c89943..c3e4550 100644 (file)
@@ -118,8 +118,7 @@ Tine.widgets.customfields.EditDialogPlugin.prototype = {
                 cfConfigs.push(cfConfig);
             }
         }, this);
-
-        _.each(cfConfigs, _.bind(_.defaultsDeep, cfConfigs, _, {data: {definition: {uiconfig: {tab: 'customfields', 'group': '', sort: 0}}}}));
+        
         _.each(_.groupBy(cfConfigs, 'data.definition.uiconfig.tab'), _.bind(function(fields, tabId) {
             var tab = tabPanel.items.get(_.isNaN(+tabId) || ['', null].indexOf(tabId) >= 0? tabId : +tabId);
             if (! tab) {