summaryrefslogtreecommitdiff
path: root/modules/system/system.admin.inc
blob: 41ed65edb170e1ccfbc25fe0adee0c74b7c82b54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

/**
 * Provide the administration overview page.
 */
function system_main_admin_page($arg = NULL) {
  // If we received an argument, they probably meant some other page.
  // Let's 404 them since the menu system cannot be told we do not
  // accept arguments.
  if (isset($arg) && substr($arg, 0, 3) != 'by-') {
    return drupal_not_found();
  }

  // Check for status report errors.
  if (system_status(TRUE)) {
    drupal_set_message(t('One or more problems were detected with your Drupal installation. Check the <a href="@status">status report</a> for more information.', array('@status' => url('admin/logs/status'))), 'error');
  }
  $result = db_query("SELECT * FROM {menu_links} ml INNER JOIN {menu_router} m ON ml.router_path = m.path
                      WHERE ml.href like 'admin/%' AND ml.href != 'admin/help' AND ml.depth = 2 AND ml.menu_name = 'navigation'
                      ORDER BY p1 ASC, p2 ASC, p3 ASC");
  while ($item = db_fetch_object($result)) {
    _menu_link_translate($item);
    if (!$item->access) {
      continue;
    }
    $block = (array)$item;
    $block['content'] = '';
    if ($item->block_callback && function_exists($item->block_callback)) {
      $function = $item->block_callback;
      $block['content'] .= $function();
    }
    $block['content'] .= theme('admin_block_content', system_admin_menu_block($item));
    $blocks[] = $block;
  }
  return theme('admin_page', $blocks);
}


/**
 * Provide a single block from the administration menu as a page.
 * This function is often a destination for these blocks.
 * For example, 'admin/content/types' needs to have a destination to be valid
 * in the Drupal menu system, but too much information there might be
 * hidden, so we supply the contents of the block.
 */
function system_admin_menu_block_page() {
  $item = menu_get_item();
  $content = system_admin_menu_block($item);

  $output = theme('admin_block_content', $content);
  return $output;
}