You are here

function panelizer_add_revision_info_form in Panelizer 7.3

Same name and namespace in other branches
  1. 7.2 includes/common.inc \panelizer_add_revision_info_form()

Mini form to add revision settings to a panelizer form so that we can properly handle revisioning.

8 calls to panelizer_add_revision_info_form()
panelizer_choose_layout_form in includes/common.inc
panelizer_default_context_form in includes/common.inc
Form to edit contexts that go with a Panelizer display.
panelizer_edit_content_form in includes/common.inc
panelizer_form_panels_change_layout_alter in ./panelizer.module
Implements hook_form_FORM_ID_alter() for panels_change_layout().
panelizer_form_panels_ipe_edit_control_form_alter in ./panelizer.module
Implements hook_form_FORM_ID_alter() for panels_ipe_edit_control_form().

... See full list

File

includes/common.inc, line 157
Contains common forms and routines that different object types use.

Code

function panelizer_add_revision_info_form(&$form, &$form_state) {
  if (empty($form_state['display']->context['panelizer']->data)) {
    return;
  }
  if (empty($form_state['revision info'])) {
    return;
  }
  $entity = $form_state['display']->context['panelizer']->data;
  list($use_revisions, $control_revisions, $default_revision) = $form_state['revision info'];
  if ($use_revisions) {

    // @todo -- what if an entity uses some other flag to control revisioning?
    if (!isset($entity->revision)) {
      $entity->revision = $default_revision;
      $entity->log = '';
    }
    $form_state['use revisions'] = TRUE;
    $form['revision_information'] = array(
      '#weight' => 11,
      '#access' => $control_revisions || $entity->revision,
    );
    $form['revision_information']['revision'] = array(
      '#type' => 'checkbox',
      '#title' => t('Create new revision'),
      '#default_value' => !empty($entity->revision),
      '#id' => 'edit-revision',
      '#access' => $control_revisions,
    );
    $form['revision_information']['log'] = array(
      '#type' => 'textarea',
      '#title' => t('Log message'),
      '#description' => t('Provide an explanation of the changes you are making. This will help other authors understand your motivations.'),
      '#default_value' => $entity->log,
      '#access' => $control_revisions || $entity->revision,
    );
    if ($control_revisions) {
      $form['revision_information']['log']['#dependency'] = array(
        'edit-revision' => array(
          1,
        ),
      );
    }

    // Don't override the existing submit, eh?
    if (!empty($form_state['input']['form_id']) && empty($form['#submit']) && function_exists($form_state['input']['form_id'] . '_submit')) {
      $form['#submit'][] = $form_state['input']['form_id'] . '_submit';
    }

    // The submit handler needs to go in a different location depending on
    // what form this is.
    $submit_handler = 'panelizer_add_revision_info_form_submit';
    if (!empty($form['buttons']['submit']['#submit'])) {
      $form['buttons']['submit']['#submit'][] = $submit_handler;
    }
    elseif (!empty($form['buttons']['return']['#submit'])) {
      $form['buttons']['return']['#submit'][] = $submit_handler;
    }
    elseif (!empty($form['submit']['#submit'])) {
      $form['submit']['#submit'][] = $submit_handler;
    }
    else {
      $form['#submit'][] = $submit_handler;
    }
  }
}