diff --git a/form_builder.js b/form_builder.js index d6dbb30..5ecb983 100644 --- a/form_builder.js +++ b/form_builder.js @@ -654,6 +654,7 @@ Drupal.formBuilder.addElement = function(response) { var positionAction = $('#form-builder-positions').attr('action'); $('#form-builder-positions').replaceWith(response.positionForm); $('#form-builder-positions').attr('action', positionAction); + Drupal.attachBehaviors($('#form-builder-positions')); // Submit the new positions form to save the new element position. Drupal.formBuilder.updateElementPosition($new.get(0)); @@ -680,7 +681,7 @@ Drupal.formBuilder.updateElementPosition = function(element) { $('#form-builder-positions input.form-builder-parent').filter('.' + child_id).val(parent_id); // Submit the position form via AJAX to save the new weights and parents. - $('#form-builder-positions').ajaxSubmit(); + $('#form-builder-positions input[type=submit]').triggerHandler('mousedown'); }; /** diff --git a/includes/form_builder.admin.inc b/includes/form_builder.admin.inc index 72a57d5..3d94ecd 100644 --- a/includes/form_builder.admin.inc +++ b/includes/form_builder.admin.inc @@ -20,12 +20,9 @@ function form_builder_interface($form_type, $form_id) { // Set the current form type (used for display of the sidebar block). form_builder_active_form($form_type, $form_id); - // Load the current state of the form, or create a new cache if needed. - $form_structure = form_builder_cache_load($form_type, $form_id); - if (!$form_structure) { - $form_structure = form_builder_load_form($form_type, $form_id); - form_builder_cache_save($form_type, $form_id, $form_structure); - } + // Create a new empty form_builder cache. + $form_structure = form_builder_load_form($form_type, $form_id); + form_builder_cache_save($form_type, $form_id, $form_structure); $output = array(); $output[] = drupal_get_form('form_builder_preview', $form_structure, $form_type, $form_id); @@ -270,6 +267,7 @@ function form_builder_preview($f, &$form_state, $form, $form_type, $form_id) { * Form containing all the current weights and parents of elements. */ function form_builder_positions($form, &$form_state, $form_cache, $form_type, $form_id) { + form_load_include($form_state, 'inc', 'form_builder', 'includes/form_builder.admin'); $form = array( '#tree' => TRUE, '#form_builder' => array( @@ -286,12 +284,27 @@ function form_builder_positions($form, &$form_state, $form_cache, $form_type, $f $form['submit'] = array( '#type' => 'submit', '#value' => t('Update'), + '#ajax' => array( + 'callback' => 'form_builder_positions_ajax', + 'wrapper' => 'form_builder_positions', + ), ); return $form; } /** + * AJAX callback for form_builder_positions. + */ +function form_builder_positions_ajax($form, &$form_state) { + // We don't want to change anything in the form. + return array( + '#type' => 'ajax', + '#commands' => array(), + ); +} + +/** * Recursive helper for form_builder_positions(). Add weight fields. */ function _form_builder_positions_prepare(&$form, $form_cache, $parent_id = FORM_BUILDER_ROOT) { diff --git a/modules/webform/form_builder_webform.module b/modules/webform/form_builder_webform.module index f92e1fe..a8ce592 100644 --- a/modules/webform/form_builder_webform.module +++ b/modules/webform/form_builder_webform.module @@ -35,8 +35,9 @@ function form_builder_webform_components_page($node) { $build['#attached']['js'][] = $path . '/js/select-admin.js'; $build['#attached']['library'][] = array('system', 'ui.datepicker'); + $form = drupal_get_form('form_builder_webform_save_form', $node->nid); $build[] = form_builder_interface('webform', $node->nid); - $build[] = drupal_get_form('form_builder_webform_save_form', $node->nid); + $build[] = $form; return $build; } @@ -81,6 +82,8 @@ function form_builder_webform_save_form_submit($form, &$form_state) { * Save the current Form Builder interface changes for a webform node. */ function form_builder_webform_save_node($node) { + module_load_include('inc', 'form_builder', 'includes/form_builder.api'); + module_load_include('inc', 'form_builder', 'includes/form_builder.cache'); $form_cache = form_builder_cache_load('webform', $node->nid); $element_ids = form_builder_preview_prepare($form_cache, 'webform', $node->nid);