From 97b23413027cba2dbf2d5688d14b3e1dcd1c87b4 Mon Sep 17 00:00:00 2001
From: Thomas Hansen <thomas@thomas-desktop.(none)>
Date: Mon, 7 Mar 2011 15:25:55 -0700
Subject: [PATCH] Issue #1065458: Fixed required fields issue.

---
 multistep.module |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/multistep.module b/multistep.module
index 4b9e707..beba88d 100644
--- a/multistep.module
+++ b/multistep.module
@@ -236,6 +236,46 @@ function multistep_block_view($type = '') {
 }
 
 /**
+ * Implements hook_form_alter.
+ */
+function multistep_form_alter(&$form, &$form_state, $form_id) {
+  multistep_fix_required($form);
+}
+
+function multistep_fix_required(&$form) {
+  $multistep_form = false;
+
+  foreach ($form['#fieldgroups'] as $fieldgroup) {
+    if ($fieldgroup->format_type == 'multistep')
+      $multistep_form = TRUE;
+  }
+
+  if (isset($form['#multistep']['current']) && $multistep_form) {
+    $step = $form['#multistep']['current'];
+
+    foreach ($form['#group_children'] as $field => $group) {
+      if ($group != $step) {
+        if (isset($form[$field]))
+          $form[$field] = _multistep_make_unrequired($form[$field]);
+      }
+    }
+  }
+}
+
+function _multistep_make_unrequired($element) {
+  foreach ($element as $key => $value) {
+    if (is_array($value))
+      $element[$key] = _multistep_make_unrequired($value);
+  }
+
+  if (isset($element['#required'])) {
+    $element['#required'] = 0;
+  }
+
+  return $element;
+}
+
+/**
  * Implements hook_field_group_formatter_info().
  */
 function multistep_field_group_formatter_info() {
@@ -268,6 +308,9 @@ function multistep_field_group_format_summary($group) {
  * Implements hook_field_group_pre_render().
  */
 function multistep_field_group_pre_render(&$element, $group, &$form) {
+  if(!isset($form['#multistep']))
+    return;
+
   $step = $form['#multistep']['current'];
   $access = $group->group_name == $step;
   // Verify if user wants to see all steps at once
-- 
1.7.4.1

