node_page

Definition

node_page()
modules/node.module, line 1677

Description

Menu callback; dispatches control to the appropriate operation handler.

Code

<?php
function node_page() {
  global $user;
  $op = $_POST['op'] ? $_POST['op'] : arg(1);
  $edit = $_POST['edit'];

  if (is_numeric($op)) {
    $op = (arg(2) && !is_numeric(arg(2))) ? arg(2) : 'view';
  }

  switch ($op) {
    case 'feed':
      node_feed();
      return;
    case 'add':
      print theme('page', node_add(arg(2)));
      break;
    case 'edit':
      print theme('page', node_edit(arg(1)));
      break;
    case 'revisions':
      print theme('page', node_revision_overview(arg(1)));
      break;
    case t('Revert'):
    case 'rollback-revision':
      node_revision_rollback(arg(1), arg(3));
      break;
    case t('Delete revision'):
    case 'delete-revision':
      node_revision_delete(arg(1), arg(3));
      break;
    case 'view':
      if (is_numeric(arg(1))) {
        $node = node_load(array('nid' => arg(1)), $_GET['revision']);
        if ($node->nid) {
          drupal_set_title(check_plain($node->title));
          print theme('page', node_show($node, arg(2)));
        }
        else if (db_result(db_query('SELECT nid FROM {node} WHERE nid = %d', arg(1)))) {
          drupal_access_denied();
        }
        else {
          drupal_not_found();
        }
      }
      break;
    case t('Preview'):
      $edit = node_validate($edit);
      drupal_set_title(t('Preview'));
      print theme('page', node_preview($edit));
      break;
    case t('Submit'):
      if ($nid = node_submit($edit)) {
        if (node_access('view', $edit)) {
          drupal_goto('node/'. $nid);
        }
        else if (db_result(db_query('SELECT nid FROM {node} WHERE nid = %d', arg(1)))) {
          drupal_access_denied();
        }
        else {
          drupal_goto();
        }
      }
      else {
        drupal_set_title(t('Submit'));
        print theme('page', node_preview($edit));
      }
      break;
    case 'delete':
    case t('Delete'):
      $edit['nid'] = $edit['nid'] ? $edit['nid'] : arg(1);
      $node = node_load(array('nid' => $edit['nid']));
      $breadcrumb[] = array('path' => 'node/'. $edit['nid'], 'title' => $node->title);
      $breadcrumb[] = array('path' => 'node/'. arg(1) .'/delete', 'title' => t('delete'));
      menu_set_location($breadcrumb);

      $output = node_delete($edit);
      if (!$output) {
        drupal_set_message(t('The node has been deleted.'));
        drupal_goto('admin/node');
      }
      print theme('page', node_delete($edit));
      break;
    default:
      drupal_set_title('');
      print theme('page', node_page_default());
  }
}
?>
 
 

All source code and documentation on this site is released under the terms of the GNU General Public License, version 2 and later. Drupal is a registered trademark of Dries Buytaert.