Commit 54475a0f authored by Derek Wright's avatar Derek Wright
Browse files

[#1175556] by cangeceiro, dww: Delete panels from nodes when needed.

- Added hook_node_delete() to clean up when nodes are deleted.
- Added the ability to reset a node to its default panel.
parent 922ee807
Loading
Loading
Loading
Loading
+19 −0
Changes for includes/common.inc: 19 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
 */
function panelizer_settings_form($form, &$form_state) {
  $panelizer = $form_state['panelizer'];
  $node = $form_state['node'];

  $form['no_blocks'] = array(
    '#type' => 'checkbox',
@@ -67,6 +68,14 @@ function panelizer_settings_form($form, &$form_state) {
    '#value' => t('Save'),
  );

  if (panelizer_has_default('node', $node->type) && is_numeric($panelizer->did)) {
    $form['reset'] = array(
      '#type' => 'submit',
      '#value' => t('Reset to default'),
      '#submit' => array('panelizer_settings_form_reset'),
    );
  }

  return $form;
}

@@ -79,8 +88,18 @@ function panelizer_settings_form_submit(&$form, &$form_state) {
  $panelizer->css = $form_state['values']['css'];
  $panelizer->css_id = $form_state['values']['css_id'];
  $panelizer->pipeline = $form_state['values']['pipeline'];
  drupal_set_message(t('The settings have been updated.'));
  panelizer_save_node_panelizer($panelizer);
}

/**
 * Reset panel submit callback
 */
function panelizer_settings_form_reset(&$form, &$form_state) {
  $panelizer = &$form_state['panelizer'];
  panelizer_delete_node_panelizer($panelizer);
  drupal_set_message(t('The node panel has been reset to the default'));
}
/**
 * Form to edit contexts that go with a panelizer panel.
 */
+14 −2
Changes for includes/node.inc: 14 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -91,6 +91,19 @@ function panelizer_save_node_panelizer($panelizer) {
  return drupal_write_record('panelizer_node', $panelizer, $update);
}

/**
 * Delete a panelizer node panel from the database
 */
function panelizer_delete_node_panelizer($panelizer) {
  if (!empty($panelizer->did)) {
    panels_delete_display($panelizer->did);
    db_delete('panelizer_node')
      ->condition('nid', $panelizer->nid)
      ->execute();
  }

}

/**
 * Page to edit basic settings on a panelized node.
 */
@@ -116,14 +129,13 @@ function panelizer_edit_node_settings_page($node) {

  $form_state = array(
    'panelizer' => &$panelizer,
    'node' => $node,
    'no_redirect' => TRUE,
  );

  ctools_include('common', 'panelizer');
  $output = drupal_build_form($form_id, $form_state);
  if (!empty($form_state['executed'])) {
    drupal_set_message(t('The settings have been updated.'));
    panelizer_save_node_panelizer($panelizer);
    drupal_goto($_GET['q']);
  }

+8 −0
Changes for panelizer.module: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -266,6 +266,14 @@ function panelizer_has_no_choice_callback($type, $key) {
  return !empty($settings[$type][$key]['status']) && !empty($settings[$type][$key]['default']) && empty($settings[$type][$key]['choice']);
}

/**
 * Implements hook_node_delete
 */
function panelizer_node_delete($node) {
  $panelizer = panelizer_load_node_panelizer($node);
  panelizer_delete_node_panelizer($panelizer);
}

// ---------------------------------------------------------------------------
// Panelizer object access routines