RSS

(root)/drupal/7-fic : 539 : modules/simpletest/tests/field_test.module

« back to all changes in this revision

Viewing changes to modules/simpletest/tests/field_test.module

yched
2009-02-01 02:14:00
Revision ID: yched-20090201021400-0pbvjogksc01km31
Better fix for generic non-JS handling of 'add more' button.
See http://drupal.org/node/367006#comment-1231454 

Show diffs side-by-side

added added

removed removed

216
216
function field_test_entity_form(&$form_state, $entity) {
217
217
  $form = array();
218
218
 
 
219
  if (isset($form_state['test_entity'])) {
 
220
    $entity = $form_state['test_entity'] + (array)$entity;
 
221
  }
 
222
  $entity = (object)$entity;
 
223
 
219
224
  foreach (array('ftid', 'ftvid', 'fttype') as $key) {
220
225
    $form[$key] = array(
221
226
      '#type' => 'value',
224
229
  }
225
230
 
226
231
  // Add field widgets.
 
232
  $form['#builder_function'] = 'field_test_entity_form_submit_builder';
227
233
  field_attach_form('test_entity', $entity, $form, $form_state);
228
234
 
229
235
  $form['revision'] = array(
254
260
 * Submit handler for field_test_set_field_values().
255
261
 */
256
262
function field_test_entity_form_submit($form, &$form_state) {
257
 
  $entity = field_test_create_stub_entity($form_state['values']['ftid'], $form_state['values']['ftvid'], $form_state['values']['fttype']);
258
 
  field_attach_submit('test_entity', $entity, $form, $form_state);
 
263
  $entity = field_test_entity_form_submit_builder($form, $form_state);
259
264
  $insert = empty($entity->ftid);
260
265
  field_test_entity_save($entity);
 
266
 
261
267
  $message = $insert ? t('test_entity @id has been created.', array('@id' => $entity->ftid)) : t('test_entity @id has been updated.', array('@id' => $entity->ftid));
262
268
  drupal_set_message($message);
263
 
  $form_state['redirect'] = 'test-entity/' . $entity->ftid . '/edit';
 
269
 
 
270
  if ($entity->ftid) {
 
271
    unset($form_state['rebuild']);
 
272
    $form_state['redirect'] = 'test-entity/' . $entity->ftid . '/edit';
 
273
  }
 
274
  else {
 
275
    // Error on save.
 
276
    drupal_set_message(t('The entity could not be saved.'), 'error');
 
277
  }
 
278
 
 
279
}
 
280
 
 
281
/**
 
282
 * Build a test_entity by processing submitted form values and prepare for a form rebuild.
 
283
 */
 
284
function field_test_entity_form_submit_builder($form, &$form_state) {
 
285
  $entity = field_test_create_stub_entity($form_state['values']['ftid'], $form_state['values']['ftvid'], $form_state['values']['fttype']);
 
286
  field_attach_submit('test_entity', $entity, $form, $form_state);
 
287
 
 
288
  $form_state['test_entity'] = (array)$entity;
 
289
  $form_state['rebuild'] = TRUE;
 
290
 
 
291
  return $entity;
264
292
}
265
293
 
266
294
/**

Loggerhead 1.17 is a web-based interface for Bazaar branches