You are here

function panels_change_layout in Panels 5.2

Same name and namespace in other branches
  1. 6.3 includes/display-layout.inc \panels_change_layout()
  2. 6.2 includes/display-layout.inc \panels_change_layout()
  3. 7.3 includes/display-layout.inc \panels_change_layout()

Form definition for the display layout converter.

This form is only triggered if the user attempts to change the layout for a display that has already had content assigned to it. It allows the user to select where the panes located in to-be-deleted panels should be relocated to.

Parameters

array $form: A structured FAPI $form array.

object $display instanceof panels_display \n: The panels_display object that was modified on the preceding display layout editing form.

string $new_layout_id: A string containing the name of the layout the display is to be converted to. These strings correspond exactly to the filenames of the *.inc files in panels/layouts. So, if the new layout that's been selected is the 'Two Column bricks' layout, then $new_layout_id will be 'twocol_bricks', corresponding to panels/layouts/twocol_bricks.inc.

1 call to panels_change_layout()
panels_choose_layout in includes/display_edit.inc
Form definition for the display layout editor.

File

includes/display_edit.inc, line 410

Code

function panels_change_layout(&$form, $display, $new_layout_id) {
  $new_layout = panels_get_layout($new_layout_id);
  $new_layout_panels = panels_get_panels($new_layout, $display);
  $options = $new_layout_panels;
  $keys = array_keys($options);
  $default = $options[0];
  $old_layout = panels_get_layout($display->layout);
  $form['container'] = array(
    '#prefix' => '<div class="change-layout-display">',
    '#suffix' => '</div>',
  );
  $form['container']['old_layout'] = array(
    '#value' => panels_print_layout_icon($display->layout, $old_layout, check_plain($old_layout['title'])),
  );
  $form['container']['right_arrow'] = array(
    '#value' => theme('image', drupal_get_path('module', 'panels') . '/images/go-right.png'),
  );
  $form['container']['new_layout'] = array(
    '#value' => panels_print_layout_icon($new_layout_id, $new_layout, check_plain($new_layout['title'])),
  );
  $form['container-clearer'] = array(
    // TODO: FIx this ot use clear-block instead
    '#value' => '<div style="clear: both;"></div>',
  );
  $form['old'] = array(
    '#tree' => true,
    '#prefix' => '<div class="panels-layout-list">',
    '#suffix' => '</div>',
  );
  $old_layout_panels = panels_get_panels($old_layout, $display);
  foreach ($display->panels as $id => $content) {
    $form['old'][$id] = array(
      '#type' => 'select',
      '#title' => t('Move content in @layout to', array(
        '@layout' => $old_layout_panels[$id],
      )),
      '#options' => $options,
      '#default_value' => array_key_exists($id, $options) ? $id : $default,
    );
  }
  $form['back'] = array(
    '#type' => 'submit',
    '#value' => t('Back'),
  );
  return $form;
}