From 7a0efc1230d0e6f37f051798b3afd78f0aee7b1d Mon Sep 17 00:00:00 2001 From: Adam Vessey Date: Fri, 30 Nov 2012 16:39:36 -0400 Subject: [PATCH] Allow form builders to trigger rebuilds. Needed to be able to skip a form, that we only know to skip when we get to the given step. (Currently the case in the islandora_marcxml module). --- includes/ingest.form.inc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/includes/ingest.form.inc b/includes/ingest.form.inc index ad4fc308..8db494a7 100644 --- a/includes/ingest.form.inc +++ b/includes/ingest.form.inc @@ -32,7 +32,21 @@ */ function islandora_ingest_form(array $form, array &$form_state, array $configuration) { islandora_ingest_form_init_form_state($form_state, $configuration); - return islandora_ingest_form_execute_step($form, $form_state); + + $original_form = $form; + $form = islandora_ingest_form_execute_step($original_form, $form_state); + + // XXX: One would think that this would be handled by Drupal proper; however, + // it is not. To trigger rebuilds from inside of a form building function + // does not look to be provided for. + while ($form_state['rebuild'] === TRUE) { + $form_state['rebuild'] = FALSE; + // Might've changed the step... Might need to include new files. + islandora_ingest_form_step_form_load_include($form_state); + $form = islandora_ingest_form_execute_step($original_form, $form_state); + } + + return $form; } /**