node_menu
modules/node/node.module, строка 1126
- Версии
- 5
node_menu(
$may_cache)- 6
node_menu()
Реализация hook_menu()
.
Код
<?php
function node_menu($may_cache) {
$items = array();
if ($may_cache) {
$items[] = array('path' => 'admin/content',
'title' => t('Content management'),
'description' => t("Manage your site's content."),
'position' => 'left',
'weight' => -10,
'callback' => 'system_admin_menu_block_page',
'access' => user_access('administer site configuration'),
);
$items[] = array(
'path' => 'admin/content/node',
'title' => t('Content'),
'description' => t("View, edit, and delete your site's content."),
'callback' => 'node_admin_content',
'access' => user_access('administer nodes')
);
$items[] = array('path' => 'admin/content/node/overview', 'title' => t('List'),
'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
if (module_exists('search')) {
$items[] = array('path' => 'admin/content/search', 'title' => t('Search content'),
'description' => t('Search content by keyword.'),
'callback' => 'node_admin_search',
'access' => user_access('administer nodes'),
'type' => MENU_NORMAL_ITEM);
}
$items[] = array(
'path' => 'admin/content/node-settings',
'title' => t('Post settings'),
'description' => t('Control posting behavior, such as teaser length, requiring previews before posting, and the number of posts on the front page.'),
'callback' => 'drupal_get_form',
'callback arguments' => array('node_configure'),
'access' => user_access('administer nodes')
);
$items[] = array(
'path' => 'admin/content/node-settings/rebuild',
'title' => t('rebuild permissions'),
'callback' => 'drupal_get_form',
'callback arguments' => array('node_configure_rebuild_confirm'),
'access' => user_access('administer nodes'),
'type' => MENU_CALLBACK);
$items[] = array(
'path' => 'admin/content/types',
'title' => t('Content types'),
'description' => t('Manage posts by content type, including default status, front page promotion, etc.'),
'callback' => 'node_overview_types',
'access' => user_access('administer content types'),
);
$items[] = array(
'path' => 'admin/content/types/list',
'title' => t('List'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
$items[] = array(
'path' => 'admin/content/types/add',
'title' => t('Add content type'),
'callback' => 'drupal_get_form',
'callback arguments' => array('node_type_form'),
'type' => MENU_LOCAL_TASK,
);
$items[] = array('path' => 'node',
'title' => t('Content'),
'callback' => 'node_page_default',
'access' => user_access('access content'),
'type' => MENU_MODIFIABLE_BY_ADMIN);
$items[] = array('path' => 'node/add',
'title' => t('Create content'),
'callback' => 'node_add',
'access' => user_access('access content'),
'type' => MENU_ITEM_GROUPING,
'weight' => 1);
$items[] = array('path' => 'rss.xml', 'title' => t('RSS feed'),
'callback' => 'node_feed',
'access' => user_access('access content'),
'type' => MENU_CALLBACK);
foreach (node_get_types() as $type) {
if (function_exists($type->module .'_form')) {
$type_url_str = str_replace('_', '-', $type->type);
$items[] = array(
'path' => 'node/add/'. $type_url_str,
'title' => drupal_ucfirst($type->name),
'access' => node_access('create', $type->type),
);
}
}
// Error pages must to be present in the menu cache and be accessible to
// all. More often than not these are individual nodes.
for ($error_code = 403; $error_code <= 404; $error_code++) {
if (preg_match('|^node/(?P<nid>\d+)(?:/view)?$|', drupal_get_normal_path(variable_get('site_'. $error_code, '')), $matches) && ($node = node_load($matches['nid']))) {
$items[] = array(
'path' => 'node/'. $node->nid,
'title' => t('View'),
'callback' => 'node_page_view',
'callback arguments' => array($node),
'access' => TRUE,
'type' => MENU_CALLBACK,
);
}
}
}
else {
// Add the CSS for this module
// We put this in !$may_cache so it's only added once per request
drupal_add_css(drupal_get_path('module', 'node') .'/node.css');
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->nid) {
$items[] = array('path' => 'node/'. arg(1), 'title' => t('View'),
'callback' => 'node_page_view',
'callback arguments' => array($node),
'access' => node_access('view', $node),
'type' => MENU_CALLBACK);
$items[] = array('path' => 'node/'. arg(1) .'/view', 'title' => t('View'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10);
$items[] = array('path' => 'node/'. arg(1) .'/edit', 'title' => t('Edit'),
'callback' => 'node_page_edit',
'callback arguments' => array($node),
'access' => node_access('update', $node),
'weight' => 1,
'type' => MENU_LOCAL_TASK);
$items[] = array('path' => 'node/'. arg(1) .'/delete', 'title' => t('Delete'),
'callback' => 'drupal_get_form',
'callback arguments' => array('node_delete_confirm', $node),
'access' => node_access('delete', $node),
'weight' => 1,
'type' => MENU_CALLBACK);
$revisions_access = ((user_access('view revisions') || user_access('administer nodes')) && node_access('view', $node) && db_result(db_query('SELECT COUNT(vid) FROM {node_revisions} WHERE nid = %d', arg(1))) > 1);
$items[] = array(
'path' => 'node/'. arg(1) .'/revisions',
'title' => t('Revisions'),
'callback' => 'node_revisions',
'access' => $revisions_access,
'weight' => 2,
'type' => MENU_LOCAL_TASK,
);
if (!is_null(arg(3))) {
$items[] = array(
'path' => 'node/'. arg(1) .'/revisions/'. arg(3) .'/delete',
'callback' => 'node_revision_delete',
'callback arguments' => array(arg(1), arg(3)),
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => 'node/'. arg(1) .'/revisions/'. arg(3) .'/revert',
'callback' => 'node_revision_revert',
'callback arguments' => array(arg(1), arg(3)),
'type' => MENU_CALLBACK,
);
}
}
}
// Content type configuration.
if (arg(0) == 'admin' && arg(1) == 'content' && arg(2) == 'types') {
include_once './'. drupal_get_path('module', 'node') .'/content_types.inc';
if (arg(3) != NULL) {
$type_name = arg(3);
$type_name = !empty($type_name) ? str_replace('-', '_', $type_name) : NULL;
$type = node_get_types('type', $type_name);
if (!empty($type)) {
$type_url_str = str_replace('_', '-', $type->type);
$items[] = array(
'path' => 'admin/content/types/'. $type_url_str,
'title' => t($type->name),
'callback' => 'drupal_get_form',
'callback arguments' => array('node_type_form', $type),
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => 'admin/content/types/'. $type_url_str .'/delete',
'title' => t('Delete'),
'callback' => 'drupal_get_form',
'callback arguments' => array('node_type_delete_confirm', $type),
'type' => MENU_CALLBACK,
);
}
}
}
}
return $items;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии