You are here

function _oa_core_change_panel_layout in Open Atrium Core 7.2

Helper function to change the layout of a panel

Parameters

$data:

$key string specifying index into $data:

$new_layout string new layout machine name:

$default_region string default region name to assign existing panes:

array $region_map array mapping of old regions to new regions:

1 call to _oa_core_change_panel_layout()
oa_users_oa_core_layout_alter in modules/oa_users/oa_users.module
Implements hook_oa_core_layout_alter().

File

./oa_core.module, line 2175

Code

function _oa_core_change_panel_layout(&$data, $key, $new_layout, $default_region, $region_map = array()) {
  if (!empty($data[$key])) {
    $data[$key]->display->layout = $new_layout;
    foreach ($data[$key]->display->panels as $region => $panels) {
      $new_region = isset($region_map[$region]) ? $region_map[$region] : $default_region;
      $data[$key]->display->panels[$new_region] = $panels;
      unset($data[$key]->display->panels[$region]);
    }
    foreach ($data[$key]->display->content as $pid => $pane) {
      $new_region = isset($region_map[$pane->panel]) ? $region_map[$pane->panel] : $default_region;
      $data[$key]->display->content[$pid]->panel = $new_region;
    }
    if (!empty($data[$key]->display->panel_settings['style_settings'])) {
      foreach ($data[$key]->display->panel_settings['style_settings'] as $region => $settings) {
        $new_region = isset($region_map[$region]) ? $region_map[$region] : $default_region;
        $data[$key]->display->panel_settings['style_settings'][$new_region] = $settings;
        unset($data[$key]->display->panel_settings['style_settings'][$region]);
      }
    }
  }
}