You are here

function cms_portfolio_field_group_pre_render in Glazed CMS Portfolio 8

Same name and namespace in other branches
  1. 7 cms_portfolio.module \cms_portfolio_field_group_pre_render()

Implements hook_field_group_pre_render().

File

./cms_portfolio.module, line 23
Primary module hooks for CMS Portfolio module.

Code

function cms_portfolio_field_group_pre_render(&$element, $group, &$form) {
  if ($group->bundle == 'cms_portfolio_project' && $group->context == 'view') {
    $layout = 'top';
    if (!empty($form['#node']
      ->get('field_cms_portfolio_layout')
      ->getString())) {
      $layout = $form['#node']
        ->get('field_cms_portfolio_layout')
        ->getString();
    }
    elseif (theme_get_setting('portfolio_details')) {
      $layout = theme_get_setting('portfolio_details');
    }
    $sidebar = 4;
    if (!empty($form['#node']
      ->get('field_cms_portfolio_sb_width')
      ->getString())) {
      $sidebar = $form['#node']
        ->get('field_cms_portfolio_sb_width')
        ->getString();
    }
    elseif (theme_get_setting('portfolio_sidebar')) {
      $sidebar = theme_get_setting('portfolio_sidebar');
    }
    $main = 12 - $sidebar;
    $sidebar_class = 'col-sm-' . $sidebar;
    $main_class = 'col-sm-' . $main;

    // LAYOUT CLASSES FOR PORTFOLIO NODES
    // Top Fields Wrapper Field Group
    if ($group->group_name == 'group_cms_portfolio_top_fields') {

      // Set weight to change source order of groups
      if ($layout == 'hide') {
        unset($element['group_extra_fields']);
        unset($element['field_cms_page_body']);
      }
      else {
        if ($layout == 'right' or $layout == 'bottom') {
          $group->weight = 99;
        }
        if ($layout == 'bottom' or $layout == 'top') {
          $group->format_settings['classes'] .= ' row';
          $element['field_cms_page_body']['#attributes'] = [
            'class' => [
              $main_class,
            ],
          ];
        }
        else {
          $group->format_settings['classes'] .= ' ' . $sidebar_class;
        }
      }
    }

    // Extra Fields Field Group
    if ($group->group_name == 'group_extra_fields') {
      if ($layout == 'bottom' or $layout == 'top') {
        $group->format_settings['classes'] .= ' ' . $sidebar_class;
      }
      else {
        $element['#prefix'] = '<hr>';
      }
    }

    // Images Field Group
    if ($group->group_name == 'group_cms_portfolio_images') {
      if ($layout == 'left' or $layout == 'right') {
        $group->format_settings['classes'] .= ' ' . $main_class;
      }
    }
  }
}