? admin-handbook-style-expert.png ? admin-handbook-style.png ? admin-handbook-style2.png.png ? admin-screenshot.png ? admin_page.patch ? administer - drupal1154113754559.png ? backup.admin_page.patch ? modules/devel ? sites/test2.logrus.com ? sites/test3.logrus.com ? themes/admin Index: CHANGELOG.txt =================================================================== RCS file: /cvs/drupal/drupal/CHANGELOG.txt,v retrieving revision 1.136 diff -u -p -r1.136 CHANGELOG.txt --- CHANGELOG.txt 27 Jul 2006 08:01:57 -0000 1.136 +++ CHANGELOG.txt 30 Jul 2006 20:21:17 -0000 @@ -2,6 +2,8 @@ Drupal x.x.x, xxxx-xx-xx (development version) ------------------------ +- completely retooled the administration page + * /admin now contains an administration page which may be themed - added web-based installer which can: * automatically generate the database configuration file * install pre-made 'install profiles' or distributions Index: includes/locale.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/locale.inc,v retrieving revision 1.82 diff -u -p -r1.82 locale.inc --- includes/locale.inc 29 Jul 2006 17:56:41 -0000 1.82 +++ includes/locale.inc 30 Jul 2006 20:21:19 -0000 @@ -86,7 +86,7 @@ function theme_locale_admin_manage_scree foreach ($form['name'] as $key => $element) { // Do not take form control structures. if (is_array($element) && element_child($key)) { - $rows[] = array(check_plain($key), form_render($form['name'][$key]), form_render($form['enabled'][$key]), form_render($form['site_default'][$key]), ($key != 'en' ? form_render($form['translation'][$key]) : t('n/a')), ($key != 'en' ? l(t('delete'), 'admin/locale/language/delete/'. $key) : '')); + $rows[] = array(check_plain($key), form_render($form['name'][$key]), form_render($form['enabled'][$key]), form_render($form['site_default'][$key]), ($key != 'en' ? form_render($form['translation'][$key]) : t('n/a')), ($key != 'en' ? l(t('delete'), 'admin/settings/locale/language/delete/'. $key) : '')); } } $header = array(array('data' => t('Code')), array('data' => t('English name')), array('data' => t('Enabled')), array('data' => t('Default')), array('data' => t('Translated')), array('data' => t('Operations'))); @@ -120,7 +120,7 @@ function _locale_admin_manage_screen_sub // Changing the locale settings impacts the interface: cache_clear_all(); - return 'admin/locale/language/overview'; + return 'admin/settings/locale/language/overview'; } /** @@ -377,7 +377,7 @@ function _locale_string_edit($lid) { // Handle erroneous lid. if (!isset($orig)){ drupal_set_message(t('String not found.')); - drupal_goto('admin/locale/string/search'); + drupal_goto('admin/settings/locale/string/search'); } // Add original text. Assign negative weight so that it floats to the top. @@ -424,7 +424,7 @@ function _locale_string_edit_submit($for // Rebuild the menu, strings may have changed. menu_rebuild(); - return 'admin/locale/string/search'; + return 'admin/settings/locale/string/search'; } /** @@ -436,7 +436,7 @@ function _locale_string_delete($lid) { locale_refresh_cache(); drupal_set_message(t('The string has been removed.')); - drupal_goto('admin/locale/string/search'); + drupal_goto('admin/settings/locale/string/search'); } /** @@ -1314,7 +1314,7 @@ function _locale_string_seek() { $arr[$locale->lid]['source'] = $locale->source; } foreach ($arr as $lid => $value) { - $rows[] = array(array('data' => check_plain(truncate_utf8($value['source'], 150, FALSE, TRUE)) .'
'. $value['location'] .''), array('data' => _locale_string_language_list($value['locales']), 'align' => 'center'), array('data' => l(t('edit'), "admin/locale/string/edit/$lid"), 'class' => 'nowrap'), array('data' => l(t('delete'), "admin/locale/string/delete/$lid"), 'class' => 'nowrap')); + $rows[] = array(array('data' => check_plain(truncate_utf8($value['source'], 150, FALSE, TRUE)) .'
'. $value['location'] .''), array('data' => _locale_string_language_list($value['locales']), 'align' => 'center'), array('data' => l(t('edit'), "admin/settings/locale/string/edit/$lid"), 'class' => 'nowrap'), array('data' => l(t('delete'), "admin/settings/locale/string/delete/$lid"), 'class' => 'nowrap')); } $request = array(); Index: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.131 diff -u -p -r1.131 menu.inc --- includes/menu.inc 13 Jul 2006 05:32:22 -0000 1.131 +++ includes/menu.inc 30 Jul 2006 20:21:20 -0000 @@ -866,11 +866,11 @@ function menu_primary_links($start_level } } - // Special case - provide link to admin/menu if primary links is empty. + // Special case - provide link to admin/build/menu if primary links is empty. if (empty($links) && $start_level == 1 && $pid == variable_get('menu_primary_menu', 0)) { $links['1-1'] = array( 'title' => t('edit primary links'), - 'href' => 'admin/menu' + 'href' => 'admin/build/menu' ); } Index: misc/drupal.css =================================================================== RCS file: /cvs/drupal/drupal/misc/drupal.css,v retrieving revision 1.151 diff -u -p -r1.151 drupal.css --- misc/drupal.css 30 Jun 2006 00:13:32 -0000 1.151 +++ misc/drupal.css 30 Jul 2006 20:21:20 -0000 @@ -674,3 +674,59 @@ html.js fieldset.collapsed legend a { display: block; padding: 1.5em 0 .5em; } + + +/* +** formatting for administration page -- this should probably be its own file +*/ +div.admin-panel { + margin: 0px 0px 0px 0px; + padding: 5px 5px 15px 5px; +} + +div.admin-panel .desc { + margin: 0px 0px 3px; + padding: 2px 0 3px 0; + font-size: 10px; + line-height: 10px; + font-weight: normal; + text-align: left; + color: #999; + border-bottom: 1px solid #777777; +} + +div.admin-panel .body { + padding: 0 4px 2px 8px; + background-color: #f4f4f4; + line-height: 1.2em; +} + +div.admin-panel .head { + background-color: #6699CC; + color: #FFFFFF; + font-weight: bold; + font-size: 14px; + margin: 0px 0px 0px 0px; + padding: 4px 4px 4px 8px; +} + +div.admin { + padding-top: 15px; +} + +div.admin .left { + float: left; + width: 47%; + margin-left: 1em; +} +div.admin .right { + float: right; + width: 47%; + margin-right: 1em; +} + +div.admin .expert-link { + text-align: right; + margin-right: 1em; + padding-right: 4px; +} \ No newline at end of file Index: modules/aggregator/aggregator.module =================================================================== RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v retrieving revision 1.291 diff -u -p -r1.291 aggregator.module --- modules/aggregator/aggregator.module 27 Jul 2006 08:17:21 -0000 1.291 +++ modules/aggregator/aggregator.module 30 Jul 2006 20:21:22 -0000 @@ -13,7 +13,7 @@ function aggregator_help($section) { switch ($section) { case 'admin/help#aggregator': $output = '

'. t('The news aggregator is a powerful on-site RSS syndicator/news reader that can gather fresh content from news sites and weblogs around the web.') .'

'; - $output .= '

'. t('Users can view the latest news chronologically in the main news aggregator display or by source. Administrators can add, edit and delete feeds and choose how often to check for newly updated news for each individual feed. Administrators can also tag individual feeds with categories, offering selective grouping of some feeds into separate displays. Listings of the latest news for individual sources or categorized sources can be enabled as blocks for display in the sidebar through the block administration page. The news aggregator requires cron to check for the latest news from the sites to which you have subscribed. Drupal also provides a machine-readable OPML file of all of your subscribed feeds.', array('%aggregator' => url('aggregator'), '%aggregator-sources' => url('aggregator/sources'), '%admin-block' => url('admin/block'), '%aggregator-opml' => url('aggregator/opml'))) .'

'; + $output .= '

'. t('Users can view the latest news chronologically in the main news aggregator display or by source. Administrators can add, edit and delete feeds and choose how often to check for newly updated news for each individual feed. Administrators can also tag individual feeds with categories, offering selective grouping of some feeds into separate displays. Listings of the latest news for individual sources or categorized sources can be enabled as blocks for display in the sidebar through the block administration page. The news aggregator requires cron to check for the latest news from the sites to which you have subscribed. Drupal also provides a machine-readable OPML file of all of your subscribed feeds.', array('%aggregator' => url('aggregator'), '%aggregator-sources' => url('aggregator/sources'), '%admin-block' => url('admin/build/block'), '%aggregator-opml' => url('aggregator/opml'))) .'

'; $output .= t('

You can

-', array('%admin-aggregator' => url('admin/aggregator'), '%admin-aggregator-add-feed' => url('admin/aggregator/add/feed'), '%admin-aggregator-add-category' => url('admin/aggregator/add/category'), '%admin-settings-aggregator' => url('admin/settings/aggregator'), '%admin-access' => url('admin/access'), '%aggregator' => url('aggregator'))); +', array('%admin-aggregator' => url('admin/content/aggregator'), '%admin-aggregator-add-feed' => url('admin/content/aggregator/add/feed'), '%admin-aggregator-add-category' => url('admin/content/aggregator/add/category'), '%admin-settings-aggregator' => url('admin/settings/aggregator'), '%admin-access' => url('admin/access'), '%aggregator' => url('aggregator'))); $output .= '

'. t('For more information please read the configuration and customization handbook Aggregator page.', array('%aggregator' => 'http://drupal.org/handbook/modules/aggregator/')) .'

'; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Aggregates syndicated content (RSS, RDF, and Atom feeds).'); - case 'admin/aggregator': - return t('

Thousands of sites (particularly news sites and weblogs) publish their latest headlines and/or stories in a machine-readable format so that other sites can easily link to them. This content is usually in the form of an RSS feed (which is an XML-based syndication standard). To display the feed or category in a block you must decide how many items to show by editing the feed or block and turning on the feed\'s block.

', array('%block' => url('admin/block'))); - case 'admin/aggregator/add/feed': + case 'admin/content/aggregator': + return t('

Thousands of sites (particularly news sites and weblogs) publish their latest headlines and/or stories in a machine-readable format so that other sites can easily link to them. This content is usually in the form of an RSS feed (which is an XML-based syndication standard). To display the feed or category in a block you must decide how many items to show by editing the feed or block and turning on the feed\'s block.

', array('%block' => url('admin/build/block'))); + case 'admin/content/aggregator/add/feed': return t('

Add a site that has an RSS/RDF/Atom feed. The URL is the full path to the feed file. For the feed to update automatically you must run "cron.php" on a regular basis. If you already have a feed with the URL you are planning to use, the system will not accept another feed with the same URL.

'); - case 'admin/aggregator/add/category': + case 'admin/content/aggregator/add/category': return t('

Categories provide a way to group items from different news feeds together. Each news category has its own feed page and block. For example, you could tag various sport-related feeds as belonging to a category called Sports. News items can be added to a category automatically by setting a feed to automatically place its item into that category, or by using the categorize items link in any listing of news items.

'); } } @@ -47,38 +47,40 @@ function aggregator_menu($may_cache) { $view = user_access('access news feeds'); if ($may_cache) { - $items[] = array('path' => 'admin/aggregator', - 'title' => t('aggregator'), + $items[] = array('path' => 'admin/content/aggregator', + 'title' => t('RSS aggregator'), + 'description' => t('Configure which content your site aggregates from other sites, how often it polls them, and how they\'re categorized.'), 'callback' => 'aggregator_admin_overview', 'access' => $edit); - $items[] = array('path' => 'admin/aggregator/add/feed', + $items[] = array('path' => 'admin/content/aggregator/add/feed', 'title' => t('add feed'), 'callback' => 'aggregator_form_feed', 'access' => $edit, 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/aggregator/add/category', + $items[] = array('path' => 'admin/content/aggregator/add/category', 'title' => t('add category'), 'callback' => 'aggregator_form_category', 'access' => $edit, 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/aggregator/remove', + $items[] = array('path' => 'admin/content/aggregator/remove', 'title' => t('remove items'), 'callback' => 'aggregator_admin_remove_feed', 'access' => $edit, 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/aggregator/update', + $items[] = array('path' => 'admin/content/aggregator/update', 'title' => t('update items'), 'callback' => 'aggregator_admin_refresh_feed', 'access' => $edit, 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/aggregator/list', + $items[] = array('path' => 'admin/content/aggregator/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/settings/aggregator', - 'title' => t('RSS aggregator'), + $items[] = array('path' => 'admin/content/aggregator/settings', + 'title' => t('settings'), 'callback' => 'aggregator_admin_settings', - 'type' => MENU_NORMAL_ITEM, + 'type' => MENU_LOCAL_TASK, + 'weight' => 10, 'access' => $edit); $items[] = array('path' => 'aggregator', @@ -168,7 +170,7 @@ function aggregator_menu($may_cache) { if (arg(3) == 'feed') { $feed = aggregator_get_feed(arg(4)); if ($feed) { - $items[] = array('path' => 'admin/aggregator/edit/feed/'. $feed['fid'], + $items[] = array('path' => 'admin/content/aggregator/edit/feed/'. $feed['fid'], 'title' => t('edit feed'), 'callback' => 'aggregator_form_feed', 'callback arguments' => array($feed), @@ -179,7 +181,7 @@ function aggregator_menu($may_cache) { else { $category = aggregator_get_category(arg(4)); if ($category) { - $items[] = array('path' => 'admin/aggregator/edit/category/'. $category['cid'], + $items[] = array('path' => 'admin/content/aggregator/edit/category/'. $category['cid'], 'title' => t('edit category'), 'callback' => 'aggregator_form_category', 'callback arguments' => array($category), @@ -367,7 +369,7 @@ function aggregator_form_category_submit if (isset($form_values['title'])) { drupal_set_message(t('The category %category has been updated.', array('%category' => theme('placeholder', $form_values['title'])))); if (arg(0) == 'admin') { - return 'admin/aggregator/'; + return 'admin/content/aggregator/'; } else { return 'aggregator/categories/'. $form_values['cid']; @@ -377,7 +379,7 @@ function aggregator_form_category_submit watchdog('aggregator', t('Category %category deleted.', array('%category' => theme('placeholder', $title)))); drupal_set_message(t('The category %category has been deleted.', array('%category' => theme('placeholder', $title)))); if (arg(0) == 'admin') { - return 'admin/aggregator/'; + return 'admin/content/aggregator/'; } else { return 'aggregator/categories/'; @@ -385,7 +387,7 @@ function aggregator_form_category_submit } } else { - watchdog('aggregator', t('Category %category added.', array('%category' => theme('placeholder', $form_values['title']))), WATCHDOG_NOTICE, l(t('view'), 'admin/aggregator')); + watchdog('aggregator', t('Category %category added.', array('%category' => theme('placeholder', $form_values['title']))), WATCHDOG_NOTICE, l(t('view'), 'admin/content/aggregator')); drupal_set_message(t('The category %category has been added.', array('%category' => theme('placeholder', $form_values['title'])))); } } @@ -500,7 +502,7 @@ function aggregator_form_feed_submit($fo if (isset($form_values['title'])) { drupal_set_message(t('The feed %feed has been updated.', array('%feed' => theme('placeholder', $form_values['title'])))); if (arg(0) == 'admin') { - return 'admin/aggregator/'; + return 'admin/content/aggregator/'; } else { return 'aggregator/sources/'. $form_values['fid']; @@ -510,7 +512,7 @@ function aggregator_form_feed_submit($fo watchdog('aggregator', t('Feed %feed deleted.', array('%feed' => theme('placeholder', $title)))); drupal_set_message(t('The feed %feed has been deleted.', array('%feed' => theme('placeholder', $title)))); if (arg(0) == 'admin') { - return 'admin/aggregator/'; + return 'admin/content/aggregator/'; } else { return 'aggregator/sources/'; @@ -518,7 +520,7 @@ function aggregator_form_feed_submit($fo } } else { - watchdog('aggregator', t('Feed %feed added.', array('%feed' => theme('placeholder', $form_values['title']))), WATCHDOG_NOTICE, l(t('view'), 'admin/aggregator')); + watchdog('aggregator', t('Feed %feed added.', array('%feed' => theme('placeholder', $form_values['title']))), WATCHDOG_NOTICE, l(t('view'), 'admin/content/aggregator')); drupal_set_message(t('The feed %feed has been added.', array('%feed' => theme('placeholder', $form_values['title'])))); } } @@ -974,7 +976,7 @@ function aggregator_view() { $header = array(t('Title'), t('Items'), t('Last update'), t('Next update'), array('data' => t('Operations'), 'colspan' => '3')); $rows = array(); while ($feed = db_fetch_object($result)) { - $rows[] = array(l($feed->title, "aggregator/sources/$feed->fid"), format_plural($feed->items, '1 item', '%count items'), ($feed->checked ? t('%time ago', array('%time' => format_interval(time() - $feed->checked))) : t('never')), ($feed->checked ? t('%time left', array('%time' => format_interval($feed->checked + $feed->refresh - time()))) : t('never')), l(t('edit'), "admin/aggregator/edit/feed/$feed->fid"), l(t('remove items'), "admin/aggregator/remove/$feed->fid"), l(t('update items'), "admin/aggregator/update/$feed->fid")); + $rows[] = array(l($feed->title, "aggregator/sources/$feed->fid"), format_plural($feed->items, '1 item', '%count items'), ($feed->checked ? t('%time ago', array('%time' => format_interval(time() - $feed->checked))) : t('never')), ($feed->checked ? t('%time left', array('%time' => format_interval($feed->checked + $feed->refresh - time()))) : t('never')), l(t('edit'), "admin/content/aggregator/edit/feed/$feed->fid"), l(t('remove items'), "admin/content/aggregator/remove/$feed->fid"), l(t('update items'), "admin/content/aggregator/update/$feed->fid")); } $output .= theme('table', $header, $rows); @@ -985,7 +987,7 @@ function aggregator_view() { $header = array(t('Title'), t('Items'), t('Operations')); $rows = array(); while ($category = db_fetch_object($result)) { - $rows[] = array(l($category->title, "aggregator/categories/$category->cid"), format_plural($category->items, '1 item', '%count items'), l(t('edit'), "admin/aggregator/edit/category/$category->cid")); + $rows[] = array(l($category->title, "aggregator/categories/$category->cid"), format_plural($category->items, '1 item', '%count items'), l(t('edit'), "admin/content/aggregator/edit/category/$category->cid")); } $output .= theme('table', $header, $rows); @@ -997,7 +999,7 @@ function aggregator_view() { */ function aggregator_admin_remove_feed($feed) { aggregator_remove(aggregator_get_feed($feed)); - drupal_goto('admin/aggregator'); + drupal_goto('admin/content/aggregator'); } /** @@ -1005,7 +1007,7 @@ function aggregator_admin_remove_feed($f */ function aggregator_admin_refresh_feed($feed) { aggregator_refresh(aggregator_get_feed($feed)); - drupal_goto('admin/aggregator'); + drupal_goto('admin/content/aggregator'); } /** @@ -1290,7 +1292,7 @@ function theme_aggregator_feed($feed) { } if (user_access('administer news feeds')) { - $updated = l($updated, 'admin/aggregator'); + $updated = l($updated, 'admin/content/aggregator'); } $output .= '
'. t('Updated:') . " $updated
"; Index: modules/archive/archive.module =================================================================== RCS file: /cvs/drupal/drupal/modules/archive/archive.module,v retrieving revision 1.89 diff -u -p -r1.89 archive.module --- modules/archive/archive.module 5 Jun 2006 09:32:46 -0000 1.89 +++ modules/archive/archive.module 30 Jul 2006 20:21:23 -0000 @@ -19,10 +19,10 @@ function archive_help($section) {
  • view your archive by day.
  • enable the browse archives block at administer >> block.
  • -', array('%archive' => url('archive'), '%admin-block' => url('admin/block'))); +', array('%archive' => url('archive'), '%admin-block' => url('admin/build/block'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Archive page.', array('%archive' => 'http://drupal.org/handbook/modules/archive/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Displays a calendar for navigating older content.'); } } Index: modules/block/block.module =================================================================== RCS file: /cvs/drupal/drupal/modules/block/block.module,v retrieving revision 1.210 diff -u -p -r1.210 block.module --- modules/block/block.module 2 Jul 2006 20:06:31 -0000 1.210 +++ modules/block/block.module 30 Jul 2006 20:21:24 -0000 @@ -27,7 +27,7 @@ function block_help($section) { '); $output .= '

    '. t('Module blocks') .'

    '; - $output .= '

    '. t('Some modules generate blocks that become available when the modules are enabled. These blocks can be administered via the blocks administration page.

    ', array('%admin-block' => url('admin/block'))) .'

    '; + $output .= '

    '. t('Some modules generate blocks that become available when the modules are enabled. These blocks can be administered via the blocks administration page.

    ', array('%admin-block' => url('admin/build/block'))) .'

    '; $output .= '

    '. t('Administrator defined blocks') .'

    '; $output .= '

    '. t('Administrators can also define custom blocks. These blocks consist of a title, a description, and a body which can be as long as you wish. Block content can be in any of the input formats supported for other content.') .'

    '; $output .= t('

    You can

    @@ -35,20 +35,20 @@ function block_help($section) {
  • enable, throttle and configure blocks at administer >> blocks.
  • add an administrator-defined block at administer >> blocks >> add block.
  • -', array('%admin-block' => url('admin/block'), '%admin-block-add' => url('admin/block/add'))); +', array('%admin-block' => url('admin/build/block'), '%admin-block-add' => url('admin/build/block/add'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Block page.', array('%block' => 'http://drupal.org/handbook/modules/block/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Controls the boxes that are displayed around the main content.'); - case 'admin/block': + case 'admin/build/block': return t("

    Blocks are boxes of content that may be rendered into certain regions of your web pages, for example, into sidebars. They are usually generated automatically by modules, but administrators can create blocks manually.

    Only enabled blocks are shown. You can position blocks by specifying which area of the page they should appear in (e.g., a sidebar). Highlighted labels on this page show the regions into which blocks can be rendered. You can specify where within a region a block will appear by adjusting its weight.

    If you want certain blocks to disable themselves temporarily during high server loads, check the 'Throttle' box. You can configure the auto-throttle on the throttle configuration page after having enabled the throttle module.

    You can configure the behaviour of each block (for example, specifying on which pages and for what users it will appear) by clicking the 'configure' link for each block.

    ", array('%throttle' => url('admin/settings/throttle'))); - case 'admin/block/add': - return t('

    Here you can create a new block. Once you have created this block you must make it active and give it a place on the page using blocks. The title is used when displaying the block. The description is used in the "block" column on the blocks page.

    ', array('%overview' => url('admin/block'))); + case 'admin/build/block/add': + return t('

    Here you can create a new block. Once you have created this block you must make it active and give it a place on the page using blocks. The title is used when displaying the block. The description is used in the "block" column on the blocks page.

    ', array('%overview' => url('admin/build/block'))); } } @@ -66,31 +66,34 @@ function block_menu($may_cache) { $items = array(); if ($may_cache) { - $items[] = array('path' => 'admin/block', 'title' => t('blocks'), + $items[] = array( + 'path' => 'admin/build/block', + 'title' => t('blocks'), 'access' => user_access('administer blocks'), + 'description' => t('Configure what block content appears in your site\'s sidebars and other regions.'), 'callback' => 'block_admin_display'); - $items[] = array('path' => 'admin/block/list', 'title' => t('list'), + $items[] = array('path' => 'admin/build/block/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/block/configure', 'title' => t('configure block'), + $items[] = array('path' => 'admin/build/block/configure', 'title' => t('configure block'), 'access' => user_access('administer blocks'), 'callback' => 'block_admin_configure', 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/block/delete', 'title' => t('delete block'), + $items[] = array('path' => 'admin/build/block/delete', 'title' => t('delete block'), 'access' => user_access('administer blocks'), 'callback' => 'block_box_delete', 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/block/add', 'title' => t('add block'), + $items[] = array('path' => 'admin/build/block/add', 'title' => t('add block'), 'access' => user_access('administer blocks'), 'callback' => 'block_box_add', 'type' => MENU_LOCAL_TASK); foreach (list_themes() as $key => $theme) { if ($theme->status) { if ($key == variable_get('theme_default', 'bluemarine')) { - $items[] = array('path' => 'admin/block/list/' . $key, 'title' => t('%key settings', array('%key' => $key)), + $items[] = array('path' => 'admin/build/block/list/' . $key, 'title' => t('%key settings', array('%key' => $key)), 'access' => user_access('administer blocks'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); } else { - $items[] = array('path' => 'admin/block/list/' . $key, 'title' => t('%key settings', array('%key' => $key)), + $items[] = array('path' => 'admin/build/block/list/' . $key, 'title' => t('%key settings', array('%key' => $key)), 'access' => user_access('administer blocks'), 'type' => MENU_LOCAL_TASK); } } @@ -193,12 +196,12 @@ function _block_rehash() { /** * Generate main block administration form. */ -function block_admin_display() { +function block_admin_display($theme = NULL) { global $theme_key, $custom_theme; // If non-default theme configuration has been selected, set the custom theme. - if (arg(3)) { - $custom_theme = arg(3); + if ($theme) { + $custom_theme = $theme; } else { $custom_theme = variable_get('theme_default', 'bluemarine'); @@ -213,7 +216,7 @@ function block_admin_display() { $block_regions = system_region_list($theme_key); // Build form tree - $form['#action'] = arg(3) ? url('admin/block/list/' . $theme_key) : url('admin/block'); + $form['#action'] = arg(3) ? url('admin/build/block/list/' . $theme_key) : url('admin/build/block'); $form['#tree'] = TRUE; foreach ($blocks as $i => $block) { $form[$i]['module'] = array('#type' => 'value', '#value' => $block['module']); @@ -230,9 +233,9 @@ function block_admin_display() { if ($throttle) { $form[$i]['throttle'] = array('#type' => 'checkbox', '#default_value' => $block['throttle']); } - $form[$i]['configure'] = array('#value' => l(t('configure'), 'admin/block/configure/'. $block['module'] .'/'. $block['delta'])); + $form[$i]['configure'] = array('#value' => l(t('configure'), 'admin/build/block/configure/'. $block['module'] .'/'. $block['delta'])); if ($block['module'] == 'block') { - $form[$i]['delete'] = array('#value' => l(t('delete'), 'admin/block/delete/'. $block['delta'])); + $form[$i]['delete'] = array('#value' => l(t('delete'), 'admin/build/block/delete/'. $block['delta'])); } } $form['submit'] = array('#type' => 'submit', '#value' => t('Save blocks')); @@ -241,7 +244,7 @@ function block_admin_display() { } /** - * Helper function for sorting blocks on admin/block. + * Helper function for sorting blocks on admin/build/block. * * Active blocks are sorted by region, then by weight. * Disabled blocks are sorted by name. @@ -481,7 +484,7 @@ function block_admin_configure_submit($f module_invoke($form_values['module'], 'block', 'save', $form_values['delta'], $form_values); drupal_set_message(t('The block configuration has been saved.')); cache_clear_all(); - return 'admin/block'; + return 'admin/build/block'; } } @@ -505,7 +508,7 @@ function block_box_add_submit($form_id, if (!form_get_errors()) { if (block_box_save($form_values)) { drupal_set_message(t('The block has been created.')); - return 'admin/block'; + return 'admin/build/block'; } } } @@ -518,7 +521,7 @@ function block_box_delete($bid = 0) { $form['info'] = array('#type' => 'hidden', '#value' => $box['info'] ? $box['info'] : $box['title']); $form['bid'] = array('#type' => 'hidden', '#value' => $bid); - return confirm_form('block_box_delete_confirm', $form, t('Are you sure you want to delete the block %name?', array('%name' => theme('placeholder', $box['info']))), 'admin/block', '', t('Delete'), t('Cancel')); + return confirm_form('block_box_delete_confirm', $form, t('Are you sure you want to delete the block %name?', array('%name' => theme('placeholder', $box['info']))), 'admin/build/block', '', t('Delete'), t('Cancel')); } /** @@ -528,7 +531,7 @@ function block_box_delete_confirm_submit db_query('DELETE FROM {boxes} WHERE bid = %d', $form_values['bid']); drupal_set_message(t('The block %name has been removed.', array('%name' => theme('placeholder', $form_values['info'])))); cache_clear_all(); - return 'admin/block'; + return 'admin/build/block'; }; function block_box_form($edit = array()) { @@ -537,7 +540,7 @@ function block_box_form($edit = array()) '#title' => t('Block description'), '#default_value' => $edit['info'], '#maxlength' => 64, - '#description' => t('A brief description of your block. Used on the block overview page.', array('%overview' => url('admin/block'))), + '#description' => t('A brief description of your block. Used on the block overview page.', array('%overview' => url('admin/build/block'))), '#required' => TRUE, '#weight' => -19, ); Index: modules/blog/blog.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blog/blog.module,v retrieving revision 1.252 diff -u -p -r1.252 blog.module --- modules/blog/blog.module 27 Jul 2006 08:07:04 -0000 1.252 +++ modules/blog/blog.module 30 Jul 2006 20:21:24 -0000 @@ -67,10 +67,10 @@ function blog_help($section) {
  • administer blog api at administer >> settings >> blogapi.
  • enable the "recent blog posts" block at administer >> blocks to show the 10 most recent blog posts.
  • -', array('%user' => url('user'), '%node-add-blog' => url('node/add/blog'), '%admin-node-configure-types-blog' => url('admin/settings/content-types/blog'), '%admin-settings-blogapi' => url('admin/settings/blogapi'), '%admin-block' => url('admin/block'))); +', array('%user' => url('user'), '%node-add-blog' => url('node/add/blog'), '%admin-node-configure-types-blog' => url('admin/content/types/blog'), '%admin-settings-blogapi' => url('admin/settings/blogapi'), '%admin-block' => url('admin/build/block'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Blog page.', array('%blog' => 'http://drupal.org/handbook/modules/blog/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Enables keeping an easily and regularly updated web page or a blog.'); case 'node/add#blog': return t("A blog is a regularly updated journal or diary made up of individual posts shown in reversed chronological order. Each member of the site may create and maintain a blog."); Index: modules/blogapi/blogapi.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.module,v retrieving revision 1.88 diff -u -p -r1.88 blogapi.module --- modules/blogapi/blogapi.module 29 Jul 2006 17:56:41 -0000 1.88 +++ modules/blogapi/blogapi.module 30 Jul 2006 20:21:25 -0000 @@ -23,7 +23,7 @@ function blogapi_help($section) { ', array('%file-xmlrpc' => 'xmlrpc.php', '%admin-settings-blogapi' => url('admin/settings/blogapi'))); $output .= '

    '. t('For more information please read the configuration and customization handbook BlogApi page.', array('%blogapi' => 'http://drupal.org/handbook/modules/blogapi/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Allows users to post content using applications that support XML-RPC blog APIs.'); } } @@ -587,6 +587,7 @@ function blogapi_menu($may_cache) { $items[] = array( 'path' => 'admin/settings/blogapi', 'title' => t('blog APIs'), + 'description' => t('Configure which content types and engines external blog clients can use.'), 'callback' => 'blogapi_admin_settings', 'access' => user_access('administer site configuration'), 'type' => MENU_NORMAL_ITEM Index: modules/book/book.module =================================================================== RCS file: /cvs/drupal/drupal/modules/book/book.module,v retrieving revision 1.375 diff -u -p -r1.375 book.module --- modules/book/book.module 19 Jul 2006 07:15:34 -0000 1.375 +++ modules/book/book.module 30 Jul 2006 20:21:26 -0000 @@ -88,18 +88,17 @@ function book_menu($may_cache) { 'title' => t('book page'), 'access' => user_access('create book pages')); $items[] = array( - 'path' => 'admin/node/book', + 'path' => 'admin/content/book', 'title' => t('books'), + 'description' => t('Manage site\'s books and orphaned book pages.'), 'callback' => 'book_admin', - 'access' => user_access('administer nodes'), - 'type' => MENU_LOCAL_TASK, - 'weight' => -1); + 'access' => user_access('administer nodes')); $items[] = array( - 'path' => 'admin/node/book/list', + 'path' => 'admin/content/book/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK); $items[] = array( - 'path' => 'admin/node/book/orphan', + 'path' => 'admin/content/book/orphan', 'title' => t('orphan pages'), 'callback' => 'book_admin_orphan', 'type' => MENU_LOCAL_TASK, @@ -873,7 +872,7 @@ function theme_book_admin_table($form) { form_render($form[$key]['weight']), l(t('view'), 'node/'. $nid), l(t('edit'), 'node/'. $nid .'/edit'), - l(t('delete'), 'node/'. $nid .'/delete', NULL, 'destination=admin/node/book'. (arg(3) == 'orphan' ? '/orphan' : '') . ($pid != $nid ? '/'.$pid : '')) + l(t('delete'), 'node/'. $nid .'/delete', NULL, 'destination=admin/content/book'. (arg(3) == 'orphan' ? '/orphan' : '') . ($pid != $nid ? '/'.$pid : '')) ); } @@ -980,7 +979,7 @@ function book_admin($nid = 0) { function book_admin_overview() { $result = db_query(db_rewrite_sql('SELECT n.nid, n.title, b.weight FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE b.parent = 0 ORDER BY b.weight, n.title')); while ($book = db_fetch_object($result)) { - $rows[] = array(l($book->title, "node/$book->nid"), l(t('outline'), "admin/node/book/$book->nid")); + $rows[] = array(l($book->title, "node/$book->nid"), l(t('outline'), "admin/content/book/$book->nid")); } $headers = array(t('Book'), t('Operations')); @@ -994,7 +993,7 @@ function book_help($section) { switch ($section) { case 'admin/help#book': $output = '

    '. t('The book content type is suited for creating structured, multi-page hypertexts such as site resource guides, manuals, and Frequently Asked Questions (FAQs). It permits a document to have chapters, sections, subsections, etc. Authors with suitable permissions can add pages to a collaborative book, placing them into the existing document by adding them to a table of contents menu. ') .'

    '; - $output .= '

    '. t('Books have additional previous, up, and next navigation elements at the bottom of each page for moving through the text. Additional navigation may be provided by enabling the book navigation block on the block administration page.', array('%admin-block' => url('admin/block'))) .'

    '; + $output .= '

    '. t('Books have additional previous, up, and next navigation elements at the bottom of each page for moving through the text. Additional navigation may be provided by enabling the book navigation block on the block administration page.', array('%admin-block' => url('admin/build/block'))) .'

    '; $output .= '

    '. t('Users can select the printer-friendly version link visible at the bottom of a book page to generate a printer-friendly display of the page and all of its subsections. ') .'

    '; $output .= '

    '. t('Administrators can view a book outline, from which is it possible to change the titles of sections, and their weight (thus reordering sections). From this outline, it is also possible to edit and/or delete book pages. Many content types besides pages (for example, blog entries, stories, and polls) can be added to a collaborative book by choosing the outline tab when viewing the post.') .'

    '; $output .= t('

    You can

    @@ -1005,14 +1004,14 @@ function book_help($section) {
  • enable the book navigation block: administer >> blocks.
  • control who can create, edit, and outline posts in books by setting access permissions: administer >> access control.
  • -', array('%node-add-book' => url('node/add/book'), '%admin-node-book' => url('admin/node/book'), '%admin-settings-content-types-book-page' => url('admin/settings/content-types/book'), '%admin-block' => url('admin/block'), '%admin-access' => url('admin/access'))); +', array('%node-add-book' => url('node/add/book'), '%admin-node-book' => url('admin/content/book'), '%admin-settings-content-types-book-page' => url('admin/content/types/book'), '%admin-block' => url('admin/build/block'), '%admin-access' => url('admin/access'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Book page.', array('%book' => 'http://drupal.org/handbook/modules/book/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Allows users to collaboratively author a book.'); - case 'admin/node/book': + case 'admin/content/book': return t('

    The book module offers a means to organize content, authored by many users, in an online manual, outline or FAQ.

    '); - case 'admin/node/book/orphan': + case 'admin/content/book/orphan': return t('

    Pages in a book are like a tree. As pages are edited, reorganized and removed, child pages might be left with no link to the rest of the book. Such pages are referred to as "orphan pages". On this page, administrators can review their books for orphans and reattach those pages as desired.

    '); case 'node/add#book': return t("A book is a collaborative writing effort: users can collaborate writing the pages of the book, positioning the pages in the right order, and reviewing or modifying pages previously written. So when you have some information to share or when you read a page of the book and you didn't like it, or if you think a certain page could have been written better, you can do something about it."); Index: modules/comment/comment.module =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v retrieving revision 1.468 diff -u -p -r1.468 comment.module --- modules/comment/comment.module 19 Jul 2006 07:15:34 -0000 1.468 +++ modules/comment/comment.module 30 Jul 2006 20:21:28 -0000 @@ -77,17 +77,17 @@ function comment_help($section) {
  • control access for various comment module functions through access permissions administer >> access control.
  • administer comments administer >> comments >> configure.
  • -', array('%admin-access' => url('admin/access'), '%admin-settings-comment' => url('admin/settings/comment'))); +', array('%admin-access' => url('admin/access'), '%admin-settings-comment' => url('admin/content/comment/settings'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Comment page.', array('%comment' => 'http://drupal.org/handbook/modules/comment/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Allows users to comment on and discuss published content.'); - case 'admin/comment': - case 'admin/comment/new': + case 'admin/content/comment': + case 'admin/content/comment/new': return t("

    Below is a list of the latest comments posted to your site. Click on a subject to see the comment, the author's name to edit the author's user information , \"edit\" to modify the text, and \"delete\" to remove their submission.

    "); - case 'admin/comment/approval': + case 'admin/content/comment/approval': return t("

    Below is a list of the comments posted to your site that need approval. To approve a comment, click on \"edit\" and then change its \"moderation status\" to Approved. Click on a subject to see the comment, the author's name to edit the author's user information, \"edit\" to modify the text, and \"delete\" to remove their submission.

    "); - case 'admin/settings/comment': + case 'admin/content/comment/settings': return t("

    Comments can be attached to any node, and their settings are below. The display comes in two types: a \"flat list\" where everything is flush to the left side, and comments come in chronological order, and a \"threaded list\" where replies to other comments are placed immediately below and slightly indented, forming an outline. They also come in two styles: \"expanded\", where you see both the title and the contents, and \"collapsed\" where you only see the title. Preview comment forces a user to look at their comment by clicking on a \"Preview\" button before they can actually add the comment.

    "); } } @@ -100,27 +100,33 @@ function comment_menu($may_cache) { if ($may_cache) { $access = user_access('administer comments'); - $items[] = array('path' => 'admin/comment', 'title' => t('comments'), - 'callback' => 'comment_admin_overview', 'access' => $access); + $items[] = array( + 'path' => 'admin/content/comment', + 'title' => t('comments'), + 'description' => t('List and edit site comments and the comment moderation queue.'), + 'callback' => 'comment_admin_overview', + 'access' => $access + ); // Tabs: - $items[] = array('path' => 'admin/comment/list', 'title' => t('list'), + $items[] = array('path' => 'admin/content/comment/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); // Subtabs: - $items[] = array('path' => 'admin/comment/list/new', 'title' => t('published comments'), + $items[] = array('path' => 'admin/content/comment/list/new', 'title' => t('published comments'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/comment/list/approval', 'title' => t('approval queue'), + $items[] = array('path' => 'admin/content/comment/list/approval', 'title' => t('approval queue'), 'callback' => 'comment_admin_overview', 'access' => $access, 'callback arguments' => array('approval'), 'type' => MENU_LOCAL_TASK); $items[] = array( - 'path' => 'admin/settings/comments', - 'title' => t('comments'), + 'path' => 'admin/content/comment/settings', + 'title' => t('settings'), 'callback' => 'comment_admin_settings', 'access' => $access, - 'type' => MENU_NORMAL_ITEM); + 'weight' => 10, + 'type' => MENU_LOCAL_TASK); $items[] = array('path' => 'comment/delete', 'title' => t('delete comment'), 'callback' => 'comment_delete', 'access' => $access, 'type' => MENU_CALLBACK); @@ -1041,7 +1047,7 @@ function comment_admin_overview_validate $edit['comments'] = array_diff($edit['comments'], array(0)); if (count($edit['comments']) == 0) { form_set_error('', t('Please select one or more comments to perform the update on.')); - drupal_goto('admin/comment'); + drupal_goto('admin/content/comment'); } } @@ -1068,7 +1074,7 @@ function comment_admin_overview_submit($ } cache_clear_all(); drupal_set_message(t('The update has been performed.')); - drupal_goto('admin/comment'); + drupal_goto('admin/content/comment'); } } @@ -1121,12 +1127,12 @@ function comment_multiple_delete_confirm if (!$comment_counter) { drupal_set_message(t('There do not appear to be any comments to delete or your selected comment was deleted by another administrator.')); - drupal_goto('admin/comment'); + drupal_goto('admin/content/comment'); } else { return confirm_form('comment_multiple_delete_confirm', $form, t('Are you sure you want to delete these comments and all their children?'), - 'admin/comment', t('This action cannot be undone.'), + 'admin/content/comment', t('This action cannot be undone.'), t('Delete comments'), t('Cancel')); } } @@ -1144,7 +1150,7 @@ function comment_multiple_delete_confirm } drupal_set_message(t('The comments have been deleted.')); } - drupal_goto('admin/comment'); + drupal_goto('admin/content/comment'); } /** Index: modules/contact/contact.module =================================================================== RCS file: /cvs/drupal/drupal/modules/contact/contact.module,v retrieving revision 1.57 diff -u -p -r1.57 contact.module --- modules/contact/contact.module 10 Jul 2006 19:27:52 -0000 1.57 +++ modules/contact/contact.module 30 Jul 2006 20:21:29 -0000 @@ -15,25 +15,25 @@ function contact_help($section) { $output = '

    '. t('The contact module enables the use of both personal and site-wide contact forms, thereby facilitating easy communication within the community. While personal contact forms allow users to contact each other by e-mail, site-wide forms allow community members to contact the site administration from a central location. Users can specify a subject and message in the contact form, and also request that a copy of the e-mail be sent to their own address.') .'

    '; $output .= '

    '. t("Users can activate/deactivate their personal contact forms in their account settings. Upon activation, a contact tab will appear in their user profiles. Privileged users such as site administrators are able to contact users even if they have chosen not to enable this feature.") .'

    '; $output .= '

    '. t("Note that the contact tab will not appear when a user views his or her own profile; only when viewing another user's profile, if that user's contact form is enabled.") .'

    '; - $output .= '

    '. t('If the menu module is enabled, a menu item linking to the site-wide contact page is added to the navigation block. It is disabled by default, but can be enabled via the menu management page. Links to the contact page may also be added to the primary and secondary links using the same page.', array('%menu-module' => url('admin/menu'))) .'

    '; + $output .= '

    '. t('If the menu module is enabled, a menu item linking to the site-wide contact page is added to the navigation block. It is disabled by default, but can be enabled via the menu management page. Links to the contact page may also be added to the primary and secondary links using the same page.', array('%menu-module' => url('admin/build/menu'))) .'

    '; $output .= t('Contact module links:') .''; + $output .= '
  • '. t('Site-wide contact form category configuration.', array('%configuration-page' => url('admin/build/contact'))) .'
  • '; + $output .= '
  • '. t('Site-wide contact form general settings.', array('%additional-settings' => url('admin/build/contact/settings'))) .'
  • '; + $output .= '
  • '. t('Site-wide contact form menu configuration.', array('%menu-configuration' => url('admin/build/menu'))) .'
  • '; $output .= t('For more information, please read the configuration and customization handbook page for the contact module.', array('%contact' => url('http://drupal.org/handbook/modules/contact/', NULL, NULL, TRUE))); return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Enables the use of both personal and site-wide contact forms.'); - case 'admin/contact': - $output = t('This page lets you setup your site-wide contact form. To do so, add one or more categories. You can associate different recipients with each category to route e-mails to different people. For example, you can route website feedback to the webmaster and direct product information requests to the sales department. On the settings page, you can customize the information shown above the contact form. This can be useful to provide additional contact information such as your postal address and telephone number.', array('%settings' => url('admin/settings/contact'), '%form' => url('contact'))); + case 'admin/build/contact': + $output = t('This page lets you setup your site-wide contact form. To do so, add one or more categories. You can associate different recipients with each category to route e-mails to different people. For example, you can route website feedback to the webmaster and direct product information requests to the sales department. On the settings page, you can customize the information shown above the contact form. This can be useful to provide additional contact information such as your postal address and telephone number.', array('%settings' => url('admin/build/contact/settings'), '%form' => url('contact'))); if (!module_exist('menu')) { - $menu_note = t('The menu item can be customized and configured only once the menu module has been enabled.', array('%modules-page' => url('admin/modules'))); + $menu_note = t('The menu item can be customized and configured only once the menu module has been enabled.', array('%modules-page' => url('admin/settings/modules'))); } else { $menu_note = ''; } - $output .= '

    '. t('The contact module also adds a menu item (disabled by default) to the navigation block.', array('%menu-settings' => url('admin/menu'))) .' '. $menu_note .'

    '; + $output .= '

    '. t('The contact module also adds a menu item (disabled by default) to the navigation block.', array('%menu-settings' => url('admin/build/menu'))) .' '. $menu_note .'

    '; return($output); } } @@ -50,41 +50,43 @@ function contact_perm() { function contact_menu($may_cache) { $items = array(); if ($may_cache) { - $items[] = array('path' => 'admin/contact', + $items[] = array('path' => 'admin/build/contact', 'title' => t('contact form'), + 'description' => t('Create a system contact form and set up categories for the form to use.'), 'callback' => 'contact_admin_categories', 'access' => user_access('administer site configuration'), ); - $items[] = array('path' => 'admin/contact/list', + $items[] = array('path' => 'admin/build/contact/list', 'title' => t('list'), 'callback' => 'contact_admin_categories', 'access' => user_access('administer site configuration'), 'type' => MENU_DEFAULT_LOCAL_TASK, ); - $items[] = array('path' => 'admin/contact/add', + $items[] = array('path' => 'admin/build/contact/add', 'title' => t('add category'), 'callback' => 'contact_admin_edit', 'access' => user_access('administer site configuration'), 'type' => MENU_LOCAL_TASK, 'weight' => 1, ); - $items[] = array('path' => 'admin/contact/edit', + $items[] = array('path' => 'admin/build/contact/edit', 'title' => t('edit contact category'), 'callback' => 'contact_admin_edit', 'access' => user_access('administer site configuration'), 'type' => MENU_CALLBACK, ); - $items[] = array('path' => 'admin/contact/delete', + $items[] = array('path' => 'admin/build/contact/delete', 'title' => t('delete contact'), 'callback' => 'contact_admin_delete', 'access' => user_access('administer site configuration'), 'type' => MENU_CALLBACK, ); - $items[] = array('path' => 'admin/settings/contact', - 'title' => t('contact form'), + $items[] = array('path' => 'admin/build/contact/settings', + 'title' => t('settings'), 'callback' => 'contact_admin_settings', 'access' => user_access('administer site configuration'), - 'type' => MENU_NORMAL_ITEM, + 'type' => MENU_LOCAL_TASK, + 'weight' => 2, ); $items[] = array('path' => 'contact', 'title' => t('contact'), @@ -147,7 +149,7 @@ function contact_admin_categories() { $result = db_query('SELECT cid, category, recipients, selected FROM {contact} ORDER BY weight, category'); $rows = array(); while ($category = db_fetch_object($result)) { - $rows[] = array($category->category, $category->recipients, ($category->selected ? t('Yes') : t('No')), l(t('edit'), 'admin/contact/edit/'. $category->cid), l(t('delete'), 'admin/contact/delete/'. $category->cid)); + $rows[] = array($category->category, $category->recipients, ($category->selected ? t('Yes') : t('No')), l(t('edit'), 'admin/build/contact/edit/'. $category->cid), l(t('delete'), 'admin/build/contact/delete/'. $category->cid)); } $header = array(t('Category'), t('Recipients'), t('Selected'), array('data' => t('Operations'), 'colspan' => 2)); @@ -237,16 +239,16 @@ function contact_admin_edit_submit($form if (arg(2) == 'add') { db_query("INSERT INTO {contact} (category, recipients, reply, weight, selected) VALUES ('%s', '%s', '%s', %d, %d)", $form_values['category'], $form_values['recipients'], $form_values['reply'], $form_values['weight'], $form_values['selected']); drupal_set_message(t('Category %category has been added.', array('%category' => theme('placeholder', $form_values['category'])))); - watchdog('mail', t('Contact form: category %category added.', array('%category' => theme('placeholder', $form_values['category']))), WATCHDOG_NOTICE, l(t('view'), 'admin/contact')); + watchdog('mail', t('Contact form: category %category added.', array('%category' => theme('placeholder', $form_values['category']))), WATCHDOG_NOTICE, l(t('view'), 'admin/build/contact')); } else { db_query("UPDATE {contact} SET category = '%s', recipients = '%s', reply = '%s', weight = %d, selected = %d WHERE cid = %d", $form_values['category'], $form_values['recipients'], $form_values['reply'], $form_values['weight'], $form_values['selected'], $form_values['cid']); drupal_set_message(t('Category %category has been updated.', array('%category' => theme('placeholder', $form_values['category'])))); - watchdog('mail', t('Contact form: category %category updated.', array('%category' => theme('placeholder', $form_values['category']))), WATCHDOG_NOTICE, l(t('view'), 'admin/contact')); + watchdog('mail', t('Contact form: category %category updated.', array('%category' => theme('placeholder', $form_values['category']))), WATCHDOG_NOTICE, l(t('view'), 'admin/build/contact')); } - return 'admin/contact'; + return 'admin/build/contact'; } /** @@ -258,11 +260,11 @@ function contact_admin_delete($cid = NUL '#value' => $info->category, ); - return confirm_form('contact_admin_delete', $form, t('Are you sure you want to delete %category?', array('%category' => theme('placeholder', $info->category))), 'admin/contact', t('This action cannot be undone.'), t('Delete'), t('Cancel')); + return confirm_form('contact_admin_delete', $form, t('Are you sure you want to delete %category?', array('%category' => theme('placeholder', $info->category))), 'admin/build/contact', t('This action cannot be undone.'), t('Delete'), t('Cancel')); } else { drupal_set_message(t('Category not found.'), 'error'); - drupal_goto('admin/contact'); + drupal_goto('admin/build/contact'); } } @@ -274,7 +276,7 @@ function contact_admin_delete_submit($fo drupal_set_message(t('Category %category has been deleted.', array('%category' => theme('placeholder', $form_values['category'])))); watchdog('mail', t('Contact form: category %category deleted.', array('%category' => theme('placeholder', $form_values['category']))), WATCHDOG_NOTICE); - return 'admin/contact'; + return 'admin/build/contact'; } function contact_admin_settings() { Index: modules/drupal/drupal.module =================================================================== RCS file: /cvs/drupal/drupal/modules/drupal/drupal.module,v retrieving revision 1.123 diff -u -p -r1.123 drupal.module --- modules/drupal/drupal.module 10 Jul 2006 19:27:52 -0000 1.123 +++ modules/drupal/drupal.module 30 Jul 2006 20:21:29 -0000 @@ -28,7 +28,7 @@ function drupal_help($section) {
  • view your XML-RPC page.
  • administer Drupal administer >> settings >> drupal.
  • -', array('%file-cron' => 'cron.php', '%file-xmlrpc' => 'xmlrpc.php', '%admin-settings-drupal' => url('admin/settings/drupal'))); +', array('%file-cron' => 'cron.php', '%file-xmlrpc' => 'xmlrpc.php', '%admin-settings-drupal' => url('admin/settings/distributed-authentication'))); $output .= '

    '. t('If you maintain a directory of sites, you can list them on a page using the drupal_client_page() function. Sample instructions:

    -', array('%admin-filters' => url('admin/filters'))); +', array('%admin-filters' => url('admin/settings/filters'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Filter page.', array('%filter' => 'http://drupal.org/handbook/modules/filter/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Handles the filtering of content in preparation for display.'); - case 'admin/filters': + case 'admin/settings/filters': return t('

    Input formats define a way of processing user-supplied text in Drupal. Every input format has its own settings of which filters to apply. Possible filters include stripping out malicious HTML and making URLs clickable.

    Users can choose between the available input formats when submitting content.

    Below you can configure which input formats are available to which roles, as well as choose a default input format (used for imported content, for example).

    Note that (1) the default format is always available to all roles, and (2) all filter formats can always be used by roles with the "administer filters" permission even if they are not explicitly listed in the Roles column of this table.

    '); - case 'admin/filters/'. arg(2): + case 'admin/settings/filters/'. arg(2): return t('

    Every filter performs one particular change on the user input, for example stripping out malicious HTML or making URLs clickable. Choose which filters you want to apply to text in this input format.

    -

    If you notice some filters are causing conflicts in the output, you can rearrange them.

    ', array('%rearrange' => url('admin/filters/'. arg(2) .'/order'))); +

    If you notice some filters are causing conflicts in the output, you can rearrange them.

    ', array('%rearrange' => url('admin/settings/filters/'. arg(2) .'/order'))); - case 'admin/filters/'. arg(2) .'/configure': + case 'admin/settings/filters/'. arg(2) .'/configure': return t(' -

    If you cannot find the settings for a certain filter, make sure you\'ve enabled it on the view tab first.

    ', array('%url' => url('admin/filters/'. arg(2)))); +

    If you cannot find the settings for a certain filter, make sure you\'ve enabled it on the view tab first.

    ', array('%url' => url('admin/settings/filters/'. arg(2)))); - case 'admin/filters/'. arg(2) .'/order': + case 'admin/settings/filters/'. arg(2) .'/order': return t('

    Because of the flexible filtering system, you might encounter a situation where one filter prevents another from doing its job. For example: a word in an URL gets converted into a glossary term, before the URL can be converted in a clickable link. When this happens, you will need to rearrange the order in which filters get executed.

    Filters are executed from top-to-bottom. You can use the weight column to rearrange them: heavier filters \'sink\' to the bottom.

    '); @@ -63,25 +63,26 @@ function filter_menu($may_cache) { $items = array(); if ($may_cache) { - $items[] = array('path' => 'admin/filters', + $items[] = array('path' => 'admin/settings/filters', 'title' => t('input formats'), + 'description' => t('Configure how content input by users is filtering, including allowed HTML tags, PHP code tags. Also allows enabling of module-provided filters.'), 'callback' => 'filter_admin_overview', 'access' => user_access('administer filters'), ); - $items[] = array('path' => 'admin/filters/list', + $items[] = array('path' => 'admin/settings/filters/list', 'title' => t('list'), 'callback' => 'filter_admin_overview', 'type' => MENU_DEFAULT_LOCAL_TASK, 'access' => user_access('administer filters'), ); - $items[] = array('path' => 'admin/filters/add', + $items[] = array('path' => 'admin/settings/filters/add', 'title' => t('add input format'), 'callback' => 'filter_admin_format_form', 'type' => MENU_LOCAL_TASK, 'weight' => 1, 'access' => user_access('administer filters'), ); - $items[] = array('path' => 'admin/filters/delete', + $items[] = array('path' => 'admin/settings/filters/delete', 'title' => t('delete input format'), 'callback' => 'filter_admin_delete', 'type' => MENU_CALLBACK, @@ -99,14 +100,14 @@ function filter_menu($may_cache) { $formats = filter_formats(); if (isset($formats[arg(2)])) { - $items[] = array('path' => 'admin/filters/'. arg(2), + $items[] = array('path' => 'admin/settings/filters/'. arg(2), 'title' => t("'%format' input format", array('%format' => $formats[arg(2)]->name)), 'callback' => 'filter_admin_format_form', 'callback arguments' => array('format' => $formats[arg(2)]), 'type' => MENU_CALLBACK, 'access' => user_access('administer filters'), ); - $items[] = array('path' => 'admin/filters/'. arg(2) .'/list', + $items[] = array('path' => 'admin/settings/filters/'. arg(2) .'/list', 'title' => t('view'), 'callback' => 'filter_admin_format_form', 'callback arguments' => array('format' => $formats[arg(2)]), @@ -114,14 +115,14 @@ function filter_menu($may_cache) { 'weight' => 0, 'access' => user_access('administer filters'), ); - $items[] = array('path' => 'admin/filters/'. arg(2) .'/configure', + $items[] = array('path' => 'admin/settings/filters/'. arg(2) .'/configure', 'title' => t('configure'), 'callback' => 'filter_admin_configure', 'type' => MENU_LOCAL_TASK, 'weight' => 1, 'access' => user_access('administer filters'), ); - $items[] = array('path' => 'admin/filters/'. arg(2) .'/order', + $items[] = array('path' => 'admin/settings/filters/'. arg(2) .'/order', 'title' => t('rearrange'), 'callback' => 'filter_admin_order', 'callback arguments' => array('format' => $formats[arg(2)]), @@ -310,8 +311,8 @@ function filter_admin_overview() { $options[$id] = ''; $form[$format->name]['id'] = array('#value' => $id); $form[$format->name]['roles'] = array('#value' => $default ? t('All roles may use default format') : ($roles ? implode(', ',$roles) : t('No roles may use this format'))); - $form[$format->name]['configure'] = array('#value' => l(t('configure'), 'admin/filters/'. $id)); - $form[$format->name]['delete'] = array('#value' => $default ? '' : l(t('delete'), 'admin/filters/delete/'. $id)); + $form[$format->name]['configure'] = array('#value' => l(t('configure'), 'admin/settings/filters/'. $id)); + $form[$format->name]['delete'] = array('#value' => $default ? '' : l(t('delete'), 'admin/settings/filters/delete/'. $id)); } $form['default'] = array('#type' => 'radios', '#options' => $options, '#default_value' => variable_get('filter_default_format', 1)); $form['submit'] = array('#type' => 'submit', '#value' => t('Set default format')); @@ -358,11 +359,11 @@ function filter_admin_delete() { $form['format'] = array('#type' => 'hidden', '#value' => $format->format); $form['name'] = array('#type' => 'hidden', '#value' => $format->name); - return confirm_form('filter_admin_delete', $form, t('Are you sure you want to delete the input format %format?', array('%format' => theme('placeholder', $format->name))), 'admin/filters', t('If you have any content left in this input format, it will be switched to the default input format. This action cannot be undone.'), t('Delete'), t('Cancel')); + return confirm_form('filter_admin_delete', $form, t('Are you sure you want to delete the input format %format?', array('%format' => theme('placeholder', $format->name))), 'admin/settings/filters', t('If you have any content left in this input format, it will be switched to the default input format. This action cannot be undone.'), t('Delete'), t('Cancel')); } else { drupal_set_message(t('The default format cannot be deleted.')); - drupal_goto('admin/filters'); + drupal_goto('admin/settings/filters'); } } else { @@ -386,7 +387,7 @@ function filter_admin_delete_submit($for cache_clear_all('filter:'. $form_values['format'], TRUE); drupal_set_message(t('Deleted input format %format.', array('%format' => theme('placeholder', $form_values['name'])))); - return 'admin/filters'; + return 'admin/settings/filters'; } /** @@ -526,10 +527,10 @@ function filter_admin_format_form_submit // If a new filter was added, return to the main list of filters. Otherwise, stay on edit filter page to show new changes. if ($new) { - return 'admin/filters/'; + return 'admin/settings/filters/'; } else { - return 'admin/filters/'. $format; + return 'admin/settings/filters/'. $format; } } Index: modules/forum/forum.module =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v retrieving revision 1.339 diff -u -p -r1.339 forum.module --- modules/forum/forum.module 29 Jul 2006 17:56:41 -0000 1.339 +++ modules/forum/forum.module 30 Jul 2006 20:21:32 -0000 @@ -22,16 +22,16 @@ function forum_help($section) {
  • read about the comment module at administer >> help >> comment.
  • read about the taxonomy module at administer >> help >> taxonomy.
  • -', array('%admin-forum' => url('admin/forum'), '%admin-modules' => url('admin/modules'), '%admin-help-comment' => url('admin/help/comment'), '%admin-help-taxonomy' => url('admin/help/taxonomy'))); +', array('%admin-forum' => url('admin/content/forum'), '%admin-modules' => url('admin/settings/modules'), '%admin-help-comment' => url('admin/help/comment'), '%admin-help-taxonomy' => url('admin/help/taxonomy'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Forum page.', array('%forum' => 'http://drupal.org/handbook/modules/forum/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Enables threaded discussions about general topics.'); - case 'admin/forum': + case 'admin/content/forum': return t('

    This is a list of existing containers and forums that you can edit. Containers hold forums and, in turn, forums hold threaded discussions. Both containers and forums can be placed inside other containers and forums. By planning the structure of your containers and forums well, you make it easier for users to find a topic area of interest to them.

    '); - case 'admin/forum/add/container': + case 'admin/content/forum/add/container': return t('

    Containers help you organize your forums. The job of a container is to hold, or contain, other forums that are related. For example, a container named "Food" might hold two forums named "Fruit" and "Vegetables".

    '); - case 'admin/forum/add/forum': + case 'admin/content/forum/add/forum': return t('

    A forum holds discussion topics that are related. For example, a forum named "Fruit" might contain topics titled "Apples" and "Bananas".

    '); case 'node/add#forum': return t('Create a new topic for discussion in the forums.'); @@ -53,43 +53,45 @@ function forum_menu($may_cache) { 'callback' => 'forum_page', 'access' => user_access('access content'), 'type' => MENU_SUGGESTED_ITEM); - $items[] = array('path' => 'admin/forum', + $items[] = array('path' => 'admin/content/forum', 'title' => t('forums'), + 'description' => t('Control forums and their hierarchy and change forum settings.'), 'callback' => 'forum_overview', 'access' => user_access('administer forums'), 'type' => MENU_NORMAL_ITEM); - $items[] = array('path' => 'admin/forum/list', + $items[] = array('path' => 'admin/content/forum/list', 'title' => t('list'), 'access' => user_access('administer forums'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/forum/add/container', + $items[] = array('path' => 'admin/content/forum/add/container', 'title' => t('add container'), 'callback' => 'forum_form_container', 'access' => user_access('administer forums'), 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/forum/add/forum', + $items[] = array('path' => 'admin/content/forum/add/forum', 'title' => t('add forum'), 'callback' => 'forum_form_forum', 'access' => user_access('administer forums'), 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/settings/forum', - 'title' => t('forums'), + $items[] = array('path' => 'admin/content/forum/settings', + 'title' => t('settings'), 'callback' => 'forum_admin_settings', + 'weight' => 5, 'access' => user_access('administer forums'), - 'type' => MENU_NORMAL_ITEM); + 'type' => MENU_LOCAL_TASK); } elseif (is_numeric(arg(4))) { $term = taxonomy_get_term(arg(4)); // Check if this is a valid term. if ($term) { - $items[] = array('path' => 'admin/forum/edit/container', + $items[] = array('path' => 'admin/content/forum/edit/container', 'title' => t('edit container'), 'callback' => 'forum_form_container', 'callback arguments' => array((array)$term), 'access' => user_access('administer forums'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/forum/edit/forum', + $items[] = array('path' => 'admin/content/forum/edit/forum', 'title' => t('edit forum'), 'callback' => 'forum_form_forum', 'callback arguments' => array((array)$term), @@ -533,7 +535,7 @@ function forum_form_submit($form_id, $fo drupal_set_message(t('The %type %term has been updated.', array('%term' => theme('placeholder', $form_values['name']), '%type' => $type))); break; } - return 'admin/forum'; + return 'admin/content/forum'; } /** @@ -547,7 +549,7 @@ function _forum_confirm_delete($tid) { $form['tid'] = array('#type' => 'value', '#value' => $tid); $form['name'] = array('#type' => 'value', '#value' => $term->name); - return confirm_form('forum_confirm_delete', $form, t('Are you sure you want to delete the forum %name?', array('%name' => theme('placeholder', $term->name))), 'admin/forums', t('Deleting a forum or container will delete all sub-forums and associated posts as well. This action cannot be undone.'), t('Delete'), t('Cancel')); + return confirm_form('forum_confirm_delete', $form, t('Are you sure you want to delete the forum %name?', array('%name' => theme('placeholder', $term->name))), 'admin/content/forums', t('Deleting a forum or container will delete all sub-forums and associated posts as well. This action cannot be undone.'), t('Delete'), t('Cancel')); } /** @@ -558,7 +560,7 @@ function forum_confirm_delete_submit($fo drupal_set_message(t('The forum %term and all sub-forums and associated posts have been deleted.', array('%term' => theme('placeholder', $form_values['name'])))); watchdog('content', t('forum: deleted %term and all its sub-forums and associated posts.', array('%term' => theme('placeholder', $form_values['name'])))); - return 'admin/forum'; + return 'admin/content/forum'; } /** @@ -571,16 +573,16 @@ function forum_overview() { if ($tree) { foreach ($tree as $term) { if (in_array($term->tid, variable_get('forum_containers', array()))) { - $rows[] = array(_taxonomy_depth($term->depth) .' '. check_plain($term->name), l(t('edit container'), "admin/forum/edit/container/$term->tid")); + $rows[] = array(_taxonomy_depth($term->depth) .' '. check_plain($term->name), l(t('edit container'), "admin/content/forum/edit/container/$term->tid")); } else { - $rows[] = array(_taxonomy_depth($term->depth) .' '. check_plain($term->name), l(t('edit forum'), "admin/forum/edit/forum/$term->tid")); + $rows[] = array(_taxonomy_depth($term->depth) .' '. check_plain($term->name), l(t('edit forum'), "admin/content/forum/edit/forum/$term->tid")); } } } else { - $rows[] = array(array('data' => '' . t('There are no existing containers or forums. You may add some on the add container or add forum pages.', array('%container' => url('admin/forum/add/container'), '%forum' => url('admin/forum/add/forum'))) . '', 'colspan' => 2)); + $rows[] = array(array('data' => '' . t('There are no existing containers or forums. You may add some on the add container or add forum pages.', array('%container' => url('admin/content/forum/add/container'), '%forum' => url('admin/content/forum/add/forum'))) . '', 'colspan' => 2)); } return theme('table', $header, $rows); } Index: modules/help/help.module =================================================================== RCS file: /cvs/drupal/drupal/modules/help/help.module,v retrieving revision 1.51 diff -u -p -r1.51 help.module --- modules/help/help.module 7 May 2006 00:08:36 -0000 1.51 +++ modules/help/help.module 30 Jul 2006 20:21:32 -0000 @@ -111,7 +111,7 @@ function help_help($section) { $output .= '

    '. t('You can not administer the help system.') .'

    '; $output .= '

    '. t('For more information please read the configuration and customization handbook Help page.', array('%help' => 'http://drupal.org/handbook/modules/help/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Manages the display of online help.'); } } Index: modules/legacy/legacy.module =================================================================== RCS file: /cvs/drupal/drupal/modules/legacy/legacy.module,v retrieving revision 1.10 diff -u -p -r1.10 legacy.module --- modules/legacy/legacy.module 2 Jul 2006 20:06:31 -0000 1.10 +++ modules/legacy/legacy.module 30 Jul 2006 20:21:33 -0000 @@ -27,7 +27,7 @@ function legacy_help($section) { $output .= '

    '. t('Legacy module has no configurable options.') .'

    '; $output .= '

    '. t('For more information please read the configuration and customization handbook Legacy page.', array('%legacy' => 'http://drupal.org/handbook/modules/legacy/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Provides legacy handlers for upgrades from older Drupal installations.'); } } Index: modules/locale/locale.module =================================================================== RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v retrieving revision 1.137 diff -u -p -r1.137 locale.module --- modules/locale/locale.module 19 Jul 2006 06:23:44 -0000 1.137 +++ modules/locale/locale.module 30 Jul 2006 20:21:33 -0000 @@ -30,22 +30,22 @@ function locale_help($section) {
  • download translation files from the Drupal translations page.
  • -', array('%admin-locale' => url('admin/locale'), '%admin-locale-string-search' => url('admin/locale/string/search'), '%admin-locale-language-add' => url('admin/locale/language/add'), '%external-http-drupal-org-project-Translations' => 'http://drupal.org/project/Translations')); +', array('%admin-locale' => url('admin/settings/locale'), '%admin-locale-string-search' => url('admin/settings/locale/string/search'), '%admin-locale-language-add' => url('admin/settings/locale/language/add'), '%external-http-drupal-org-project-Translations' => 'http://drupal.org/project/Translations')); $output .= '

    '. t('For more information please read the configuration and customization handbook Locale page.', array('%locale' => 'http://drupal.org/handbook/modules/locale/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Enables the translation of the user interface to languages other than English.'); - case 'admin/locale': - case 'admin/locale/language/overview': - return t("

    Drupal provides support for the translation of its interface text into different languages. This page provides an overview of the installed languages. You can add a language on the add language page, or directly by importing a translation. If multiple languages are enabled, registered users will be able to set their preferred language. The site default will be used for anonymous visitors and for users without their own settings.

    Drupal interface translations may be added or extended by several courses: by importing an existing translation, by translating everything from scratch, or by a combination of these approaches.

    ", array("%search" => url("admin/locale/string/search"), "%import" => url("admin/locale/language/import"), "%add-language" => url("admin/locale/language/add"))); - case 'admin/locale/language/add': - return t("

    You need to add all languages in which you would like to display the site interface. If you can't find the desired language in the quick-add dropdown, then you will need to provide the proper language code yourself. The language code may be used to negotiate with browsers and to present flags, etc., so it is important to pick a code that is standardised for the desired language. You can also add a language by importing a translation.

    ", array("%import" => url("admin/locale/language/import"))); - case 'admin/locale/language/import': + case 'admin/settings/locale': + case 'admin/settings/locale/language/overview': + return t("

    Drupal provides support for the translation of its interface text into different languages. This page provides an overview of the installed languages. You can add a language on the add language page, or directly by importing a translation. If multiple languages are enabled, registered users will be able to set their preferred language. The site default will be used for anonymous visitors and for users without their own settings.

    Drupal interface translations may be added or extended by several courses: by importing an existing translation, by translating everything from scratch, or by a combination of these approaches.

    ", array("%search" => url("admin/settings/locale/string/search"), "%import" => url("admin/settings/locale/language/import"), "%add-language" => url("admin/settings/locale/language/add"))); + case 'admin/settings/locale/language/add': + return t("

    You need to add all languages in which you would like to display the site interface. If you can't find the desired language in the quick-add dropdown, then you will need to provide the proper language code yourself. The language code may be used to negotiate with browsers and to present flags, etc., so it is important to pick a code that is standardised for the desired language. You can also add a language by importing a translation.

    ", array("%import" => url("admin/settings/locale/language/import"))); + case 'admin/settings/locale/language/import': return t("

    This page allows you to import a translation provided in the gettext Portable Object (.po) format. The easiest way to get your site translated is to obtain an existing Drupal translation and to import it. You can find existing translations on the Drupal translation page. Note that importing a translation file might take a while.

    ", array('%url' => 'http://drupal.org/project/translations')); - case 'admin/locale/language/export': + case 'admin/settings/locale/language/export': return t("

    This page allows you to export Drupal strings. The first option is to export a translation so it can be shared. The second option generates a translation template, which contains all Drupal strings, but without their translations. You can use this template to start a new translation using various software packages designed for this task.

    "); - case 'admin/locale/string/search': - return t("

    It is often convenient to get the strings from your setup on the export page, and use a desktop Gettext translation editor to edit the translations. On this page you can search in the translated and untranslated strings, and the default English texts provided by Drupal.

    ", array("%export" => url("admin/locale/language/export"))); + case 'admin/settings/locale/string/search': + return t("

    It is often convenient to get the strings from your setup on the export page, and use a desktop Gettext translation editor to edit the translations. On this page you can search in the translated and untranslated strings, and the default English texts provided by Drupal.

    ", array("%export" => url("admin/settings/locale/language/export"))); } } @@ -59,18 +59,19 @@ function locale_menu($may_cache) { $access = user_access('administer locales'); // Main admin menu item - $items[] = array('path' => 'admin/locale', + $items[] = array('path' => 'admin/settings/locale', 'title' => t('localization'), + 'description' => t('Configure site localization and user interface translation.'), 'callback' => 'locale_admin_manage', 'access' => $access); // Top level tabs - $items[] = array('path' => 'admin/locale/language', + $items[] = array('path' => 'admin/settings/locale/language', 'title' => t('manage languages'), 'access' => $access, 'weight' => -10, 'type' => MENU_DEFAULT_LOCAL_TASK); - $items[] = array('path' => 'admin/locale/string/search', + $items[] = array('path' => 'admin/settings/locale/string/search', 'title' => t('manage strings'), 'callback' => 'locale_string_search', 'access' => $access, @@ -78,25 +79,25 @@ function locale_menu($may_cache) { 'type' => MENU_LOCAL_TASK); // Manage languages subtabs - $items[] = array('path' => 'admin/locale/language/overview', + $items[] = array('path' => 'admin/settings/locale/language/overview', 'title' => t('list'), 'callback' => 'locale_admin_manage', 'access' => $access, 'weight' => 0, 'type' => MENU_DEFAULT_LOCAL_TASK); - $items[] = array('path' => 'admin/locale/language/add', + $items[] = array('path' => 'admin/settings/locale/language/add', 'title' => t('add language'), 'callback' => 'locale_admin_manage_add', 'access' => $access, 'weight' => 5, 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/locale/language/import', + $items[] = array('path' => 'admin/settings/locale/language/import', 'title' => t('import'), 'callback' => 'locale_admin_import', 'access' => $access, 'weight' => 10, 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/locale/language/export', + $items[] = array('path' => 'admin/settings/locale/language/export', 'title' => t('export'), 'callback' => 'locale_admin_export', 'access' => $access, @@ -104,7 +105,7 @@ function locale_menu($may_cache) { 'type' => MENU_LOCAL_TASK); // Language related callbacks - $items[] = array('path' => 'admin/locale/language/delete', + $items[] = array('path' => 'admin/settings/locale/language/delete', 'title' => t('confirm'), 'callback' => 'locale_admin_manage_delete_form', 'access' => $access, @@ -113,13 +114,13 @@ function locale_menu($may_cache) { else { if (is_numeric(arg(4))) { // String related callbacks - $items[] = array('path' => 'admin/locale/string/edit/'. arg(4), + $items[] = array('path' => 'admin/settings/locale/string/edit/'. arg(4), 'title' => t('edit string'), 'callback' => 'locale_admin_string_edit', 'callback arguments' => arg(4), 'access' => $access, 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/locale/string/delete/'. arg(4), + $items[] = array('path' => 'admin/settings/locale/string/delete/'. arg(4), 'title' => t('delete string'), 'callback' => 'locale_admin_string_delete', 'callback arguments' => arg(4), @@ -323,7 +324,7 @@ function locale_admin_manage_delete_form // Do not allow deletion of English locale. if ($langcode == 'en') { drupal_set_message(t('The English locale cannot be deleted.')); - drupal_goto('admin/locale/language/overview'); + drupal_goto('admin/settings/locale/language/overview'); } // For other locales, warn user that data loss is ahead. @@ -334,7 +335,7 @@ function locale_admin_manage_delete_form } else { $form['langcode'] = array('#type' => 'value', '#value' => $langcode); - return confirm_form('locale_admin_manage_delete_form', $form, t('Are you sure you want to delete the language %name?', array('%name' => theme('placeholder', t($languages['name'][$langcode])))), 'admin/locale/language/overview', t('Deleting a language will remove all data associated with it. This action cannot be undone.'), t('Delete'), t('Cancel')); + return confirm_form('locale_admin_manage_delete_form', $form, t('Are you sure you want to delete the language %name?', array('%name' => theme('placeholder', t($languages['name'][$langcode])))), 'admin/settings/locale/language/overview', t('Deleting a language will remove all data associated with it. This action cannot be undone.'), t('Delete'), t('Cancel')); } } @@ -354,7 +355,7 @@ function locale_admin_manage_delete_form // Changing the locale settings impacts the interface: cache_clear_all(); - return 'admin/locale/language/overview'; + return 'admin/settings/locale/language/overview'; } /** Index: modules/menu/menu.module =================================================================== RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v retrieving revision 1.76 diff -u -p -r1.76 menu.module --- modules/menu/menu.module 19 Jul 2006 06:59:15 -0000 1.76 +++ modules/menu/menu.module 30 Jul 2006 20:21:34 -0000 @@ -19,7 +19,7 @@ Menu administration tabs:
  • On the administer menu page, administrators can "edit" to change the title, description, parent or weight of a menu item. Under the "operations" column, click on "enable/disable" to toggle a menu item on or off. Only menu items which are enabled are displayed in the corresponding menu block. Note that the default menu items generated by the menu module cannot be deleted, only disabled.
  • Use the "add menu" tab to submit a title for a new custom menu. Once submitted, the menu will appear in a list toward the bottom of the administer menu page underneath the main navigation menu. Under the menu name there will be links to edit or delete the menu, and a link to add new items to the menu.
  • Use the "add menu item" tab to create new links in either the navigation or a custom menu (such as a primary/secondary links menu). Select the parent item to place the new link within an existing menu structure. For top level menu items, choose the name of the menu in which the link is to be added.
  • -', array('%navigation' => theme('placeholder', 'Navigation'), '%primary-links' => theme('placeholder', 'primary links'), '%secondary-links' => theme('placeholder', 'secondary links'), '%admin-block' => url('admin/block'), '%menu-settings' => url('admin/settings/menu'))); +', array('%navigation' => theme('placeholder', 'Navigation'), '%primary-links' => theme('placeholder', 'primary links'), '%secondary-links' => theme('placeholder', 'secondary links'), '%admin-block' => url('admin/build/block'), '%menu-settings' => url('admin/build/menu/settings'))); $output .= t('

    You can

    -', array('%admin-menu' => url('admin/menu'), '%admin-block' => url('admin/block'), '%admin-menu-menu-add' => url('admin/menu/menu/add'), '%admin-menu-item-add' => url('admin/menu/item/add'), '%admin-settings-menus' => url('admin/settings/menu'))); +', array('%admin-menu' => url('admin/build/menu'), '%admin-block' => url('admin/build/block'), '%admin-menu-menu-add' => url('admin/build/menu/menu/add'), '%admin-menu-item-add' => url('admin/build/menu/item/add'), '%admin-settings-menus' => url('admin/build/menu/settings'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Menu page.', array('%menu' => 'http://drupal.org/handbook/modules/menu/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Allows administrators to customize the site navigation menu.'); - case 'admin/menu': - return '

    '. t('Menus are a collection of links (menu items) used to navigate a website. The list(s) below display the currently available menus along with their menu items. Select an operation from the list to manage each menu or menu item.', array('%admin-settings-menus' => url('admin/settings/menu'), '%admin-block'=>url('admin/block'))) .'

    '; - case 'admin/menu/menu/add': - return '

    '. t('Enter the name for your new menu. Remember to enable the newly created block in the blocks administration page.', array('%blocks' => url('admin/block'))) .'

    '; - case 'admin/menu/item/add': + case 'admin/build/menu': + return '

    '. t('Menus are a collection of links (menu items) used to navigate a website. The list(s) below display the currently available menus along with their menu items. Select an operation from the list to manage each menu or menu item.', array('%admin-settings-menus' => url('admin/build/menu/settings'), '%admin-block'=>url('admin/build/block'))) .'

    '; + case 'admin/build/menu/menu/add': + return '

    '. t('Enter the name for your new menu. Remember to enable the newly created block in the blocks administration page.', array('%blocks' => url('admin/build/block'))) .'

    '; + case 'admin/build/menu/item/add': return '

    '. t('Enter the title, path, position and the weight for your new menu item.') .'

    '; } } @@ -49,60 +49,68 @@ function menu_menu($may_cache) { $items = array(); if ($may_cache) { - $items[] = array('path' => 'admin/menu', + $items[] = array('path' => 'admin/build/menu', 'title' => t('menus'), + 'description' => t('Control your site\'s navigation menu, create menu blocks, as well as rename and reorganize menu items.'), 'callback' => 'menu_overview', 'access' => user_access('administer menu')); - $items[] = array('path' => 'admin/menu/list', + $items[] = array('path' => 'admin/build/menu/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/menu/item/add', + $items[] = array('path' => 'admin/build/menu/item/add', 'title' => t('add menu item'), 'callback' => 'menu_edit_item_form', + 'callback arguments' => array('add'), 'access' => user_access('administer menu'), 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/menu/item/edit', + $items[] = array('path' => 'admin/build/menu/item/edit', 'title' => t('edit menu item'), 'callback' => 'menu_edit_item_form', + 'callback arguments' => array('edit'), 'access' => user_access('administer menu'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/menu/item/reset', + $items[] = array('path' => 'admin/build/menu/item/reset', 'title' => t('reset menu item'), 'callback' => 'menu_reset_item', 'access' => user_access('administer menu'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/menu/item/disable', + $items[] = array('path' => 'admin/build/menu/item/disable', 'title' => t('disable menu item'), 'callback' => 'menu_disable_item', 'access' => user_access('administer menu'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/menu/item/delete', + $items[] = array('path' => 'admin/build/menu/item/delete', 'title' => t('delete menu item'), 'callback' => 'menu_item_delete_form', 'access' => user_access('administer menu'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/menu/menu/add', + $items[] = array('path' => 'admin/build/menu/menu/add', 'title' => t('add menu'), 'callback' => 'menu_edit_menu_form', + 'callback arguments' => array('add'), 'access' => user_access('administer menu'), 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/menu/menu/edit', + $items[] = array('path' => 'admin/build/menu/menu/edit', 'title' => t('edit menu'), 'callback' => 'menu_edit_menu_form', + 'callback arguments' => array('edit'), 'access' => user_access('administer menu'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/menu/menu/delete', + $items[] = array('path' => 'admin/build/menu/menu/delete', 'title' => t('delete menu'), 'callback' => 'menu_item_delete_form', 'access' => user_access('administer menu'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/settings/menu', - 'title' => t('menus'), - 'callback' => 'menu_configure'); + $items[] = array('path' => 'admin/build/menu/settings', + 'title' => t('settings'), + 'callback' => 'menu_configure', + 'type' => MENU_LOCAL_TASK, + 'weight' => 5, + ); } return $items; @@ -238,7 +246,7 @@ function menu_form_alter($form_id, &$for ); $form['menu']['advanced'] = array('#type' => 'item', - '#value' => t('You may also edit the advanced settings for this menu item.', array('%edit' => url("admin/menu/item/edit/{$item['mid']}"))), + '#value' => t('You may also edit the advanced settings for this menu item.', array('%edit' => url("admin/build/menu/item/edit/{$item['mid']}"))), ); } } @@ -258,7 +266,7 @@ function menu_configure() { ); $form['settings_links']['intro'] = array('#type' => 'item', - '#value' => t('Primary and secondary links provide a navigational menu system which usually (depending on your theme) appears at the top-right of the browser window. The links displayed can be generated either from a custom list created via the menu administration page or from a built-in list of menu items such as the navigation menu links.', array('%menu' => url('admin/menu'))), + '#value' => t('Primary and secondary links provide a navigational menu system which usually (depending on your theme) appears at the top-right of the browser window. The links displayed can be generated either from a custom list created via the menu administration page or from a built-in list of menu items such as the navigation menu links.', array('%menu' => url('admin/build/menu'))), ); $form['settings_links']['menu_primary_menu'] = array('#type' => 'select', @@ -301,8 +309,8 @@ function menu_configure() { /** * Menu callback; handle the adding/editing of a new menu. */ -function menu_edit_menu_form($mid = 0) { - if (arg(3) == 'edit') { +function menu_edit_menu_form($type, $mid = 0) { + if ($type == 'edit') { if (!($item = db_fetch_array(db_query('SELECT * FROM {menu} WHERE mid = %d', $mid)))) { drupal_not_found(); return; @@ -331,8 +339,8 @@ function menu_edit_menu_form($mid = 0) { /** * Present the menu item editing form. */ -function menu_edit_item_form($mid = 0) { - if (arg(3) == 'edit') { +function menu_edit_item_form($type, $mid = 0) { + if ($type == 'edit') { if (!($item = db_fetch_array(db_query('SELECT * FROM {menu} WHERE mid = %d', $mid)))) { drupal_not_found(); return; @@ -411,7 +419,7 @@ function menu_edit_item_form($mid = 0) { */ function menu_edit_item_form_submit($form_id, $form_values) { menu_edit_item_save($form_values); - return 'admin/menu'; + return 'admin/build/menu'; } /** @@ -434,7 +442,7 @@ function menu_item_delete_form($mid) { $message = t('Are you sure you want to delete the custom menu item %item?', array('%item' => theme('placeholder', $menu->title))); } - return confirm_form('menu_confirm_delete_form', $form, $message, 'admin/menu', t('This action cannot be undone.'), t('Delete')); + return confirm_form('menu_confirm_delete_form', $form, $message, 'admin/build/menu', t('This action cannot be undone.'), t('Delete')); } /** @@ -453,7 +461,7 @@ function menu_confirm_delete_form_submit watchdog('menu', t('Deleted menu item %title.', $t_args), WATCHDOG_NOTICE); } - return 'admin/menu'; + return 'admin/build/menu'; } /** @@ -462,7 +470,7 @@ function menu_confirm_delete_form_submit function menu_reset_item($mid) { if (isset($mid) && $title = db_result(db_query('SELECT title FROM {menu} WHERE mid = %d', $mid))) { $form['mid'] = array('#type' => 'value', '#value' => $mid); - return confirm_form('menu_reset_item_form', $form, t('Are you sure you want to reset the item %item to its default values?', array('%item' => theme('placeholder', $title))), 'admin/menu', t('Any customizations will be lost. This action cannot be undone.'), t('Reset')); + return confirm_form('menu_reset_item_form', $form, t('Are you sure you want to reset the item %item to its default values?', array('%item' => theme('placeholder', $title))), 'admin/build/menu', t('Any customizations will be lost. This action cannot be undone.'), t('Reset')); } else { drupal_not_found(); @@ -476,7 +484,7 @@ function menu_reset_item_form_submit($fo menu_delete_item($form_values['mid']); drupal_set_message(t('The menu item was reset to its default settings.')); - return 'admin/menu'; + return 'admin/build/menu'; } /** @@ -490,7 +498,7 @@ function menu_disable_item($mid) { $type |= MENU_MODIFIED_BY_ADMIN; db_query('UPDATE {menu} SET type = %d WHERE mid = %d', $type, $mid); drupal_set_message(t('The menu item has been disabled.')); - drupal_goto('admin/menu'); + drupal_goto('admin/build/menu'); } /** @@ -525,7 +533,7 @@ function menu_edit_item_save($edit) { } elseif ($status == SAVED_NEW) { drupal_set_message(t('The menu item %title has been added.', $t_args)); - watchdog('menu', t('Added menu item %title.', $t_args), WATCHDOG_NOTICE, l(t('view'), 'admin/menu')); + watchdog('menu', t('Added menu item %title.', $t_args), WATCHDOG_NOTICE, l(t('view'), 'admin/build/menu')); } return $edit['mid']; } @@ -600,12 +608,12 @@ function menu_overview_tree() { foreach ($root_menus as $mid => $title) { $operations = array(); if ($menu['items'][$mid]['type'] & MENU_MODIFIABLE_BY_ADMIN) { - $operations[] = l(t('edit'), 'admin/menu/menu/edit/'. $mid); + $operations[] = l(t('edit'), 'admin/build/menu/menu/edit/'. $mid); } if ($menu['items'][$mid]['type'] & MENU_CREATED_BY_ADMIN) { - $operations[] = l(t('delete'), 'admin/menu/menu/delete/'. $mid); + $operations[] = l(t('delete'), 'admin/build/menu/menu/delete/'. $mid); } - $operations[] = l(t('add item'), 'admin/menu/item/add/'. $mid); + $operations[] = l(t('add item'), 'admin/build/menu/item/add/'. $mid); $table = theme('item_list', $operations); $table .= theme('table', $header, menu_overview_tree_rows($mid)); $output .= theme('box', check_plain($title), $table); @@ -645,7 +653,7 @@ function menu_overview_tree_rows($pid = else { // Set the edit column. if ($item['type'] & (MENU_VISIBLE_IN_TREE | MENU_VISIBLE_IF_HAS_CHILDREN)) { - $operations[] = array('data' => l(t('edit'), 'admin/menu/item/edit/'. $mid)); + $operations[] = array('data' => l(t('edit'), 'admin/build/menu/item/edit/'. $mid)); } else { $operations[] = array('data' => ''); @@ -658,18 +666,18 @@ function menu_overview_tree_rows($pid = $operations[] = array('data' => ''); } else if ($item['type'] & MENU_VISIBLE_IN_TREE) { - $operations[] = array('data' => l(t('disable'), 'admin/menu/item/disable/'. $mid)); + $operations[] = array('data' => l(t('disable'), 'admin/build/menu/item/disable/'. $mid)); } else { - $operations[] = array('data' => l(t('enable'), 'admin/menu/item/edit/'. $mid)); + $operations[] = array('data' => l(t('enable'), 'admin/build/menu/item/edit/'. $mid)); } // Set the reset column. if ($item['type'] & MENU_CREATED_BY_ADMIN) { - $operations[] = array('data' => l(t('delete'), 'admin/menu/item/delete/'. $mid)); + $operations[] = array('data' => l(t('delete'), 'admin/build/menu/item/delete/'. $mid)); } else if ($item['type'] & MENU_MODIFIED_BY_ADMIN) { - $operations[] = array('data' => l(t('reset'), 'admin/menu/item/reset/'. $mid)); + $operations[] = array('data' => l(t('reset'), 'admin/build/menu/item/reset/'. $mid)); } else { $operations[] = array('data' => ''); Index: modules/node/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.module,v retrieving revision 1.662 diff -u -p -r1.662 node.module --- modules/node/node.module 26 Jul 2006 08:25:25 -0000 1.662 +++ modules/node/node.module 30 Jul 2006 20:21:37 -0000 @@ -29,14 +29,14 @@ function node_help($section) {
  • search for content at search.
  • administer nodes at administer >> settings >> content types.
  • -', array('%search' => url('search'), '%admin-settings-content-types' => url('admin/settings/content-types'))); +', array('%search' => url('search'), '%admin-settings-content-types' => url('admin/content/types'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Node page.', array('%node' => 'http://drupal.org/handbook/modules/node/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Allows content to be submitted to the site and displayed on pages.'); - case 'admin/node': + case 'admin/content/node': return t('

    Below is a list of all of the posts on your site. Other forms of content are listed elsewhere (e.g. comments).

    Clicking a title views the post, while clicking an author\'s name views their user information.

    ', array('%comments' => url('admin/comment'))); - case 'admin/node/search': + case 'admin/content/search': return t('

    Enter a simple pattern to search for a post. This can include the wildcard character *.
    For example, a search for "br*" might return "bread bakers", "our daily bread" and "brenda".

    '); } @@ -827,27 +827,49 @@ function node_link($type, $node = NULL, */ function node_menu($may_cache) { $items = array(); - if ($may_cache) { - $items[] = array('path' => 'admin/node', 'title' => t('content'), + $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('access configuration pages'), + ); + + $items[] = array( + 'path' => 'admin/content/node', + 'title' => t('posts'), + 'description' => t('View, edit, and delete your site\'s content.'), 'callback' => 'node_admin_nodes', - 'access' => user_access('administer nodes')); - $items[] = array('path' => 'admin/node/overview', 'title' => t('list'), + 'access' => user_access('administer nodes') + ); + + $items[] = array('path' => 'admin/content/node/overview', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); if (module_exist('search')) { - $items[] = array('path' => 'admin/node/search', 'title' => t('search'), + $items[] = array('path' => 'admin/content/search', 'title' => t('search posts'), + 'description' => t('Search posts by keyword.'), 'callback' => 'node_admin_search', 'access' => user_access('administer nodes'), - 'type' => MENU_LOCAL_TASK); + 'type' => MENU_NORMAL_ITEM); } - $items[] = array('path' => 'admin/settings/node', 'title' => t('posts'), + $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' => 'node_configure', - 'access' => user_access('administer nodes')); - $items[] = array('path' => 'admin/settings/content-types', 'title' => t('content types'), + 'access' => user_access('administer nodes') + ); + $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_types_configure', - 'access' => user_access('administer nodes')); + 'access' => user_access('administer nodes') + ); $items[] = array('path' => 'node', 'title' => t('content'), 'callback' => 'node_page', @@ -892,7 +914,7 @@ function node_menu($may_cache) { } } else if (arg(0) == 'admin' && arg(1) == 'settings' && arg(2) == 'content-types' && is_string(arg(3))) { - $items[] = array('path' => 'admin/settings/content-types/'. arg(3), + $items[] = array('path' => 'admin/content/types/'. arg(3), 'title' => t("'%name' content type", array('%name' => node_get_name(arg(3)))), 'type' => MENU_CALLBACK); } @@ -1208,7 +1230,7 @@ function node_multiple_delete_confirm() return confirm_form('node_multiple_delete_confirm', $form, t('Are you sure you want to delete these items?'), - 'admin/node', t('This action cannot be undone.'), + 'admin/content/node', t('This action cannot be undone.'), t('Delete all'), t('Cancel')); } @@ -1219,7 +1241,7 @@ function node_multiple_delete_confirm_su } drupal_set_message(t('The items have been deleted.')); } - return 'admin/node'; + return 'admin/content/node'; } /** @@ -1249,7 +1271,7 @@ function node_types_configure($type = NU $rows = array(); foreach (node_get_types() as $type => $name) { - $rows[] = array($name, l(t('configure'), 'admin/settings/content-types/'. $type)); + $rows[] = array($name, l(t('configure'), 'admin/content/types/'. $type)); } return theme('table', $header, $rows); @@ -1376,7 +1398,7 @@ function node_revision_list($node) { } function node_admin_search() { - $output = search_form(url('admin/node/search'), $_POST['edit']['keys'], 'node') . search_data($_POST['edit']['keys'], 'node'); + $output = search_form(url('admin/content/search'), $_POST['edit']['keys'], 'node') . search_data($_POST['edit']['keys'], 'node'); return $output; } @@ -2008,7 +2030,7 @@ function node_page_default() {

    For more information, please refer to the help section, or the online Drupal handbooks. You may also post at the Drupal forum, or view the wide range of other support options available.

    ', - array('%drupal' => 'http://drupal.org/', '%register' => url('user/register'), '%admin' => url('admin'), '%config' => url('admin/settings'), '%modules' => url('admin/modules'), '%download_modules' => 'http://drupal.org/project/modules', '%themes' => url('admin/themes'), '%download_themes' => 'http://drupal.org/project/themes', '%content' => url('node/add'), '%help' => url('admin/help'), '%handbook' => 'http://drupal.org/handbooks', '%forum' => 'http://drupal.org/forum', '%support' => 'http://drupal.org/support') + array('%drupal' => 'http://drupal.org/', '%register' => url('user/register'), '%admin' => url('admin'), '%config' => url('admin/settings'), '%modules' => url('admin/settings/modules'), '%download_modules' => 'http://drupal.org/project/modules', '%themes' => url('admin/themes'), '%download_themes' => 'http://drupal.org/project/themes', '%content' => url('node/add'), '%help' => url('admin/help'), '%handbook' => 'http://drupal.org/handbooks', '%forum' => 'http://drupal.org/forum', '%support' => 'http://drupal.org/support') ); $output = '
    '. $output .'
    '; } Index: modules/page/page.module =================================================================== RCS file: /cvs/drupal/drupal/modules/page/page.module,v retrieving revision 1.155 diff -u -p -r1.155 page.module --- modules/page/page.module 7 May 2006 00:08:36 -0000 1.155 +++ modules/page/page.module 30 Jul 2006 20:21:37 -0000 @@ -24,10 +24,10 @@ function page_help($section) {
  • create a page at create content >> page.
  • administer page content type at administer >> settings >> content types >> configure page.
  • -', array('%admin-help-node' => url('admin/help/node'), '%admin-help-page' => url('admin/help/page'), '%admin-help-story' => url('admin/help/story'), '%node-add-page' => url('node/add/page'), '%admin-settings-content-types-page' => url('admin/settings/content-types/page'))); +', array('%admin-help-node' => url('admin/help/node'), '%admin-help-page' => url('admin/help/page'), '%admin-help-story' => url('admin/help/story'), '%node-add-page' => url('node/add/page'), '%admin-settings-content-types-page' => url('admin/content/types/page'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Page page.', array('%page' => 'http://drupal.org/handbook/modules/page/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Enables the creation of pages that can be added to the navigation system.'); case 'node/add#page': return t('If you want to add a static page, like a contact page or an about page, use a page.'); Index: modules/path/path.module =================================================================== RCS file: /cvs/drupal/drupal/modules/path/path.module,v retrieving revision 1.85 diff -u -p -r1.85 path.module --- modules/path/path.module 10 Jul 2006 19:27:52 -0000 1.85 +++ modules/path/path.module 30 Jul 2006 20:21:37 -0000 @@ -31,14 +31,14 @@ function path_help($section) {
  • read how to configure clean URLs for your webserver.
  • enable clean url\'s to remove the =? at administer >> settings >> clean URLs.
  • -', array('%admin-path-add' => url('admin/path/add'), '%admin-path' => url('admin/path'), '%external-http-drupal-org-node-15365' => 'http://drupal.org/node/15365', '%admin-clean-url-settings' => url('admin/settings/clean-urls'))); +', array('%admin-path-add' => url('admin/build/path/add'), '%admin-path' => url('admin/build/path'), '%external-http-drupal-org-node-15365' => 'http://drupal.org/node/15365', '%admin-clean-url-settings' => url('admin/settings/clean-urls'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Path page.', array('%path' => 'http://drupal.org/handbook/modules/path/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Allows users to rename URLs.'); - case 'admin/path': + case 'admin/build/path': return t("

    Drupal provides users complete control over URLs through aliasing. This feature is typically used to make URLs human-readable or easy to remember. For example, one could map the relative URL 'node/1' onto 'about'. Each system path can have multiple aliases.

    "); - case 'admin/path/add': + case 'admin/build/path/add': return t('

    Enter the path you wish to create the alias for, followed by the name of the new alias.

    '); } } @@ -50,20 +50,21 @@ function path_menu($may_cache) { $items = array(); if ($may_cache) { - $items[] = array('path' => 'admin/path', 'title' => t('url aliases'), + $items[] = array('path' => 'admin/build/path', 'title' => t('url aliases'), + 'description' => t('Change your site\'s URL paths by aliasing them.'), 'callback' => 'path_admin', 'access' => user_access('administer url aliases')); - $items[] = array('path' => 'admin/path/edit', 'title' => t('edit alias'), + $items[] = array('path' => 'admin/build/path/edit', 'title' => t('edit alias'), 'callback' => 'path_admin_edit', 'access' => user_access('administer url aliases'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/path/delete', 'title' => t('delete alias'), + $items[] = array('path' => 'admin/build/path/delete', 'title' => t('delete alias'), 'callback' => 'path_admin_delete_confirm', 'access' => user_access('administer url aliases'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/path/list', 'title' => t('list'), + $items[] = array('path' => 'admin/build/path/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/path/add', 'title' => t('add alias'), + $items[] = array('path' => 'admin/build/path/add', 'title' => t('add alias'), 'callback' => 'path_admin_edit', 'access' => user_access('administer url aliases'), 'type' => MENU_LOCAL_TASK); @@ -104,7 +105,7 @@ function path_admin_delete_confirm($pid) $form['pid'] = array('#type' => 'value', '#value' => $pid); $output = confirm_form('path_admin_delete_confirm', $form, t('Are you sure you want to delete path alias %title?', array('%title' => theme('placeholder', $path['dst']))), - $_GET['destination'] ? $_GET['destination'] : 'admin/path', t('This action cannot be undone.'), + $_GET['destination'] ? $_GET['destination'] : 'admin/build/path', t('This action cannot be undone.'), t('Delete'), t('Cancel') ); } @@ -117,7 +118,7 @@ function path_admin_delete_confirm($pid) function path_admin_delete_confirm_submit($form_id, $form_values) { if ($form_values['confirm']) { path_admin_delete($form_values['pid']); - return 'admin/path'; + return 'admin/build/path'; } } @@ -299,7 +300,7 @@ function path_overview() { $destination = drupal_get_destination(); while ($data = db_fetch_object($result)) { - $rows[] = array($data->dst, $data->src, l(t('edit'), "admin/path/edit/$data->pid", array(), $destination), l(t('delete'), "admin/path/delete/$data->pid", array(), $destination)); + $rows[] = array($data->dst, $data->src, l(t('edit'), "admin/build/path/edit/$data->pid", array(), $destination), l(t('delete'), "admin/build/path/delete/$data->pid", array(), $destination)); } if (!$rows) { @@ -346,7 +347,7 @@ function path_form_submit() { path_set_alias($src, $dst, $pid); drupal_set_message(t('The alias has been saved.')); - return 'admin/path'; + return 'admin/build/path'; } } Index: modules/ping/ping.module =================================================================== RCS file: /cvs/drupal/drupal/modules/ping/ping.module,v retrieving revision 1.38 diff -u -p -r1.38 ping.module --- modules/ping/ping.module 10 Jul 2006 08:05:15 -0000 1.38 +++ modules/ping/ping.module 30 Jul 2006 20:21:37 -0000 @@ -20,10 +20,10 @@ function ping_help($section) {
  • run your cron job at your sites cron page.
  • read about configuring cron jobs.
  • -', array('%admin-modules' => url('admin/modules'), '%file-cron' => 'cron.php', '%external-http-drupal-org-node-23714' => 'http://drupal.org/node/23714')); +', array('%admin-modules' => url('admin/settings/modules'), '%file-cron' => 'cron.php', '%external-http-drupal-org-node-23714' => 'http://drupal.org/node/23714')); $output .= '

    '. t('For more information please read the configuration and customization handbook Ping page.', array('%ping' => 'http://drupal.org/handbook/modules/ping/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Alerts other sites when your site has been updated.'); } } Index: modules/poll/poll.module =================================================================== RCS file: /cvs/drupal/drupal/modules/poll/poll.module,v retrieving revision 1.202 diff -u -p -r1.202 poll.module --- modules/poll/poll.module 10 Jul 2006 08:05:15 -0000 1.202 +++ modules/poll/poll.module 30 Jul 2006 20:21:38 -0000 @@ -20,10 +20,10 @@ function poll_help($section) {
  • view the polls page.
  • administer >> settings >> content types >> configure poll.
  • -', array('%poll' => url('poll'), '%admin-node-configure-types-poll' => url('admin/settings/content-types/poll'))); +', array('%poll' => url('poll'), '%admin-node-configure-types-poll' => url('admin/content/types/poll'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Poll page.', array('%poll' => 'http://drupal.org/handbook/modules/poll/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t("Allows your site to capture votes on different topics in the form of multiple choice questions."); case 'node/add#poll': return t("A poll is a multiple-choice question which visitors can vote on."); Index: modules/profile/profile.module =================================================================== RCS file: /cvs/drupal/drupal/modules/profile/profile.module,v retrieving revision 1.159 diff -u -p -r1.159 profile.module --- modules/profile/profile.module 10 Jul 2006 19:27:52 -0000 1.159 +++ modules/profile/profile.module 30 Jul 2006 20:21:39 -0000 @@ -37,12 +37,12 @@ function profile_help($section) {
  • view user profiles.
  • administer profile settings: administer >> settings >> profiles.
  • -', array('%profile' => url('profile'), '%admin-settings-profile' => url('admin/settings/profile'))); +', array('%profile' => url('profile'), '%admin-settings-profile' => url('admin/user/profile'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Profile page.', array('%profile' => 'http://drupal.org/handbook/modules/profile/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Supports configurable user profiles.'); - case 'admin/settings/profile': + case 'admin/user/profile': return t('

    Here you can define custom fields that users can fill in in their user profile (such as country, real name, age, ...).

    '); } } @@ -59,23 +59,24 @@ function profile_menu($may_cache) { 'callback' => 'profile_browse', 'access' => user_access('access user profiles'), 'type' => MENU_SUGGESTED_ITEM); - $items[] = array('path' => 'admin/settings/profile', - 'title' => t('user profiles'), + $items[] = array('path' => 'admin/user/profile', + 'title' => t('profiles'), + 'description' => t('Create customizable fields for your users.'), 'callback' => 'profile_admin_overview'); - $items[] = array('path' => 'admin/settings/profile/add', + $items[] = array('path' => 'admin/user/profile/add', 'title' => t('add field'), 'callback' => 'profile_field_form', 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/settings/profile/autocomplete', + $items[] = array('path' => 'admin/user/profile/autocomplete', 'title' => t('profile category autocomplete'), 'callback' => 'profile_admin_settings_autocomplete', 'access' => user_access('administer users'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/settings/profile/edit', + $items[] = array('path' => 'admin/user/profile/edit', 'title' => t('edit field'), 'callback' => 'profile_field_form', 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/settings/profile/delete', + $items[] = array('path' => 'admin/user/profile/delete', 'title' => t('delete field'), 'callback' => 'profile_field_delete', 'type' => MENU_CALLBACK); @@ -110,7 +111,7 @@ function profile_block($op = 'list', $de '#title' => t('Profile fields to display'), '#default_value' => variable_get('profile_block_author_fields', NULL), '#options' => $fields, - '#description' => t('Select which profile fields you wish to display in the block. Only fields designated as public in the profile field configuration are available.', array('%profile-admin' => url('admin/settings/profile'))), + '#description' => t('Select which profile fields you wish to display in the block. Only fields designated as public in the profile field configuration are available.', array('%profile-admin' => url('admin/user/profile'))), ); return $form; } @@ -221,7 +222,7 @@ function profile_field_form($arg = NULL) $form['fields']['category'] = array('#type' => 'textfield', '#title' => t('Category'), '#default_value' => $edit['category'], - '#autocomplete_path' => 'admin/settings/profile/autocomplete', + '#autocomplete_path' => 'admin/user/profile/autocomplete', '#description' => t('The category the new field should be part of. Categories are used to group fields logically. An example category is "Personal information".'), '#required' => TRUE, ); @@ -337,7 +338,7 @@ function profile_field_form_submit($form db_query("INSERT INTO {profile_fields} (title, name, explanation, category, type, weight, required, register, visibility, autocomplete, options, page) VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, '%s', '%s')", $form_values['title'], $form_values['name'], $form_values['explanation'], $form_values['category'], $form_values['type'], $form_values['weight'], $form_values['required'], $form_values['register'], $form_values['visibility'], $form_values['autocomplete'], $form_values['options'], $form_values['page']); drupal_set_message(t('The field has been created.')); - watchdog('profile', t('Profile field %field added under category %category.', array('%field' => theme('placeholder', $form_values['title']), '%category' => theme('placeholder', $form_values['category']))), WATCHDOG_NOTICE, l(t('view'), 'admin/settings/profile')); + watchdog('profile', t('Profile field %field added under category %category.', array('%field' => theme('placeholder', $form_values['title']), '%category' => theme('placeholder', $form_values['category']))), WATCHDOG_NOTICE, l(t('view'), 'admin/user/profile')); } else { db_query("UPDATE {profile_fields} SET title = '%s', name = '%s', explanation = '%s', category = '%s', weight = %d, required = %d, register = %d, visibility = %d, autocomplete = %d, options = '%s', page = '%s' WHERE fid = %d", $form_values['title'], $form_values['name'], $form_values['explanation'], $form_values['category'], $form_values['weight'], $form_values['required'], $form_values['register'], $form_values['visibility'], $form_values['autocomplete'], $form_values['options'], $form_values['page'], $form_values['fid']); @@ -346,7 +347,7 @@ function profile_field_form_submit($form } cache_clear_all(); - return 'admin/settings/profile'; + return 'admin/user/profile'; } /** @@ -361,7 +362,7 @@ function profile_field_delete($fid) { $form['fid'] = array('#type' => 'value', '#value' => $fid); $form['title'] = array('#type' => 'value', '#value' => $field->title); - return confirm_form('profile_field_delete', $form, t('Are you sure you want to delete the field %field?', array('%field' => theme('placeholder', $field->title))), 'admin/settings/profile', t('This action cannot be undone. If users have entered values into this field in their profile, these entries will also be deleted. If you want to keep the user-entered data, instead of deleting the field you may wish to edit this field and change it to a %hidden-field so that it may only be accessed by administrators.', array('%edit-field' => url('admin/settings/profile/edit/' . $fid), '%hidden-field' => theme('placeholder', t('hidden profile field')))), t('Delete'), t('Cancel')); + return confirm_form('profile_field_delete', $form, t('Are you sure you want to delete the field %field?', array('%field' => theme('placeholder', $field->title))), 'admin/user/profile', t('This action cannot be undone. If users have entered values into this field in their profile, these entries will also be deleted. If you want to keep the user-entered data, instead of deleting the field you may wish to edit this field and change it to a %hidden-field so that it may only be accessed by administrators.', array('%edit-field' => url('admin/user/profile/edit/' . $fid), '%hidden-field' => theme('placeholder', t('hidden profile field')))), t('Delete'), t('Cancel')); } /** @@ -374,9 +375,9 @@ function profile_field_delete_submit($fo cache_clear_all(); drupal_set_message(t('The field %field has been deleted.', array('%field' => theme('placeholder', $form_values['title'])))); - watchdog('profile', t('Profile field %field deleted.', array('%field' => theme('placeholder', $form_values['title']))), WATCHDOG_NOTICE, l(t('view'), 'admin/settings/profile')); + watchdog('profile', t('Profile field %field deleted.', array('%field' => theme('placeholder', $form_values['title']))), WATCHDOG_NOTICE, l(t('view'), 'admin/user/profile')); - return 'admin/settings/profile'; + return 'admin/user/profile'; } /** @@ -387,7 +388,7 @@ function profile_admin_overview() { $result = db_query('SELECT * FROM {profile_fields} ORDER BY category, weight'); $rows = array(); while ($field = db_fetch_object($result)) { - $rows[] = array(check_plain($field->title), $field->name, _profile_field_types($field->type), $field->category, l(t('edit'), "admin/settings/profile/edit/$field->fid"), l(t('delete'), "admin/settings/profile/delete/$field->fid")); + $rows[] = array(check_plain($field->title), $field->name, _profile_field_types($field->type), $field->category, l(t('edit'), "admin/user/profile/edit/$field->fid"), l(t('delete'), "admin/user/profile/delete/$field->fid")); } if (count($rows) == 0) { $rows[] = array(array('data' => t('No fields defined.'), 'colspan' => '6')); @@ -399,7 +400,7 @@ function profile_admin_overview() { $output .= '

    '. t('Add new field') .'

    '; $output .= ''; Index: modules/search/search.module =================================================================== RCS file: /cvs/drupal/drupal/modules/search/search.module,v retrieving revision 1.184 diff -u -p -r1.184 search.module --- modules/search/search.module 17 Jul 2006 13:15:22 -0000 1.184 +++ modules/search/search.module 30 Jul 2006 20:21:40 -0000 @@ -107,7 +107,7 @@ function search_help($section) { ', array('%admin-help-system' => url('admin/help/system'), '%file-cron' => 'cron.php', '%external-http-drupal-org-node-23714' => 'http://drupal.org/node/23714', '%admin-settings-search' => url('admin/settings/search'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Search page.', array('%search' => 'http://drupal.org/handbook/modules/search/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Enables site-wide keyword searching.'); case 'admin/settings/search': return t(' @@ -152,12 +152,13 @@ function search_menu($may_cache) { if ($may_cache) { $items[] = array('path' => 'search', - 'title' => t('search'), + 'title' => t('search settings'), 'callback' => 'search_view', 'access' => user_access('search content'), 'type' => MENU_SUGGESTED_ITEM); $items[] = array('path' => 'admin/settings/search', 'title' => t('search'), + 'description' => t('Configure relevance settings for search and other indexing options'), 'callback' => 'search_admin_settings', 'access' => user_access('administer search'), 'type' => MENU_CALLBACK); Index: modules/statistics/statistics.module =================================================================== RCS file: /cvs/drupal/drupal/modules/statistics/statistics.module,v retrieving revision 1.232 diff -u -p -r1.232 statistics.module --- modules/statistics/statistics.module 27 Jul 2006 08:07:04 -0000 1.232 +++ modules/statistics/statistics.module 30 Jul 2006 20:21:41 -0000 @@ -38,12 +38,12 @@ function statistics_help($section) {
  • view recent hits administer >> logs >> recent hits.
  • enable \'popular content\' block in block administration administer >> blocks but only after you have enabled \'Count content views\' in settings.
  • -', array('%admin-settings-statistics' => url('admin/settings/statistics'), '%admin-logs' => url('admin/logs'), '%admin-logs-hits' => url('admin/logs/hits'), '%admin-block' => url('admin/block'))); +', array('%admin-settings-statistics' => url('admin/logs/settings'), '%admin-logs' => url('admin/logs'), '%admin-logs-hits' => url('admin/logs/hits'), '%admin-block' => url('admin/build/block'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Statistics page.', array('%statistics' => 'http://drupal.org/handbook/modules/statistics/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Logs access statistics for your site.'); - case 'admin/settings/statistics': + case 'admin/logs/settings': return t('

    Settings for the statistical information that Drupal will keep about the site. See site statistics for the actual information.

    ', array('%statistics' => url('admin/logs/hits'))); case 'admin/logs/hits': return t('

    This page shows you the most recent hits.

    '); @@ -117,35 +117,41 @@ function statistics_menu($may_cache) { $items[] = array( 'path' => 'admin/logs/hits', 'title' => t('recent hits'), + 'description' => t('View pages that have recently been hit.'), 'callback' => 'statistics_recent_hits', 'access' => $access, 'weight' => 3); $items[] = array( 'path' => 'admin/logs/pages', 'title' => t('top pages'), + 'description' => t('View pages that have been hit frequently.'), 'callback' => 'statistics_top_pages', 'access' => $access, 'weight' => 1); $items[] = array( 'path' => 'admin/logs/visitors', 'title' => t('top visitors'), + 'description' => t('View visitors that hit many pages.'), 'callback' => 'statistics_top_visitors', 'access' => $access, 'weight' => 2); $items[] = array( 'path' => 'admin/logs/referrers', 'title' => t('referrers'), + 'description' => t('View top referrers.'), 'callback' => 'statistics_top_referrers', 'access' => $access); $items[] = array( 'path' => 'admin/logs/access', 'title' => t('details'), + 'description' => t('View access log.'), 'callback' => 'statistics_access_log', 'access' => $access, 'type' => MENU_CALLBACK); $items[] = array( - 'path' => 'admin/settings/access-logging', - 'title' => t('access logging'), + 'path' => 'admin/logs/settings', + 'title' => t('access log settings'), + 'description' => t('Control details about what and how your site logs.'), 'callback' => 'statistics_access_logging_settings', 'access' => user_access('administer site configuration'), 'type' => MENU_NORMAL_ITEM Index: modules/story/story.module =================================================================== RCS file: /cvs/drupal/drupal/modules/story/story.module,v retrieving revision 1.187 diff -u -p -r1.187 story.module --- modules/story/story.module 7 May 2006 00:08:36 -0000 1.187 +++ modules/story/story.module 30 Jul 2006 20:21:41 -0000 @@ -19,10 +19,10 @@ function story_help($section) {
  • post a story at create content >> story.
  • configure story at administer >> settings >> content types >> configure story.
  • -', array('%node-add-story' => url('node/add/story'), '%admin-settings-content-types-story' => url('admin/settings/content-types/story'))); +', array('%node-add-story' => url('node/add/story'), '%admin-settings-content-types-story' => url('admin/content/types/story'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Story page.', array('%story' => 'http://drupal.org/handbook/modules/story/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Allows users to submit stories, articles or similar content.'); case 'node/add#story': return t('Stories are articles in their simplest form: they have a title, a teaser and a body, but can be extended by other modules. The teaser is part of the body too. Stories may be used as a personal blog or for news articles.'); Index: modules/system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.332 diff -u -p -r1.332 system.module --- modules/system/system.module 10 Jul 2006 21:12:09 -0000 1.332 +++ modules/system/system.module 30 Jul 2006 20:21:43 -0000 @@ -28,19 +28,19 @@ function system_help($section) { ', array('%file-cron' => 'cron.php', '%external-http-drupal-org-cron' => 'http://drupal.org/cron', '%admin-settings' => url('admin/settings/caching'))); $output .= '

    '. t('For more information please read the configuration and customization handbook System page.', array('%system' => 'http://drupal.org/handbook/modules/system/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Handles general site configuration for administrators.'); case 'admin': - return t('

    Welcome to the administration section. Below are the most recent system events.

    '); - case 'admin/themes': + return t('

    Welcome to the administration section. Here you may control how your site functions.

    '); + case 'admin/build/themes': return t('

    Select which themes are available to your users and specify the default theme. To configure site-wide display settings, click the "configure" task above. Alternately, to override these settings in a specific theme, click the "configure" link for the corresponding theme. Note that different themes may have different regions available for rendering content like blocks. If you want consistency in what your users see, you may wish to enable only one theme.

    '); - case 'admin/themes/settings': + case 'admin/build/themes/settings': return t('

    These options control the default display settings for your entire site, across all themes. Unless they have been overridden by a specific theme, these settings will be used.

    '); - case 'admin/themes/settings/'. arg(3): + case 'admin/build/themes/settings/'. arg(3): $reference = explode('.', arg(3), 2); $theme = array_pop($reference); - return t('

    These options control the display settings for the %template theme. When your site is displayed using this theme, these settings will be used. By clicking "Reset to defaults," you can choose to use the global settings for this theme.

    ', array('%template' => $theme, '%global' => url('admin/themes/settings'))); - case 'admin/modules': + return t('

    These options control the display settings for the %template theme. When your site is displayed using this theme, these settings will be used. By clicking "Reset to defaults," you can choose to use the global settings for this theme.

    ', array('%template' => $theme, '%global' => url('admin/build/themes/settings'))); + case 'admin/settings/modules': return t('

    Modules are plugins for Drupal that extend its core functionality. Here you can select which modules are enabled. Click on the name of the module in the navigation menu for their individual configuration pages. Once a module is enabled, new permissions might be made available. Modules can automatically be temporarily disabled to reduce server load when your site becomes extremely busy by enabling the throttle.module and checking throttle. The auto-throttle functionality must be enabled on the throttle configuration page after having enabled the throttle module.

    It is important that update.php is run every time a module is updated to a newer version.

    ', array('%permissions' => url('admin/access/permissions'), '%throttle' => url('admin/settings/throttle'), '%update-php' => $base_url .'/update.php')); } @@ -101,87 +101,138 @@ function system_menu($may_cache) { $items[] = array('path' => 'admin', 'title' => t('administer'), 'access' => user_access('access administration pages'), - 'callback' => 'watchdog_overview', + 'callback' => 'system_main_admin_page', 'weight' => 9); + $items[] = array('path' => 'admin/compact', 'title' => t('compact mode'), + 'access' => user_access('access administration pages'), + 'callback' => 'system_admin_compact_page', + 'type' => MENU_CALLBACK); + + // menu items that are basically just menu blocks + $items[] = array( + 'path' => 'admin/settings', + 'title' => t('site configuration'), + 'description' => t('Adjust basic site configuration options.'), + 'position' => 'right', + 'weight' => -5, + 'callback' => 'system_settings_overview', + 'access' => $access); + + $items[] = array('path' => 'admin/build', + 'title' => t('site building'), + 'description' => t('Control how your site looks and feels.'), + 'position' => 'right', + 'weight' => -10, + 'callback' => 'system_admin_menu_block_page', + 'access' => $access); + + $items[] = array( + 'path' => 'admin/settings/admin', + 'title' => t('administration page settings'), + 'description' => t('This block contains settings for how your administrative pages should look.'), + 'position' => 'left', + 'callback' => 'system_admin_page_settings', + 'block callback' => 'system_admin_page_settings', + 'access' => $access); // Themes: - $items[] = array('path' => 'admin/themes', 'title' => t('themes'), + $items[] = array( + 'path' => 'admin/build/themes', + 'title' => t('themes'), + 'description' => t('Change which theme your site uses or allows users to set.'), 'callback' => 'system_themes', 'access' => $access); - $items[] = array('path' => 'admin/themes/select', 'title' => t('list'), - 'callback' => 'system_themes', 'access' => $access, - 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1); - - $items[] = array('path' => 'admin/themes/settings', 'title' => t('configure'), - 'callback' => 'system_theme_settings', 'access' => $access, + $items[] = array( + 'path' => 'admin/build/themes/select', + 'title' => t('list'), + 'description' => t('Select the default theme.'), + 'callback' => 'system_themes', + 'access' => $access, + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'weight' => -1); + + $items[] = array('path' => 'admin/build/themes/settings', + 'title' => t('configure'), + 'callback' => 'system_theme_settings', + 'access' => $access, 'type' => MENU_LOCAL_TASK); // Theme configuration subtabs - $items[] = array('path' => 'admin/themes/settings/global', 'title' => t('global settings'), + $items[] = array('path' => 'admin/build/themes/settings/global', 'title' => t('global settings'), 'callback' => 'system_theme_settings', 'access' => $access, 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1); foreach (list_themes() as $theme) { if ($theme->status) { - $items[] = array('path' => 'admin/themes/settings/'. $theme->name, 'title' => $theme->name, + $items[] = array('path' => 'admin/build/themes/settings/'. $theme->name, 'title' => $theme->name, 'callback' => 'system_theme_settings', 'callback arguments' => array($theme->name), 'access' => $access, 'type' => MENU_LOCAL_TASK); } } // Modules: - $items[] = array('path' => 'admin/modules', 'title' => t('modules'), - 'callback' => 'system_modules', 'access' => $access); + $items[] = array('path' => 'admin/settings/modules', + 'title' => t('modules'), + 'description' => t('Enable or disable add-on modules for your site.'), + 'weight' => -10, + 'callback' => 'system_modules', + 'access' => $access); // Settings: $items[] = array( - 'path' => 'admin/settings', - 'title' => t('settings'), - 'callback' => 'system_settings_overview', - 'access' => $access); - $items[] = array( 'path' => 'admin/settings/site-information', 'title' => t('site information'), + 'description' => t('Change basic site information, such as the site name, slogan, e-mail address, mission, front page and more.'), 'callback' => 'system_site_information_settings'); $items[] = array( 'path' => 'admin/settings/error-reporting', 'title' => t('error reporting'), + 'description' => t('Control how Drupal deals with errors including 403/404 erros as well as PHP error reporting.'), 'callback' => 'system_error_reporting_settings'); $items[] = array( 'path' => 'admin/settings/page-caching', 'title' => t('page caching'), + 'description' => t('Enable or disable page caching for anonymous users.'), 'callback' => 'system_page_caching_settings'); $items[] = array( 'path' => 'admin/settings/file-system', 'title' => t('file system'), + 'description' => t('Tell Drupal where to store uploaded files and how they are accessed.'), 'callback' => 'system_file_system_settings'); $items[] = array( 'path' => 'admin/settings/image-toolkit', 'title' => t('image toolkit'), + 'description' => t('Choose which image toolkit to use if you have installed optional toolkits.'), 'callback' => 'system_image_toolkit_settings'); $items[] = array( - 'path' => 'admin/settings/rss-feed', + 'path' => 'admin/content/rss-feed', 'title' => t('RSS feeds'), + 'description' => t('Configure the number of items per feed and whether feeds should be titles/teasers/full-text.'), 'callback' => 'system_rss_feeds_settings'); $items[] = array( 'path' => 'admin/settings/date-time', 'title' => t('date and time'), + 'description' => t('Settings for how Drupal displays date and time, as well as the system\'s default timezone.'), 'callback' => 'system_date_time_settings'); $items[] = array( 'path' => 'admin/settings/site-status', 'title' => t('site status'), + 'description' => t('Take the site off-line for maintenance or bring it back online.'), 'callback' => 'system_site_status_settings'); $items[] = array( 'path' => 'admin/settings/unicode', 'title' => t('unicode'), + 'description' => t('Unicode string handling settings.'), 'callback' => 'system_unicode_settings'); $items[] = array( 'path' => 'admin/settings/cron-status', 'title' => t('cron status'), + 'description' => t('View whether or not cron is running on your site.'), 'callback' => 'system_cron_status'); $items[] = array( 'path' => 'admin/settings/clean-urls', 'title' => t('clean URLs'), + 'description' => t('Enable or disable clean URLs for your site.'), 'callback' => 'system_clean_url_settings'); } @@ -210,6 +261,127 @@ function system_user($type, $edit, &$use } } +/** + * 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 ($arg !== NULL) { + return drupal_not_found(); + } + + $menu = menu_get_item(NULL, 'admin'); + usort($menu['children'], '_menu_sort'); + foreach ($menu['children'] as $mid) { + $block = menu_get_item($mid); + if ($block['block callback'] && function_exists($block['block callback'])) { + $arguments = isset($block['block arguments']) ? $block['block arguments'] : array(); + $block['content'] .= call_user_func_array($block['block callback'], $arguments); + } + $block['content'] .= theme('admin_block_content', system_admin_menu_block($block)); + $blocks[] = $block; + } + + return theme('admin_page', $blocks); +} + +/** + * Provide a single block on the administration overview page. + */ +function system_admin_menu_block($block) { + $content = array(); + if (is_array($block['children'])) { + usort($block['children'], '_menu_sort'); + foreach ($block['children'] as $mid) { + $item = menu_get_item($mid); + if ($item['type'] & MENU_VISIBLE_IN_TREE) { + $content[] = $item; + } + } + } + return $content; +} + +/** + * Provide a single block from the administration menu as a page. + * This function is often a destination for these blocks. + * For example, 'admin/page' 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() { + $menu = menu_get_item(NULL, $_GET['q']); + $content = system_admin_menu_block($menu); + + $output = theme('admin_block_content', $content); + return $output; +} + +function system_admin_compact_page($mode = 'off') { + global $user; + user_save($user, array('admin_compact_mode' => ($mode == 'on'))); + drupal_goto('admin'); +} +/** + * This function provides a form to control the settings of the + * administration page. + */ +function system_admin_page_settings() { + $themes = system_theme_data(); + ksort($themes); + $options[0] = t('System default'); + foreach ($themes as $theme) { + $options[$theme->name] = $theme->name; + } + + $form['admin_theme'] = array( + '#type' => 'select', + '#options' => $options, + '#title' => t('Administration theme'), + '#description' => t('Choose which theme the administration pages should display in. If you choose "System default" the administration pages theme will display in the same theme the rest of the site uses.'), + '#default_value' => variable_get('admin_theme', 'bluemarine'), + ); + + $form['admin_compact_mode'] = array( + '#type' => 'checkbox', + '#title' => t('compact mode'), + '#description' => t('Set the default "compact mode" to compact the information on this page. Individual users will be able to override this.'), + '#default_value' => variable_get('admin_compact_mode', FALSE), + ); + // In order to give it our own submit, we have to give it the default submit + // too because the presence of a #submit will prevent the default #submit + // from being used. Also we want ours first. + $form['#submit']['system_admin_page_submit'] = array(); + $form['#submit']['system_settings_form_submit'] = array(); + + return system_settings_form('system_admin_page_form', $form); +} + + +function system_admin_page_submit($form_id, $form_values) { + // If we're changing themes, make sure the theme has its blocks initialized. + if ($form_values['admin_theme'] != variable_get('admin_theme', 'bluemarine')) { + $result = db_query("SELECT status FROM {blocks} WHERE theme = '%s'", $form_values['admin_theme']); + if (!db_num_rows($result)) { + system_initialize_theme_blocks($form_values['admin_theme']); + } + } +} + +/** + * Implementation of hook_init. This hook will set the theme to the + * administrative theme if the user is looking at a page in the + * admin/* tree. + */ +function system_init() { + if (arg(0) == 'admin') { + global $custom_theme; + $custom_theme = variable_get('admin_theme', 'bluemarine'); + } +} + /* * Returns a fieldset containing the theme select form. * @@ -916,7 +1088,7 @@ function system_themes() { $status[] = $info->name; } if ($info->status && (function_exists($info->prefix . '_settings') || function_exists($info->prefix . '_features'))) { - $form[$info->name]['operations'] = array('#type' => 'markup', '#value' => l(t('configure'), 'admin/themes/settings/' . $info->name) ); + $form[$info->name]['operations'] = array('#type' => 'markup', '#value' => l(t('configure'), 'admin/build/themes/settings/' . $info->name) ); } else { // Dummy element for form_render. Cleaner than adding a check in the theme function. @@ -980,7 +1152,7 @@ function system_themes_submit($form_id, menu_rebuild(); drupal_set_message(t('The configuration options have been saved.')); - return 'admin/themes'; + return 'admin/build/themes'; } /** @@ -999,7 +1171,7 @@ function system_modules() { drupal_get_filename('module', $file->name, $file->filename); drupal_load('module', $file->name); - $file->description = module_invoke($file->name, 'help', 'admin/modules#description'); + $file->description = module_invoke($file->name, 'help', 'admin/settings/modules#description'); $form['name'][$file->name] = array('#value' => $file->name); $form['description'][$file->name] = array('#value' => $file->description); @@ -1115,7 +1287,7 @@ function system_modules_submit($form_id, menu_rebuild(); drupal_set_message(t('The configuration options have been saved.')); - return 'admin/modules'; + return 'admin/settings/modules'; } @@ -1124,25 +1296,21 @@ function system_modules_submit($form_id, */ function system_settings_overview() { - // Check database setup if necessary - if (function_exists('db_check_setup') && empty($_POST)) { - db_check_setup(); - } - - $output = ''; - - // TODO: remove this: - foreach (module_implements('settings') as $module) { - drupal_set_message("$module settings inaccessible: module needs updating because the _settings hook has been deprecated."); - } + // Check database setup if necessary + if (function_exists('db_check_setup') && empty($_POST)) { + db_check_setup(); + } + + $menu = menu_get_item(NULL, 'admin/settings'); + $content = system_admin_menu_block($menu); + + $output = theme('admin_block_content', $content); + // TODO: remove this: + foreach (module_implements('settings') as $module) { + drupal_set_message("$module settings inaccessible: module needs updating because the _settings hook has been deprecated."); + } - return $output; + return $output; } /** @@ -1376,3 +1544,114 @@ function confirm_form($form_id, $form, $ $form['actions']['cancel'] = array('#value' => l($no ? $no : t('Cancel'), $path)); return drupal_get_form($form_id, $form, 'confirm_form'); } + +/** + * Determine if a user is in compact mode. + */ +function system_admin_compact_mode() { + global $user; + return (isset($user->admin_compact_mode)) ? $user->admin_compact_mode : variable_get('admin_compact_mode', FALSE); +} + +/** + * This function formats an administrative page for viewing. + * + * @param $blocks + * An array of blocks to display. Each array should include a + * 'title', a 'description', a formatted 'content' and a + * 'position' which will control which container it will be + * in. This is usually 'left' or 'right'. + * @themeable + */ +function theme_admin_page($blocks) { + foreach ($blocks as $block) { + if ($block_output = theme('admin_block', $block)) { + if (!$block['position']) { + // perform automatic striping. + $block['position'] = $stripe++ % 2 ? 'left' : 'right'; + } + $container[$block['position']] .= $block_output; + } + } + + $output = '
    '; + $output .= ''; + + foreach ($container as $id => $data) { + $output .= '
    '; + $output .= $data; + $output .= '
    '; + } + $output .= '
    '; + return $output; +} + +/** + * This function formats an administrative block for display. + * + * @param $block + * An array containing information about the block. It should + * include a 'title', a 'description' and a formatted 'content'. + * @themeable + */ +function theme_admin_block($block) { + // Don't display the block if it has no content to display. + if (!$block['content']) { + return ''; + } + + $output = <<< EOT +
    +
    + $block[title] +
    +
    +
    + $block[description] +
    + $block[content] +
    +
    +EOT; + return $output; +} + +/** + * This function formats the content of an administrative block. + * + * @param $block + * An array containing information about the block. It should + * include a 'title', a 'description' and a formatted 'content'. + * @themeable + */ +function theme_admin_block_content($content) { + if (!$content) { + return ''; + } + + if (system_admin_compact_mode()) { + $output = ''; + } + else { + $output = '
    '; + foreach ($content as $item) { + $output .= '
    '. l($item['title'], $item['path']) .'
    '; + $output .= '
    '. $item['description'] .'
    '; + } + $output .= '
    '; + } + return $output; +} \ No newline at end of file Index: modules/taxonomy/taxonomy.module =================================================================== RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v retrieving revision 1.295 diff -u -p -r1.295 taxonomy.module --- modules/taxonomy/taxonomy.module 14 Jul 2006 01:01:15 -0000 1.295 +++ modules/taxonomy/taxonomy.module 30 Jul 2006 20:21:44 -0000 @@ -62,29 +62,30 @@ function taxonomy_menu($may_cache) { $items = array(); if ($may_cache) { - $items[] = array('path' => 'admin/taxonomy', + $items[] = array('path' => 'admin/content/taxonomy', 'title' => t('categories'), + 'description' => t('Create vocabularies and terms to categorize your content.'), 'callback' => 'taxonomy_overview_vocabularies', 'access' => user_access('administer taxonomy')); - $items[] = array('path' => 'admin/taxonomy/list', + $items[] = array('path' => 'admin/content/taxonomy/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/taxonomy/add/vocabulary', + $items[] = array('path' => 'admin/content/taxonomy/add/vocabulary', 'title' => t('add vocabulary'), 'callback' => 'taxonomy_admin_vocabulary_edit', 'access' => user_access('administer taxonomy'), 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/taxonomy/edit/vocabulary', + $items[] = array('path' => 'admin/content/taxonomy/edit/vocabulary', 'title' => t('edit vocabulary'), 'callback' => 'taxonomy_admin_vocabulary_edit', 'access' => user_access('administer taxonomy'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/taxonomy/edit/term', + $items[] = array('path' => 'admin/content/taxonomy/edit/term', 'title' => t('edit term'), 'callback' => 'taxonomy_admin_term_edit', 'access' => user_access('administer taxonomy'), @@ -104,19 +105,19 @@ function taxonomy_menu($may_cache) { } else { if (is_numeric(arg(2))) { - $items[] = array('path' => 'admin/taxonomy/' . arg(2), + $items[] = array('path' => 'admin/content/taxonomy/' . arg(2), 'title' => t('list terms'), 'callback' => 'taxonomy_overview_terms', 'callback arguments' => array(arg(2)), 'access' => user_access('administer taxonomy'), 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/taxonomy/' . arg(2) . '/list', + $items[] = array('path' => 'admin/content/taxonomy/' . arg(2) . '/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/taxonomy/' . arg(2) . '/add/term', + $items[] = array('path' => 'admin/content/taxonomy/' . arg(2) . '/add/term', 'title' => t('add term'), 'callback' => 'taxonomy_form_term', 'callback arguments' => array(array('vid' => arg(2))), @@ -142,9 +143,9 @@ function taxonomy_overview_vocabularies( } $rows[] = array('name' => check_plain($vocabulary->name), 'type' => implode(', ', $types), - 'edit' => l(t('edit vocabulary'), "admin/taxonomy/edit/vocabulary/$vocabulary->vid"), - 'list' => l(t('list terms'), "admin/taxonomy/$vocabulary->vid"), - 'add' => l(t('add terms'), "admin/taxonomy/$vocabulary->vid/add/term") + 'edit' => l(t('edit vocabulary'), "admin/content/taxonomy/edit/vocabulary/$vocabulary->vid"), + 'list' => l(t('list terms'), "admin/content/taxonomy/$vocabulary->vid"), + 'add' => l(t('add terms'), "admin/content/taxonomy/$vocabulary->vid/add/term") ); } if (empty($rows)) { @@ -175,7 +176,7 @@ function taxonomy_overview_terms($vid) { foreach ($tree as $term) { $total_entries++; // we're counting all-totals, not displayed if (($start_from && ($start_from * $page_increment) >= $total_entries) || ($displayed_count == $page_increment)) { continue; } - $rows[] = array(_taxonomy_depth($term->depth) . ' ' . l($term->name, "taxonomy/term/$term->tid"), l(t('edit'), "admin/taxonomy/edit/term/$term->tid", array(), $destination)); + $rows[] = array(_taxonomy_depth($term->depth) . ' ' . l($term->name, "taxonomy/term/$term->tid"), l(t('edit'), "admin/content/taxonomy/edit/term/$term->tid", array(), $destination)); $displayed_count++; // we're counting tids displayed } @@ -285,7 +286,7 @@ function taxonomy_form_vocabulary_submit drupal_set_message(t('Updated vocabulary %name.', array('%name' => theme('placeholder', $form_values['name'])))); break; } - return 'admin/taxonomy'; + return 'admin/content/taxonomy'; } function taxonomy_save_vocabulary(&$edit) { @@ -344,7 +345,7 @@ function _taxonomy_confirm_del_vocabular return confirm_form('taxonomy_vocabulary_confirm_delete', $form, t('Are you sure you want to delete the vocabulary %title?', array('%title' => theme('placeholder', $vocabulary->name))), - 'admin/taxonomy', t('Deleting a vocabulary will delete all the terms in it. This action cannot be undone.'), + 'admin/content/taxonomy', t('Deleting a vocabulary will delete all the terms in it. This action cannot be undone.'), t('Delete'), t('Cancel')); } @@ -352,7 +353,7 @@ function _taxonomy_confirm_del_vocabular function taxonomy_vocabulary_confirm_delete_submit($form_id, $form_values) { $status = taxonomy_del_vocabulary($form_values['vid']); drupal_set_message(t('Deleted vocabulary %name.', array('%name' => theme('placeholder', $form_values['name'])))); - return 'admin/taxonomy'; + return 'admin/content/taxonomy'; } function taxonomy_form_term($edit = array()) { @@ -424,7 +425,7 @@ function taxonomy_form_term_submit($form drupal_set_message(t('The term %term has been updated.', array('%term' => theme('placeholder', $form_values['name'])))); break; } - return 'admin/taxonomy'; + return 'admin/content/taxonomy'; } function taxonomy_save_term(&$edit) { @@ -530,7 +531,7 @@ function _taxonomy_confirm_del_term($tid return confirm_form('taxonomy_term_confirm_delete', $form, t('Are you sure you want to delete the term %title?', array('%title' => theme('placeholder', $term->name))), - 'admin/taxonomy', + 'admin/content/taxonomy', t('Deleting a term will delete all its children if there are any. This action cannot be undone.'), t('Delete'), t('Cancel')); @@ -539,7 +540,7 @@ function _taxonomy_confirm_del_term($tid function taxonomy_term_confirm_delete_submit($form_id, $form_values) { taxonomy_del_term($form_values['tid']); drupal_set_message(t('Deleted term %name.', array('%name' => theme('placeholder', $form_values['name'])))); - return 'admin/taxonomy'; + return 'admin/content/taxonomy'; } /** @@ -1343,14 +1344,14 @@ function taxonomy_help($section) {
  • restrict content access by category for specific users roles using the taxonomy access module.
  • build a custom view of your categories using the taxonomy browser.
  • -', array('%admin-taxonomy-add-vocabulary' => url('admin/taxonomy/add/vocabulary'), '%admin-taxonomy' => url('admin/taxonomy'), '%external-http-drupal-org-project-taxonomy_access' => 'http://drupal.org/project/taxonomy_access', '%external-http-drupal-org-project-taxonomy_browser' => 'http://drupal.org/project/taxonomy_browser')); +', array('%admin-taxonomy-add-vocabulary' => url('admin/content/taxonomy/add/vocabulary'), '%admin-taxonomy' => url('admin/content/taxonomy'), '%external-http-drupal-org-project-taxonomy_access' => 'http://drupal.org/project/taxonomy_access', '%external-http-drupal-org-project-taxonomy_browser' => 'http://drupal.org/project/taxonomy_browser')); $output .= '

    '. t('For more information please read the configuration and customization handbook Taxonomy page.', array('%taxonomy' => 'http://drupal.org/handbook/modules/taxonomy/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Enables the categorization of content.'); - case 'admin/taxonomy': + case 'admin/content/taxonomy': return t('

    The taxonomy module allows you to classify content into categories and subcategories; it allows multiple lists of categories for classification (controlled vocabularies) and offers the possibility of creating thesauri (controlled vocabularies that indicate the relationship of terms), taxonomies (controlled vocabularies where relationships are indicated hierarchically), and free vocabularies where terms, or tags, are defined during content creation. To view and manage the terms of each vocabulary, click on the associated list terms link. To delete a vocabulary and all its terms, choose "edit vocabulary".

    '); - case 'admin/taxonomy/add/vocabulary': + case 'admin/content/taxonomy/add/vocabulary': return t("

    When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo). Drupal allows you to describe each piece of content (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to Slashdot.org's or Kuro5hin.org's sections. For more complex implementations, you might create a hierarchical list of categories.

    "); } } Index: modules/throttle/throttle.module =================================================================== RCS file: /cvs/drupal/drupal/modules/throttle/throttle.module,v retrieving revision 1.61 diff -u -p -r1.61 throttle.module --- modules/throttle/throttle.module 10 Jul 2006 19:27:52 -0000 1.61 +++ modules/throttle/throttle.module 30 Jul 2006 20:21:45 -0000 @@ -12,6 +12,7 @@ function throttle_menu($may_cache) { if ($may_cache) { $items[] = array( 'path' => 'admin/settings/throttle', + 'description' => t('Control how your site cuts out content during heavy load.'), 'title' => t('throttle'), 'callback' => 'throttle_admin_settings', 'access' => user_access('administer site configuration'), @@ -128,10 +129,10 @@ function throttle_help($section) {
  • enable throttle for blocks at administer >> block.
  • administer throttle at administer >> settings >> throttle.
  • -', array('%admin-modules' => url('admin/modules'), '%admin-block' => url('admin/block'), '%admin-settings-throttle' => url('admin/settings/throttle'))); +', array('%admin-modules' => url('admin/settings/modules'), '%admin-block' => url('admin/build/block'), '%admin-settings-throttle' => url('admin/settings/throttle'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Throttle page.', array('%throttle' => 'http://drupal.org/handbook/modules/throttle/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Handles the auto-throttling mechanism, to control site congestion.'); case 'admin/settings/throttle': return t('If your site gets linked to by a popular website, or otherwise comes under a "Denial of Service" (DoS) attack, your webserver might become overwhelmed. This module provides a congestion control throttling mechanism for automatically detecting a surge in incoming traffic. This mechanism is utilized by other Drupal modules to automatically optimize their performance by temporarily disabling CPU-intensive functionality.'); Index: modules/tracker/tracker.module =================================================================== RCS file: /cvs/drupal/drupal/modules/tracker/tracker.module,v retrieving revision 1.130 diff -u -p -r1.130 tracker.module --- modules/tracker/tracker.module 7 May 2006 00:08:36 -0000 1.130 +++ modules/tracker/tracker.module 30 Jul 2006 20:21:45 -0000 @@ -23,7 +23,7 @@ function tracker_help($section) { ', array('%tracker' => url('tracker'), '%profile' => url('profile'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Tracker page.', array('%tracker' => 'http://drupal.org/handbook/modules/tracker/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Enables tracking of recent posts for users.'); } } Index: modules/upload/upload.module =================================================================== RCS file: /cvs/drupal/drupal/modules/upload/upload.module,v retrieving revision 1.113 diff -u -p -r1.113 upload.module --- modules/upload/upload.module 19 Jul 2006 07:15:35 -0000 1.113 +++ modules/upload/upload.module 30 Jul 2006 20:21:45 -0000 @@ -21,13 +21,13 @@ function upload_help($section) {
  • administer content at administer >> settings >> content types.
  • administer upload at administer >> settings >> upload.
  • -', array('%admin-access' => url('admin/access'), '%admin-content-types' => url('admin/settings/content-types'), '%admin-upload' => url('admin/settings/upload'))); +', array('%admin-access' => url('admin/access'), '%admin-content-types' => url('admin/settings/types'), '%admin-upload' => url('admin/settings/upload'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Upload page.', array('%upload' => 'http://drupal.org/handbook/modules/upload/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Allows users to upload and attach files to content.'); case 'admin/settings/upload': - return t('

    Users with the upload files permission can upload attachments. Users with the view uploaded files permission can view uploaded attachments. You can choose which post types can take attachments on the content types settings page.

    ', array('%permissions' => url('admin/access'), '%types' => url('admin/settings/content-types'))); + return t('

    Users with the upload files permission can upload attachments. Users with the view uploaded files permission can view uploaded attachments. You can choose which post types can take attachments on the content types settings page.

    ', array('%permissions' => url('admin/access'), '%types' => url('admin/settings/types'))); } } @@ -80,6 +80,7 @@ function upload_menu($may_cache) { ); $items[] = array('path' => 'admin/settings/uploads', 'title' => t('file uploads'), + 'description' => t('Control how files may be attached to content.'), 'callback' => 'upload_admin_settings', 'access' => user_access('administer site configuration'), 'type' => MENU_NORMAL_ITEM); Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.642 diff -u -p -r1.642 user.module --- modules/user/user.module 29 Jul 2006 17:56:41 -0000 1.642 +++ modules/user/user.module 30 Jul 2006 20:21:48 -0000 @@ -688,50 +688,59 @@ function user_menu($may_cache) { 'callback' => 'user_help_page', 'type' => MENU_CALLBACK); // Admin user pages - $items[] = array('path' => 'admin/user', 'title' => t('users'), + $items[] = array('path' => 'admin/user', + 'title' => t('user management'), + 'description' => t('Manage your site\'s users, groups and access to site features.'), + 'position' => 'left', + 'callback' => 'system_admin_menu_block_page', + 'access' => user_access('access configuration pages'), + ); + $items[] = array('path' => 'admin/user/user', 'title' => t('users'), + 'description' => t('List, add, and edit users.'), 'callback' => 'user_admin', 'access' => $admin_access); - $items[] = array('path' => 'admin/user/list', 'title' => t('list'), + $items[] = array('path' => 'admin/user/user/list', 'title' => t('list'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/user/create', 'title' => t('add user'), + $items[] = array('path' => 'admin/user/user/create', 'title' => t('add user'), 'callback' => 'user_admin', 'access' => $admin_access, 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/settings/user', 'title' => t('users'), + $items[] = array('path' => 'admin/user/settings', 'title' => t('user settings'), + 'description' => t('Configure default behavior of users, including registration requirements, e-mails, and user pictures.'), 'callback' => 'user_admin_settings'); // Admin access pages - $items[] = array('path' => 'admin/access', 'title' => t('access control'), + $items[] = array('path' => 'admin/user/access', 'title' => t('access control'), + 'description' => t('Determine access to features by selecting permissions for roles.'), 'callback' => 'user_admin_perm', 'access' => $access_access); - $items[] = array('path' => 'admin/access/permissions', 'title' => t('permissions'), - 'callback' => 'user_admin_perm', 'access' => $access_access, - 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/access/roles', 'title' => t('roles'), + $items[] = array('path' => 'admin/user/roles', 'title' => t('roles'), + 'description' => t('List, edit, or add user roles.'), 'callback' => 'user_admin_role', 'access' => $access_access, - 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/access/roles/edit', 'title' => t('edit role'), + 'type' => MENU_NORMAL_ITEM); + $items[] = array('path' => 'admin/user/roles/edit', 'title' => t('edit role'), 'callback' => 'user_admin_role', 'access' => $access_access, 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/access/rules', 'title' => t('access rules'), - 'callback' => 'user_admin_access', 'access' => $access_access, - 'type' => MENU_LOCAL_TASK, 'weight' => 10); - $items[] = array('path' => 'admin/access/rules/list', 'title' => t('list'), + $items[] = array('path' => 'admin/user/rules', 'title' => t('access rules'), + 'description' => t('List and create rules to disallow usernames, e-mail addresses, and IP addresses.'), + 'callback' => 'user_admin_access', 'access' => $access_access); + $items[] = array('path' => 'admin/user/rules/list', 'title' => t('list'), 'access' => $access_access, 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10); - $items[] = array('path' => 'admin/access/rules/add', 'title' => t('add rule'), + $items[] = array('path' => 'admin/user/rules/add', 'title' => t('add rule'), 'callback' => 'user_admin_access_add', 'access' => $access_access, 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/access/rules/check', 'title' => t('check rules'), + $items[] = array('path' => 'admin/user/rules/check', 'title' => t('check rules'), 'callback' => 'user_admin_access_check', 'access' => $access_access, 'type' => MENU_LOCAL_TASK); - $items[] = array('path' => 'admin/access/rules/edit', 'title' => t('edit rule'), + $items[] = array('path' => 'admin/user/rules/edit', 'title' => t('edit rule'), 'callback' => 'user_admin_access_edit', 'access' => $access_access, 'type' => MENU_CALLBACK); - $items[] = array('path' => 'admin/access/rules/delete', 'title' => t('delete rule'), + $items[] = array('path' => 'admin/user/rules/delete', 'title' => t('delete rule'), 'callback' => 'user_admin_access_delete', 'access' => $access_access, 'type' => MENU_CALLBACK); if (module_exist('search')) { - $items[] = array('path' => 'admin/user/search', 'title' => t('search'), + $items[] = array('path' => 'admin/user/search', 'title' => t('search users'), + 'description' => t('Search users by name.'), 'callback' => 'user_admin', 'access' => $admin_access, - 'type' => MENU_LOCAL_TASK); + 'type' => MENU_NORMAL_ITEM); } // Your personal page @@ -1141,7 +1150,7 @@ function user_register() { '#type' => 'checkbox', '#title' => t('Notify user of new account') ); - // Redirect back to page which initiated the create request; usually admin/user/create + // Redirect back to page which initiated the create request; usually admin/user/user/create $form['destination'] = array('#type' => 'hidden', '#value' => $_GET['q']); } $extra = _user_forms($null, $null, $null, 'register'); @@ -1352,7 +1361,7 @@ function user_edit($category = 'account' $account = user_load(array('uid' => arg(1))); if ($account === FALSE) { drupal_set_message(t('The account does not exist or has already been deleted.')); - drupal_goto('admin/user'); + drupal_goto('admin/user/user'); } $edit = $_POST['op'] ? $_POST['edit'] : (array)$account; @@ -1365,7 +1374,7 @@ function user_edit($category = 'account' watchdog('user', t('Deleted user: %name %email.', array('%name' => theme('placeholder', $account->name), '%email' => theme('placeholder', '<'. $account->mail .'>'))), WATCHDOG_NOTICE); drupal_set_message(t('The account has been deleted.')); module_invoke_all('user', 'delete', $edit, $account); - drupal_goto('admin/user'); + drupal_goto('admin/user/user'); } else { return confirm_form('user_confirm_delete', array(), t('Are you sure you want to delete the account %name?', array('%name' => theme('placeholder', $account->name))), 'user/'. $account->uid, t('All submissions made by this user will be attributed to the anonymous account. This action cannot be undone.'), t('Delete'), t('Cancel')); @@ -1556,7 +1565,7 @@ function user_admin_access_add($mask = N $aid = db_next_id('{access}_aid'); db_query("INSERT INTO {access} (aid, mask, type, status) VALUES ('%s', '%s', '%s', %d)", $aid, $edit['mask'], $edit['type'], $edit['status']); drupal_set_message(t('The access rule has been added.')); - drupal_goto('admin/access/rules'); + drupal_goto('admin/user/rules'); } } else { @@ -1581,7 +1590,7 @@ function user_admin_access_delete($aid = $form['aid'] = array('#type' => 'hidden', '#value' => $aid); $output = confirm_form('user_admin_access_delete_confirm', $form, t('Are you sure you want to delete the %type rule for %rule?', array('%type' => $access_types[$edit->type], '%rule' => theme('placeholder', $edit->mask))), - 'admin/access/rules', + 'admin/user/rules', t('This action cannot be undone.'), t('Delete'), t('Cancel')); @@ -1591,7 +1600,7 @@ function user_admin_access_delete($aid = function user_admin_access_delete_confirm_submit($form_id, $edit) { db_query('DELETE FROM {access} WHERE aid = %d', $edit['aid']); drupal_set_message(t('The access rule has been deleted.')); - return 'admin/access/rules'; + return 'admin/user/rules'; } /** @@ -1605,7 +1614,7 @@ function user_admin_access_edit($aid = 0 else { db_query("UPDATE {access} SET mask = '%s', type = '%s', status = '%s' WHERE aid = %d", $edit['mask'], $edit['type'], $edit['status'], $aid); drupal_set_message(t('The access rule has been saved.')); - drupal_goto('admin/access/rules'); + drupal_goto('admin/user/rules'); } } else { @@ -1652,7 +1661,7 @@ function user_admin_access() { $access_types = array('user' => t('username'), 'mail' => t('e-mail'), 'host' => t('host')); $rows = array(); while ($rule = db_fetch_object($result)) { - $rows[] = array($rule->status ? t('allow') : t('deny'), $access_types[$rule->type], $rule->mask, l(t('edit'), 'admin/access/rules/edit/'. $rule->aid), l(t('delete'), 'admin/access/rules/delete/'. $rule->aid)); + $rows[] = array($rule->status ? t('allow') : t('deny'), $access_types[$rule->type], $rule->mask, l(t('edit'), 'admin/user/rules/edit/'. $rule->aid), l(t('delete'), 'admin/user/rules/delete/'. $rule->aid)); } if (count($rows) == 0) { $rows[] = array(array('data' => ''. t('There are currently no access rules.') .'', 'colspan' => 5)); @@ -1701,7 +1710,7 @@ function user_admin_perm($str_rids = NUL if($rids) { $breadcrumbs = drupal_get_breadcrumb(); - $breadcrumbs[] = l(t('all roles'), 'admin/access'); + $breadcrumbs[] = l(t('all roles'), 'admin/user/access'); drupal_set_breadcrumb($breadcrumbs); $result = db_query('SELECT r.rid, p.perm FROM {role} r LEFT JOIN {permission} p ON r.rid = p.rid WHERE r.rid IN (%s) ORDER BY name', implode(', ', $rids)); } @@ -1747,7 +1756,7 @@ function user_admin_perm($str_rids = NUL // Have to build checkboxes here after checkbox arrays are built foreach ($role_names as $rid => $name) { $form['checkboxes'][$rid] = array('#type' => 'checkboxes', '#options' => $options, '#default_value' => $status[$rid]); - $form['role_names'][$rid] = array('#type' => 'markup', '#value' => l($name, 'admin/access/'. $rid), '#tree' => TRUE); + $form['role_names'][$rid] = array('#type' => 'markup', '#value' => l($name, 'admin/user/access/'. $rid), '#tree' => TRUE); } $form['submit'] = array('#type' => 'submit', '#value' => t('Save permissions')); @@ -1824,7 +1833,7 @@ function user_admin_role() { if ($edit['name']) { db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $edit['name'], $id); drupal_set_message(t('The changes have been saved.')); - drupal_goto('admin/access/roles'); + drupal_goto('admin/user/roles'); } else { form_set_error('name', t('You must specify a valid role name.')); @@ -1837,13 +1846,13 @@ function user_admin_role() { db_query('DELETE FROM {users_roles} WHERE rid = %d', $id); drupal_set_message(t('The role has been deleted.')); - drupal_goto('admin/access/roles'); + drupal_goto('admin/user/roles'); } else if ($op == t('Add role')) { if ($edit['name']) { db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']); drupal_set_message(t('The role has been added.')); - drupal_goto('admin/access/roles'); + drupal_goto('admin/user/roles'); } else { form_set_error('name', t('You must specify a valid role name.')); @@ -1866,7 +1875,7 @@ function theme_user_admin_new_role($form $header = array(t('Name'), t('Operations')); foreach (user_roles() as $rid => $name) { if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) { - $rows[] = array($name, l(t('edit'), 'admin/access/roles/edit/'. $rid)); + $rows[] = array($name, l(t('edit'), 'admin/user/roles/edit/'. $rid)); } else { $rows[] = array($name, ''. t('locked') .''); @@ -1948,7 +1957,7 @@ function user_admin() { switch ($op) { case 'search': case t('Search'): - $output = search_form(url('admin/user/search'), $_POST['edit']['keys'], 'user') . search_data($_POST['edit']['keys'], 'user'); + $output = search_form(url('admin/user/user/search'), $_POST['edit']['keys'], 'user') . search_data($_POST['edit']['keys'], 'user'); break; case t('Create new account'): case 'create': @@ -1978,27 +1987,27 @@ function user_help($section) {
  • read user profile help at administer >> help >> profile.
  • read about distributed authentication in the system module help at administer >> help >> system.
  • -', array('%user' => url('user'), '%admin-user' => url('admin/user'), '%admin-themes' => url('admin/themes'), '%admin-help-profile' => url('admin/help/profile'), '%admin-help-system' => url('admin/help/system'))); +', array('%user' => url('user'), '%admin-user' => url('admin/user/user'), '%admin-themes' => url('admin/themes'), '%admin-help-profile' => url('admin/help/profile'), '%admin-help-system' => url('admin/help/system'))); $output .= '

    '. t('For more information please read the configuration and customization handbook User page.', array('%user' => 'http://drupal.org/handbook/modules/user/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Manages the user registration and login system.'); - case 'admin/user': + case 'admin/user/user': return t('

    Drupal allows users to register, login, log out, maintain user profiles, etc. Users of the site may not use their own names to post content until they have signed up for a user account.

    '); - case 'admin/user/create': - case 'admin/user/account/create': + case 'admin/user/user/create': + case 'admin/user/user/account/create': return t('

    This web page allows the administrators to register a new users by hand. Note that you cannot have a user where either the e-mail address or the username match another user in the system.

    '); - case strstr($section, 'admin/access/rules'): + case strstr($section, 'admin/user/rules'): return t('

    Set up username and e-mail address access rules for new and existing accounts (currently logged in accounts will not be logged out). If a username or e-mail address for an account matches any deny rule, but not an allow rule, then the account will not be allowed to be created or to log in. A host rule is effective for every page view, not just registrations.

    '); - case 'admin/access': - return t('

    Permissions let you control what users can do on your site. Each user role (defined on the user roles page) has its own set of permissions. For example, you could give users classified as "Administrators" permission to "administer nodes" but deny this power to ordinary, "authenticated" users. You can use permissions to reveal new features to privileged users (those with subscriptions, for example). Permissions also allow trusted users to share the administrative burden of running a busy site.

    ', array('%role' => url('admin/access/roles'))); - case 'admin/access/roles': + case 'admin/user/access': + return t('

    Permissions let you control what users can do on your site. Each user role (defined on the user roles page) has its own set of permissions. For example, you could give users classified as "Administrators" permission to "administer nodes" but deny this power to ordinary, "authenticated" users. You can use permissions to reveal new features to privileged users (those with subscriptions, for example). Permissions also allow trusted users to share the administrative burden of running a busy site.

    ', array('%role' => url('admin/user/roles'))); + case 'admin/user/roles': return t('

    Roles allow you to fine tune the security and administration of Drupal. A role defines a group of users that have certain privileges as defined in user permissions. Examples of roles include: anonymous user, authenticated user, moderator, administrator and so on. In this area you will define the role names of the various roles. To delete a role choose "edit".

    By default, Drupal comes with two user roles:

    ', array('%permissions' => url('admin/access/permissions'))); - case 'admin/user/search': + ', array('%permissions' => url('admin/user/access/permissions'))); + case 'admin/user/user/search': return t('

    Enter a simple pattern ("*" may be used as a wildcard match) to search for a username. For example, one may search for "br" and Drupal might return "brian", "brad", and "brenda".

    '); case 'user/help#user': $site = variable_get('site_name', 'this website'); Index: modules/watchdog/watchdog.module =================================================================== RCS file: /cvs/drupal/drupal/modules/watchdog/watchdog.module,v retrieving revision 1.144 diff -u -p -r1.144 watchdog.module --- modules/watchdog/watchdog.module 7 May 2006 00:08:36 -0000 1.144 +++ modules/watchdog/watchdog.module 30 Jul 2006 20:21:48 -0000 @@ -28,7 +28,7 @@ function watchdog_help($section) { ', array('%admin-watchdog' => url('admin/watchdog'), '%admin-watchdog-events' => url('admin/watchdog/events'))); $output .= '

    '. t('For more information please read the configuration and customization handbook Watchdog page.', array('%watchdog' => 'http://drupal.org/handbook/modules/watchdog/')) .'

    '; return $output; - case 'admin/modules#description': + case 'admin/settings/modules#description': return t('Logs and records system events.'); case 'admin/logs': return t('

    The watchdog module monitors your web site, capturing system events in a log to be reviewed by an authorized individual at a later time. The watchdog log is simply a list of recorded events containing usage data, performance data, errors, warnings and operational information. It is vital to check the watchdog report on a regular basis as it is often the only way to tell what is going on.

    '); @@ -43,6 +43,13 @@ function watchdog_menu($may_cache) { if ($may_cache) { $items[] = array('path' => 'admin/logs', 'title' => t('logs'), + 'description' => t('View system logs and other status information.'), + 'callback' => 'system_admin_menu_block_page', + 'weight' => 5, + 'position' => 'left'); + $items[] = array('path' => 'admin/logs/watchdog', 'title' => t('watchdog log'), + 'description' => t('View the primary system log.'), + 'weight' => -10, 'callback' => 'watchdog_overview'); $items[] = array('path' => 'admin/logs/event', 'title' => t('details'), 'callback' => 'watchdog_event',