You are here

function subform_widget in Subform 5

File

./subform.module, line 31

Code

function subform_widget($op, &$node, &$field, &$items) {
  switch ($op) {
    case 'form':
      $node_property = $field['field_name'] . '_parent_node';
      if (isset($node->nid)) {
        $parent_node = $node->nid;
      }
      else {
        if (isset($node->{$node_property})) {
          $parent_node = $node->{$node_property};
        }
        else {
          $parent_node = 0 - floor(rand());
        }
      }
      $form = array(
        $field['field_name'] => array(
          $field['field_name'] . '_parent_node' => array(
            '#type' => 'hidden',
            '#default_value' => $parent_node,
          ),
          'widget' => array(
            '#type' => 'subform',
            '#title' => $field['widget']['label'],
            '#mode' => $field['widget']['children_display_mode'],
            '#child_side' => $field['widget']['child_side'],
            '#relation_class' => $field['widget']['relation_class'],
            '#parent_node' => $parent_node,
            '#allow_selection' => $field['widget']['allow_selection'],
            '#allow_hoisting' => $field['widget']['allow_hoisting'],
            '#selection_query' => $field['widget']['selection_query'],
            '#type_name' => $node->type,
            '#field_name' => $field['field_name'],
          ),
        ),
      );
      return $form;
    case 'submit':
      $node_property = $field['field_name'] . '_parent_node';
      $node->subforms[$field['field_name']] = $node->{$node_property};
  }
}