CRM-13783 - ProfileBuilder - Auto-add new custom field to canvas
[civicrm-core.git] / js / view / crm.designer.js
index 9077eb39bf081c6d92ba7dd6b719c473e20fafea..6c33665f9749600469852d683b30be086e8b648e 100644 (file)
     events: {
       'keyup .crm-designer-palette-search input': 'doSearch',
       'click .crm-designer-palette-clear-search': 'clearSearch',
-      'click .crm-designer-palette-refresh': 'doRefresh',
       'click .crm-designer-palette-toggle': 'toggleAll'
     },
     initialize: function() {
     },
     doAddField: function(section) {
       var paletteView = this;
-      var openAddNewWindow = function() {
-        var url = CRM.url('civicrm/admin/custom/group/field/add', {
-          reset: 1,
-          action: 'add',
-          gid: section.custom_group_id
-        });
-        window.open(url, '_blank');
-      };
-
-      if (paletteView.hideAddFieldAlert) {
-        openAddNewWindow();
-      } else {
-        CRM.confirm(function() {
-            paletteView.hideAddFieldAlert = true;
-            openAddNewWindow();
-          }, {
-            title: ts('Add Field'),
-            message: ts('A new window or tab will open. Use the new window to add your field, and then return to this window and click "Refresh."')
+      var url = CRM.url('civicrm/admin/custom/group/field/add', {
+        reset: 1,
+        action: 'add',
+        gid: section.custom_group_id
+      });
+      CRM.loadForm(url, {
+        resetButton: 'next_new',
+        onSuccess: function(data, settings) {
+          paletteView.doRefresh('custom_' + data.customField.id);
+          if (data.buttonName != 'next_new') {
+            $(settings.target).dialog('close');
           }
-        );
-      }
+        }
+      });
       return false;
     },
-    doRefresh: function(event) {
+    doRefresh: function(fieldToAdd) {
       var ufGroupModel = this.model;
       CRM.Schema.reloadModels()
         .done(function(data){
           ufGroupModel.resetEntities();
+          if (fieldToAdd) {
+            var field = ufGroupModel.getRel('paletteFieldCollection').getFieldByName(null, fieldToAdd);
+            field.addToUFCollection(ufGroupModel.getRel('ufFieldCollection'));
+          }
         })
         .fail(function() {
           CRM.alert(ts('Failed to retrieve schema'), ts('Error'), 'error');