You are here

function ds_forms_preprocess_ds_forms_custom_form in Display Suite 7.2

Same name and namespace in other branches
  1. 7 modules/ds_forms/ds_forms.module \ds_forms_preprocess_ds_forms_custom_form()

Implements hook_preprocess_ds_forms_custom_form().

File

modules/ds_forms/ds_forms.module, line 129
Display Suite forms integration.

Code

function ds_forms_preprocess_ds_forms_custom_form(&$vars) {
  $form = ds_build_load($vars['form'], $vars['form']['#form_id']);
  if (!$form) {
    return;
  }
  $entity_type = $form->entity_type;
  $bundle = $form->bundle;
  if ($layout = ds_get_layout($entity_type, $bundle, 'form', FALSE)) {

    // Theme hook suggestions.
    $vars['theme_hook_suggestions'][] = $layout['layout'];
    $vars['theme_hook_suggestions'][] = $layout['layout'] . '__' . $entity_type;
    $vars['theme_hook_suggestions'][] = $layout['layout'] . '__' . $entity_type . '_' . $bundle;
    $form =& $vars['form'];

    // Add path to css file.
    if (isset($layout['css'])) {
      drupal_add_css($layout['path'] . '/' . $layout['layout'] . '.css');
    }

    // Add the hidden region.
    $layout['regions']['hidden'] = 'Hidden';

    // Create region variables based on the layout settings.
    foreach ($layout['regions'] as $region_name => $region) {

      // Create the region content.
      if ($region_name == 'hidden') {
        ds_forms_render_region($form, $region_name, $layout);
      }
      else {
        $vars[$region_name] = ds_forms_render_region($form, $region_name, $layout);
      }

      // Add extras classes to the region.
      $vars[$region_name . '_classes'] = !empty($layout['settings']['classes'][$region_name]) ? ' ' . implode(' ', $layout['settings']['classes'][$region_name]) : '';

      // Add a wrapper to the region.
      if (empty($layout['flexible'])) {
        $vars[$region_name . '_wrapper'] = isset($layout['settings']['wrappers'][$region_name]) ? $layout['settings']['wrappers'][$region_name] : 'div';
      }
    }

    // Add layout attributes if any
    if (!empty($layout['settings']['layout_attributes'])) {
      $vars['layout_attributes'] = ' ' . $layout['settings']['layout_attributes'];
    }
    else {
      $vars['layout_attributes'] = '';
    }
    if (isset($layout['settings']['classes']['layout_class'])) {
      foreach ($layout['settings']['classes']['layout_class'] as $layout_class) {
        $vars['classes_array'][] = $layout_class;
      }
    }

    // Ensure there is a class
    $vars['classes_array'][] = 'ds-form';

    // Merge the classes into a string
    $vars['classes'] = implode(' ', $vars['classes_array']);

    // Add a layout wrapper
    $vars['layout_wrapper'] = isset($layout['settings']['layout_wrapper']) ? $layout['settings']['layout_wrapper'] : 'div';

    // Add the rest of the form elements
    $vars['drupal_render_children'] = drupal_render_children($vars['form']);
  }
}