? 243129-alternative-approach2.patch ? 453254-29-upgrade.patch ? 8389 ? Unsaved Document 1 ? cache_get_multiple-333171-39.patch.2 ? cache_shutdown.png ? comment.diff ? comment_contact.png ? comment_load_multiple.patch ? comment_load_multiple_3.patch ? comment_objects.patch ? comment_objects_0.patch ? comment_objects_0.patch.1 ? comment_objects_no_search.patch ? comment_paging_24.patch.2 ? comment_settings.patch ? comment_settings.png ? comment_settings_0_1.patch ? comment_settings_after.png ? comment_settings_before.png ? comments.png ? config.patch ? config.png ? content.png ? d7.sql ? d7ux_header_jun14.tar ? diff.txt ? fieldset.png ? filter-failing-tests_php.txt ? formatter_load.patch ? link.png ? modules (2) ? no-link.png ? php5.3youpickypickything.patch ? registry.png ? search_index_content.patch ? search_index_content_4.patch ? search_index_content_5.patch ? semantic_but_ugly.png ? settings_with_anon.png ? misc/operations.js ? modules/comments_as_tab.patch ? modules/comment/.comment.test.rej.swp ? modules/comment/comment_paging.patch ? modules/field/.field.attach.inc.swp ? modules/field/field.autoload.inc ? modules/system/system.actions.inc ? modules/system/system.autoload.inc ? modules/system/system.block.inc ? modules/system/system.build.inc ? modules/system/system.cron.inc ? modules/system/system.file.inc ? modules/system/system.form.inc ? modules/system/system.mail.inc ? modules/system/system.registry.inc ? modules/system/system.update ? modules/user/user.autoload.inc ? scripts/generate-autoload.pl ? scripts/generate-autoload.sh ? sites/all/modules/contrib ? sites/default/files ? sites/default/settings.php ? sites/default/settings.php.back Index: includes/locale.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/locale.inc,v retrieving revision 1.219 diff -u -p -r1.219 locale.inc --- includes/locale.inc 8 Jun 2009 05:00:11 -0000 1.219 +++ includes/locale.inc 2 Jul 2009 17:40:48 -0000 @@ -89,7 +89,7 @@ function theme_locale_languages_overview array('data' => drupal_render($form['enabled'][$key]), 'align' => 'center'), drupal_render($form['site_default'][$key]), drupal_render($form['weight'][$key]), - l(t('edit'), 'admin/international/language/edit/' . $key) . (($key != 'en' && $key != $default->language) ? ' ' . l(t('delete'), 'admin/international/language/delete/' . $key) : '') + l(t('edit'), 'admin/config/international/language/edit/' . $key) . (($key != 'en' && $key != $default->language) ? ' ' . l(t('delete'), 'admin/config/international/language/delete/' . $key) : '') ), 'class' => 'draggable' ); @@ -142,7 +142,7 @@ function locale_languages_overview_form_ // Changing the language settings impacts the interface. cache_clear_all('*', 'cache_page', TRUE); - $form_state['redirect'] = 'admin/international/language'; + $form_state['redirect'] = 'admin/config/international/language'; return; } /** @@ -345,7 +345,7 @@ function locale_languages_predefined_for batch_set($batch); } - $form_state['redirect'] = 'admin/international/language'; + $form_state['redirect'] = 'admin/config/international/language'; return; } @@ -391,7 +391,7 @@ function locale_languages_edit_form_subm } variable_set('language_default', $default); } - $form_state['redirect'] = 'admin/international/language'; + $form_state['redirect'] = 'admin/config/international/language'; return; } /** @@ -411,12 +411,12 @@ function locale_languages_delete_form(&$ // Do not allow deletion of English locale. if ($langcode == 'en') { drupal_set_message(t('The English language cannot be deleted.')); - drupal_goto('admin/international/language'); + drupal_goto('admin/config/international/language'); } if (language_default('language') == $langcode) { drupal_set_message(t('The default language cannot be deleted.')); - drupal_goto('admin/international/language'); + drupal_goto('admin/config/international/language'); } // For other languages, warn user that data loss is ahead. @@ -427,7 +427,7 @@ function locale_languages_delete_form(&$ } else { $form['langcode'] = array('#type' => 'value', '#value' => $langcode); - return confirm_form($form, t('Are you sure you want to delete the language %name?', array('%name' => t($languages[$langcode]->name))), 'admin/international/language', t('Deleting a language will remove all interface translations associated with it, and posts in this language will be set to be language neutral. This action cannot be undone.'), t('Delete'), t('Cancel')); + return confirm_form($form, t('Are you sure you want to delete the language %name?', array('%name' => t($languages[$langcode]->name))), 'admin/config/international/language', t('Deleting a language will remove all interface translations associated with it, and posts in this language will be set to be language neutral. This action cannot be undone.'), t('Delete'), t('Cancel')); } } @@ -460,7 +460,7 @@ function locale_languages_delete_form_su // Changing the language settings impacts the interface: cache_clear_all('*', 'cache_page', TRUE); - $form_state['redirect'] = 'admin/international/language'; + $form_state['redirect'] = 'admin/config/international/language'; return; } /** @@ -500,7 +500,7 @@ function locale_languages_configure_form function locale_languages_configure_form_submit($form, &$form_state) { variable_set('language_negotiation', $form_state['values']['language_negotiation']); drupal_set_message(t('Language negotiation configuration saved.')); - $form_state['redirect'] = 'admin/international/language'; + $form_state['redirect'] = 'admin/config/international/language'; return; } /** @@ -687,7 +687,7 @@ function locale_translation_filter_form_ break; } - $form_state['redirect'] = 'admin/international/translate/translate'; + $form_state['redirect'] = 'admin/config/international/translate/translate'; } /** @@ -777,11 +777,11 @@ function locale_translate_import_form_su } else { drupal_set_message(t('File to import not found.'), 'error'); - $form_state['redirect'] = 'admin/international/translate/import'; + $form_state['redirect'] = 'admin/config/international/translate/import'; return; } - $form_state['redirect'] = 'admin/international/translate'; + $form_state['redirect'] = 'admin/config/international/translate'; return; } /** @@ -886,7 +886,7 @@ function locale_translate_edit_form(&$fo $source = db_query('SELECT source, context, textgroup, location FROM {locales_source} WHERE lid = :lid', array(':lid' => $lid))->fetchObject(); if (!$source) { drupal_set_message(t('String not found.'), 'error'); - drupal_goto('admin/international/translate/translate'); + drupal_goto('admin/config/international/translate/translate'); } // Add original text to the top and some values for form altering. @@ -1024,7 +1024,7 @@ function locale_translate_edit_form_subm _locale_invalidate_js(); cache_clear_all('locale:', 'cache', TRUE); - $form_state['redirect'] = 'admin/international/translate/translate'; + $form_state['redirect'] = 'admin/config/international/translate/translate'; return; } /** @@ -1053,7 +1053,7 @@ function locale_translate_delete_page($l */ function locale_translate_delete_form(&$form_state, $source) { $form['lid'] = array('#type' => 'value', '#value' => $source->lid); - return confirm_form($form, t('Are you sure you want to delete the string "%source"?', array('%source' => $source->source)), 'admin/international/translate/translate', t('Deleting the string will remove all translations of this string in all languages. This action cannot be undone.'), t('Delete'), t('Cancel')); + return confirm_form($form, t('Are you sure you want to delete the string "%source"?', array('%source' => $source->source)), 'admin/config/international/translate/translate', t('Deleting the string will remove all translations of this string in all languages. This action cannot be undone.'), t('Delete'), t('Cancel')); } /** @@ -1070,7 +1070,7 @@ function locale_translate_delete_form_su _locale_invalidate_js(); cache_clear_all('locale:', 'cache', TRUE); drupal_set_message(t('The string has been removed.')); - $form_state['redirect'] = 'admin/international/translate/translate'; + $form_state['redirect'] = 'admin/config/international/translate/translate'; } /** * @} End of "locale-translate-delete" @@ -2305,8 +2305,8 @@ function _locale_translate_seek() { array('data' => check_plain(truncate_utf8($string['source'], 150, FALSE, TRUE)) . '
' . $string['location'] . ''), $string['context'], array('data' => _locale_translate_language_list($string['languages'], $limit_language), 'align' => 'center'), - array('data' => l(t('edit'), "admin/international/translate/edit/$lid", array('query' => drupal_get_destination())), 'class' => 'nowrap'), - array('data' => l(t('delete'), "admin/international/translate/delete/$lid", array('query' => drupal_get_destination())), 'class' => 'nowrap'), + array('data' => l(t('edit'), "admin/config/international/translate/edit/$lid", array('query' => drupal_get_destination())), 'class' => 'nowrap'), + array('data' => l(t('delete'), "admin/config/international/translate/delete/$lid", array('query' => drupal_get_destination())), 'class' => 'nowrap'), ); } Index: modules/locale/locale.module =================================================================== RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v retrieving revision 1.242 diff -u -p -r1.242 locale.module --- modules/locale/locale.module 8 Jun 2009 05:00:11 -0000 1.242 +++ modules/locale/locale.module 2 Jul 2009 17:40:49 -0000 @@ -26,40 +26,40 @@ function locale_help($path, $arg) { $output .= '

' . t('Translations may be provided by:') . '

'; $output .= ''; - $output .= '

' . t('If an existing translation package does not meet your needs, the Gettext Portable Object (.po) files within a package may be modified, or new .po files may be created, using a desktop Gettext editor. The locale module\'s import feature allows the translated strings from a new or modified .po file to be added to your site. The locale module\'s export feature generates files from your site\'s translated strings, that can either be shared with others or edited offline by a Gettext translation editor.', array('@import' => url('admin/international/translate/import'), '@export' => url('admin/international/translate/export'))) . '

'; + $output .= '

' . t('If an existing translation package does not meet your needs, the Gettext Portable Object (.po) files within a package may be modified, or new .po files may be created, using a desktop Gettext editor. The locale module\'s import feature allows the translated strings from a new or modified .po file to be added to your site. The locale module\'s export feature generates files from your site\'s translated strings, that can either be shared with others or edited offline by a Gettext translation editor.', array('@import' => url('admin/config/international/translate/import'), '@export' => url('admin/config/international/translate/export'))) . '

'; $output .= '

' . t('For more information, see the online handbook entry for Locale module.', array('@locale' => 'http://drupal.org/handbook/modules/locale/')) . '

'; return $output; - case 'admin/international/language': + case 'admin/config/international/language': $output = '

' . t("This page provides an overview of your site's enabled languages. If multiple languages are available and enabled, the text on your site interface may be translated, registered users may select their preferred language on the My account page, and site authors may indicate a specific language when creating posts. Languages will be displayed in the order you specify in places such as the language switcher block, or the language dropdown when creating or editing posts. The site's default language is used for anonymous visitors and for users who have not selected a preferred language.") . '

'; $output .= '

' . t('For each language available on the site, use the edit link to configure language details, including name, an optional language-specific path or domain, and whether the language is natively presented either left-to-right or right-to-left. These languages also appear in the Language selection when creating a post of a content type with multilingual support.') . '

'; - $output .= '

' . t('Use the add language page to enable additional languages (and automatically import files from a translation package, if available), the translate interface page to locate strings for manual translation, or the import page to add translations from individual .po files. A number of contributed translation packages containing .po files are available on the Drupal.org translations page.', array('@add-language' => url('admin/international/language/add'), '@search' => url('admin/international/translate/translate'), '@import' => url('admin/international/translate/import'), '@translations' => 'http://drupal.org/project/translations')) . '

'; + $output .= '

' . t('Use the add language page to enable additional languages (and automatically import files from a translation package, if available), the translate interface page to locate strings for manual translation, or the import page to add translations from individual .po files. A number of contributed translation packages containing .po files are available on the Drupal.org translations page.', array('@add-language' => url('admin/config/international/language/add'), '@search' => url('admin/config/international/translate/translate'), '@import' => url('admin/config/international/translate/import'), '@translations' => 'http://drupal.org/project/translations')) . '

'; $output .= '

' . t('To rearrange languages, grab a drag-and-drop handle under the English name column and drag the item to a new location in the list. (Grab a handle by clicking and holding the mouse while hovering over a handle icon.) Remember that your changes will not be saved until you click the Save configuration button at the bottom of the page.') . '

'; return $output; - case 'admin/international/language/add': + case 'admin/config/international/language/add': return '

' . t('Add all languages to be supported by your site. If your desired language is not available in the Language name drop-down, click Custom language and provide a language code and other details manually. When providing a language code manually, be sure to enter a standardized language code, since this code may be used by browsers to determine an appropriate display language.') . '

'; - case 'admin/international/language/configure': + case 'admin/config/international/language/configure': $output = '

' . t("Language negotiation settings determine the site's presentation language. Available options include:") . '

'; $output .= ''; - $output .= '

' . t('The path prefix or domain name for a language may be set by editing the available languages. In the absence of an appropriate match, the site is displayed in the default language.', array('@languages' => url('admin/international/language'))) . '

'; + $output .= '

' . t('The path prefix or domain name for a language may be set by editing the available languages. In the absence of an appropriate match, the site is displayed in the default language.', array('@languages' => url('admin/config/international/language'))) . '

'; return $output; - case 'admin/international/translate': + case 'admin/config/international/translate': $output = '

' . t('This page provides an overview of available translatable strings. Drupal displays translatable strings in text groups; modules may define additional text groups containing other translatable strings. Because text groups provide a method of grouping related strings, they are often used to focus translation efforts on specific areas of the Drupal interface.') . '

'; - $output .= '

' . t('Review the languages page for more information on adding support for additional languages.', array('@languages' => url('admin/international/language'))) . '

'; + $output .= '

' . t('Review the languages page for more information on adding support for additional languages.', array('@languages' => url('admin/config/international/language'))) . '

'; return $output; - case 'admin/international/translate/import': + case 'admin/config/international/translate/import': $output = '

' . t('This page imports the translated strings contained in an individual Gettext Portable Object (.po) file. Normally distributed as part of a translation package (each translation package may contain several .po files), a .po file may need to be imported after offline editing in a Gettext translation editor. Importing an individual .po file may be a lengthy process.') . '

'; - $output .= '

' . t('Note that the .po files within a translation package are imported automatically (if available) when new modules or themes are enabled, or as new languages are added. Since this page only allows the import of one .po file at a time, it may be simpler to download and extract a translation package into your Drupal installation directory and add the language (which automatically imports all .po files within the package). Translation packages are available for download on the Drupal translation page.', array('@language-add' => url('admin/international/language/add'), '@translations' => 'http://drupal.org/project/translations')) . '

'; + $output .= '

' . t('Note that the .po files within a translation package are imported automatically (if available) when new modules or themes are enabled, or as new languages are added. Since this page only allows the import of one .po file at a time, it may be simpler to download and extract a translation package into your Drupal installation directory and add the language (which automatically imports all .po files within the package). Translation packages are available for download on the Drupal translation page.', array('@language-add' => url('admin/config/international/language/add'), '@translations' => 'http://drupal.org/project/translations')) . '

'; return $output; - case 'admin/international/translate/export': + case 'admin/config/international/translate/export': return '

' . t('This page exports the translated strings used by your site. An export file may be in Gettext Portable Object (.po) form, which includes both the original string and the translation (used to share translations with others), or in Gettext Portable Object Template (.pot) form, which includes the original strings only (used to create new translations with a Gettext translation editor).') . '

'; - case 'admin/international/translate/translate': - return '

' . t('This page allows a translator to search for specific translated and untranslated strings, and is used when creating or editing translations. (Note: For translation tasks involving many strings, it may be more convenient to export strings for offline editing in a desktop Gettext translation editor.) Searches may be limited to strings found within a specific text group or in a specific language.', array('@export' => url('admin/international/translate/export'))) . '

'; + case 'admin/config/international/translate/translate': + return '

' . t('This page allows a translator to search for specific translated and untranslated strings, and is used when creating or editing translations. (Note: For translation tasks involving many strings, it may be more convenient to export strings for offline editing in a desktop Gettext translation editor.) Searches may be limited to strings found within a specific text group or in a specific language.', array('@export' => url('admin/config/international/translate/export'))) . '

'; case 'admin/build/block/configure': - if ($arg[4] == 'locale' && $arg[5] == 0) { - return '

' . t('This block is only shown if at least two languages are enabled and language negotiation is set to something other than None.', array('@languages' => url('admin/international/language'), '@configuration' => url('admin/international/language/configure'))) . '

'; + if ($arg[5] == 'locale' && $arg[6] == 0) { + return '

' . t('This block is only shown if at least two languages are enabled and language negotiation is set to something other than None.', array('@languages' => url('admin/config/international/language'), '@configuration' => url('admin/config/international/language/configure'))) . '

'; } break; } @@ -70,35 +70,35 @@ function locale_help($path, $arg) { */ function locale_menu() { // Manage languages - $items['admin/international'] = array( + $items['admin/config/international'] = array( 'title' => 'International', 'description' => 'Localization and translation.', 'position' => 'left', 'weight' => -7, 'page callback' => 'system_admin_menu_block_page', 'access callback' => 'system_admin_menu_block_access', - 'access arguments' => array('admin/international', 'access administration pages'), + 'access arguments' => array('admin/config/international', 'access administration pages'), ); - $items['admin/international/language'] = array( + $items['admin/config/international/language'] = array( 'title' => 'Languages', 'description' => 'Configure languages for content and the user interface.', 'page callback' => 'drupal_get_form', 'page arguments' => array('locale_languages_overview_form'), 'access arguments' => array('administer languages'), ); - $items['admin/international/language/overview'] = array( + $items['admin/config/international/language/overview'] = array( 'title' => 'List', 'weight' => 0, 'type' => MENU_DEFAULT_LOCAL_TASK, ); - $items['admin/international/language/add'] = array( + $items['admin/config/international/language/add'] = array( 'title' => 'Add language', 'page callback' => 'locale_languages_add_screen', // two forms concatenated 'access arguments' => array('administer languages'), 'weight' => 5, 'type' => MENU_LOCAL_TASK, ); - $items['admin/international/language/configure'] = array( + $items['admin/config/international/language/configure'] = array( 'title' => 'Configure', 'page callback' => 'drupal_get_form', 'page arguments' => array('locale_languages_configure_form'), @@ -106,41 +106,41 @@ function locale_menu() { 'weight' => 10, 'type' => MENU_LOCAL_TASK, ); - $items['admin/international/language/edit/%'] = array( + $items['admin/config/international/language/edit/%'] = array( 'title' => 'Edit language', 'page callback' => 'drupal_get_form', - 'page arguments' => array('locale_languages_edit_form', 4), + 'page arguments' => array('locale_languages_edit_form', 5), 'access arguments' => array('administer languages'), 'type' => MENU_CALLBACK, ); - $items['admin/international/language/delete/%'] = array( + $items['admin/config/international/language/delete/%'] = array( 'title' => 'Confirm', 'page callback' => 'drupal_get_form', - 'page arguments' => array('locale_languages_delete_form', 4), + 'page arguments' => array('locale_languages_delete_form', 5), 'access arguments' => array('administer languages'), 'type' => MENU_CALLBACK, ); // Translation functionality - $items['admin/international/translate'] = array( + $items['admin/config/international/translate'] = array( 'title' => 'Translate interface', 'description' => 'Translate the built in interface and optionally other text.', 'page callback' => 'locale_translate_overview_screen', // not a form, just a table 'access arguments' => array('translate interface'), ); - $items['admin/international/translate/overview'] = array( + $items['admin/config/international/translate/overview'] = array( 'title' => 'Overview', 'weight' => 0, 'type' => MENU_DEFAULT_LOCAL_TASK, ); - $items['admin/international/translate/translate'] = array( + $items['admin/config/international/translate/translate'] = array( 'title' => 'Translate', 'weight' => 10, 'type' => MENU_LOCAL_TASK, 'page callback' => 'locale_translate_seek_screen', // search results and form concatenated 'access arguments' => array('translate interface'), ); - $items['admin/international/translate/import'] = array( + $items['admin/config/international/translate/import'] = array( 'title' => 'Import', 'page callback' => 'drupal_get_form', 'page arguments' => array('locale_translate_import_form'), @@ -148,24 +148,24 @@ function locale_menu() { 'weight' => 20, 'type' => MENU_LOCAL_TASK, ); - $items['admin/international/translate/export'] = array( + $items['admin/config/international/translate/export'] = array( 'title' => 'Export', 'page callback' => 'locale_translate_export_screen', // possibly multiple forms concatenated 'access arguments' => array('translate interface'), 'weight' => 30, 'type' => MENU_LOCAL_TASK, ); - $items['admin/international/translate/edit/%'] = array( + $items['admin/config/international/translate/edit/%'] = array( 'title' => 'Edit string', 'page callback' => 'drupal_get_form', - 'page arguments' => array('locale_translate_edit_form', 4), + 'page arguments' => array('locale_translate_edit_form', 5), 'access arguments' => array('translate interface'), 'type' => MENU_CALLBACK, ); - $items['admin/international/translate/delete/%'] = array( + $items['admin/config/international/translate/delete/%'] = array( 'title' => 'Delete string', 'page callback' => 'locale_translate_delete_page', - 'page arguments' => array(4), + 'page arguments' => array(5), 'access arguments' => array('translate interface'), 'type' => MENU_CALLBACK, ); @@ -286,7 +286,7 @@ function locale_form_node_type_form_alte '#title' => t('Multilingual support'), '#default_value' => variable_get('language_content_type_' . $form['#node_type']->type, 0), '#options' => array(t('Disabled'), t('Enabled')), - '#description' => t('Enable multilingual support for this content type. If enabled, a language selection field will be added to the editing form, allowing you to select from one of the enabled languages. If disabled, new posts are saved with the default language. Existing content will not be affected by changing this option.', array('!languages' => url('admin/international/language'))), + '#description' => t('Enable multilingual support for this content type. If enabled, a language selection field will be added to the editing form, allowing you to select from one of the enabled languages. If disabled, new posts are saved with the default language. Existing content will not be affected by changing this option.', array('!languages' => url('admin/config/international/language'))), ); } } Index: modules/locale/locale.test =================================================================== RCS file: /cvs/drupal/drupal/modules/locale/locale.test,v retrieving revision 1.28 diff -u -p -r1.28 locale.test --- modules/locale/locale.test 30 Jun 2009 18:21:06 -0000 1.28 +++ modules/locale/locale.test 2 Jul 2009 17:40:50 -0000 @@ -49,9 +49,9 @@ class LocaleConfigurationTest extends Dr $edit = array( 'langcode' => 'fr', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add language')); $this->assertText('fr', t('Language added successfully.')); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); // Add custom language. // Code for the language. @@ -69,15 +69,15 @@ class LocaleConfigurationTest extends Dr 'prefix' => $prefix, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertText($langcode, t('Language code found.')); $this->assertText($name, t('Name found.')); $this->assertText($native, t('Native found.')); $this->assertText($native, t('Test language added.')); // Check if we can change the default language. - $path = 'admin/international/language'; + $path = 'admin/config/international/language'; $this->drupalGet($path); // Set up the raw HTML strings we need to search for. $elements = $this->xpath('//input[@id="edit-site-default-en"]'); @@ -89,12 +89,12 @@ class LocaleConfigurationTest extends Dr $this->drupalPost($path, $edit, t('Save configuration')); $elements = $this->xpath('//input[@id="edit-site-default-en"]'); $this->assertTrue(isset($elements[0]) && empty($elements[0]['checked']), t('Default language updated.')); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); // Ensure we can't delete the default language. - $path = 'admin/international/language/delete/' . $langcode; + $path = 'admin/config/international/language/delete/' . $langcode; $this->drupalGet($path); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertText(t('The default language cannot be deleted.'), t('Failed to delete the default language.')); // Check if we can disable a language. @@ -117,33 +117,33 @@ class LocaleConfigurationTest extends Dr $this->clickLink(t('edit')); $this->assertTitle(t('Edit language | Drupal'), t('Page title is "Edit language".')); // Edit a language. - $path = 'admin/international/language/edit/' . $langcode; + $path = 'admin/config/international/language/edit/' . $langcode; $name = $this->randomName(16); $edit = array( 'name' => $name, ); $this->drupalPost($path, $edit, t('Save language')); $this->assertRaw($name, t('The language has been updated.')); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); // Ensure 'delete' link works. - $path = 'admin/international/language'; + $path = 'admin/config/international/language'; $this->drupalGet($path); $this->clickLink(t('delete')); $this->assertText(t('Are you sure you want to delete the language'), t('"delete" link is correct.')); // Delete the language. - $path = 'admin/international/language/delete/' . $langcode; + $path = 'admin/config/international/language/delete/' . $langcode; $this->drupalGet($path); // First test the 'cancel' link. $this->clickLink(t('Cancel')); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertRaw($name, t('The language was not deleted.')); // Delete the language for real. This a confirm form, we do not need any // fields changed. $this->drupalPost($path, array(), t('Delete')); // We need raw here because %locale will add HTML. $this->assertRaw(t('The language %locale has been removed.', array('%locale' => $name)), t('The test language has been removed.')); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); // Reload to remove $name. $this->drupalGet($path); $this->assertNoText($langcode, t('Language code not found.')); @@ -151,9 +151,9 @@ class LocaleConfigurationTest extends Dr $this->assertNoText($native, t('Native not found.')); // Ensure we can't delete the English language. - $path = 'admin/international/language/delete/en'; + $path = 'admin/config/international/language/delete/en'; $this->drupalGet($path); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertText(t('The English language cannot be deleted.'), t('Failed to delete English language.')); $this->drupalLogout(); @@ -210,7 +210,7 @@ class LocaleTranslationFunctionalTest ex 'prefix' => $prefix, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Add string. t($name, array(), array('langcode' => $langcode)); // Reset locale cache. @@ -231,7 +231,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'all', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); // assertText() seems to remove the input field where $name always could be // found, so this is not a false assert. See how assertNoText succeeds // later. @@ -241,7 +241,7 @@ class LocaleTranslationFunctionalTest ex $this->clickLink(t('edit')); // We save the lid from the path. $matches = array(); - preg_match('!admin/international/translate/edit/(\d)+!', $this->getUrl(), $matches); + preg_match('!admin/config/international/translate/edit/(\d)+!', $this->getUrl(), $matches); $lid = $matches[1]; // No t() here, it's surely not translated yet. $this->assertText($name, t('name found on edit screen.')); @@ -250,23 +250,23 @@ class LocaleTranslationFunctionalTest ex ); $this->drupalPost(NULL, $edit, t('Save translations')); $this->assertText(t('The string has been saved.'), t('The string has been saved.')); - $this->assertEqual($this->getUrl(), url('admin/international/translate/translate', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/translate/translate', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertTrue($name != $translation && t($name, array(), array('langcode' => $langcode)) == $translation, t('t() works.')); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); // The indicator should not be here. $this->assertNoRaw($language_indicator, t('String is translated.')); // Try to edit a non-existent string and ensure we're redirected correctly. // Assuming we don't have 999,999 strings already. $random_lid = 999999; - $this->drupalGet('admin/international/translate/edit/' . $random_lid); + $this->drupalGet('admin/config/international/translate/edit/' . $random_lid); $this->assertText(t('String not found'), t('String not found.')); - $this->assertEqual($this->getUrl(), url('admin/international/translate/translate', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/translate/translate', array('absolute' => TRUE)), t('Correct page redirection.')); $this->drupalLogout(); // Delete the language. $this->drupalLogin($admin_user); - $path = 'admin/international/language/delete/' . $langcode; + $path = 'admin/config/international/language/delete/' . $langcode; // This a confirm form, we do not need any fields changed. $this->drupalPost($path, array(), t('Delete')); // We need raw here because %locale will add HTML. @@ -286,22 +286,22 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'all', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); // Assume this is the only result, given the random name. $this->clickLink(t('delete')); $this->assertText(t('Are you sure you want to delete the string'), t('"delete" link is correct.')); // Delete the string. - $path = 'admin/international/translate/delete/' . $lid; + $path = 'admin/config/international/translate/delete/' . $lid; $this->drupalGet($path); // First test the 'cancel' link. $this->clickLink(t('Cancel')); - $this->assertEqual($this->getUrl(), url('admin/international/translate/translate', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/translate/translate', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertRaw($name, t('The string was not deleted.')); // Delete the name string. - $this->drupalPost('admin/international/translate/delete/' . $lid, array(), t('Delete')); + $this->drupalPost('admin/config/international/translate/delete/' . $lid, array(), t('Delete')); $this->assertText(t('The string has been removed.'), t('The string has been removed message.')); - $this->assertEqual($this->getUrl(), url('admin/international/translate/translate', array('absolute' => TRUE)), t('Correct page redirection.')); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->assertEqual($this->getUrl(), url('admin/config/international/translate/translate', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertNoText($name, t('Search now can not find the name.')); } @@ -342,7 +342,7 @@ class LocaleTranslationFunctionalTest ex 'prefix' => $prefix, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Add string. t($name, array(), array('langcode' => $langcode)); // Reset locale cache. @@ -352,10 +352,10 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'all', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); // Find the edit path. $content = $this->drupalGetContent(); - $this->assertTrue(preg_match('@(admin/international/translate/edit/[0-9]+)@', $content, $matches), t('Found the edit path.')); + $this->assertTrue(preg_match('@(admin/config/international/translate/edit/[0-9]+)@', $content, $matches), t('Found the edit path.')); $path = $matches[0]; foreach ($bad_translations as $key => $translation) { $edit = array( @@ -403,7 +403,7 @@ class LocaleTranslationFunctionalTest ex 'prefix' => $prefix, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Add string. t($name, array(), array('langcode' => $langcode)); // Reset locale cache. @@ -418,7 +418,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'all', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); // assertText() seems to remove the input field where $name always could be // found, so this is not a false assert. See how assertNoText succeeds // later. @@ -432,7 +432,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'translated', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertText(t('No strings found for your search.'), t("Search didn't find the string.")); // Ensure untranslated string appears if searching on 'only untranslated @@ -443,7 +443,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'untranslated', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertNoText(t('No strings found for your search.'), t('Search found the string.')); // Add translation. @@ -451,7 +451,7 @@ class LocaleTranslationFunctionalTest ex $this->clickLink(t('edit')); // We save the lid from the path. $matches = array(); - preg_match('!admin/international/translate/edit/(\d)+!', $this->getUrl(), $matches); + preg_match('!admin/config/international/translate/edit/(\d)+!', $this->getUrl(), $matches); $lid = $matches[1]; $edit = array( "translations[$langcode]" => $translation, @@ -466,7 +466,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'translated', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertNoText(t('No strings found for your search.'), t('Search found the translation.')); // Ensure translated source string doesn't appear if searching on 'only @@ -477,7 +477,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'untranslated', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertText(t('No strings found for your search.'), t("Search didn't find the source string.")); // Ensure translated string doesn't appear if searching on 'only @@ -488,7 +488,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'untranslated', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertText(t('No strings found for your search.'), t("Search didn't find the translation.")); // Ensure translated string does appear if searching on the custom language. @@ -498,7 +498,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'all', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertNoText(t('No strings found for your search.'), t('Search found the translation.')); // Ensure translated string doesn't appear if searching on English. @@ -508,7 +508,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'all', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertText(t('No strings found for your search.'), t("Search didn't find the translation.")); // Search for a string that isn't in the system. @@ -519,7 +519,7 @@ class LocaleTranslationFunctionalTest ex 'translation' => 'all', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertText(t('No strings found for your search.'), t("Search didn't find the invalid string.")); } } @@ -564,7 +564,7 @@ class LocaleImportFunctionalTest extends $this->assertRaw(t('The translation was successfully imported. There are %number newly created translated strings, %update strings were updated and %delete strings were removed.', array('%number' => 7, '%update' => 0, '%delete' => 0)), t('The translation file was successfully imported.')); // Ensure we were redirected correctly. - $this->assertEqual($this->getUrl(), url('admin/international/translate', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/translate', array('absolute' => TRUE)), t('Correct page redirection.')); // Try importing a .po file with invalid tags in the default text group. @@ -590,12 +590,12 @@ class LocaleImportFunctionalTest extends // Try importing a .po file which doesn't exist. $name = $this->randomName(16); - $this->drupalPost('admin/international/translate/import', array( + $this->drupalPost('admin/config/international/translate/import', array( 'langcode' => 'fr', 'files[file]' => $name, 'group' => 'custom', ), t('Import')); - $this->assertEqual($this->getUrl(), url('admin/international/translate/import', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->assertEqual($this->getUrl(), url('admin/config/international/translate/import', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertText(t('File to import not found.'), t('File to import not found message.')); @@ -615,7 +615,7 @@ class LocaleImportFunctionalTest extends 'translation' => 'translated', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertText(t('No strings found for your search.'), t('String not overwritten by imported string.')); @@ -635,7 +635,7 @@ class LocaleImportFunctionalTest extends 'translation' => 'translated', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertNoText(t('No strings found for your search.'), t('String overwritten by imported string.')); } @@ -661,7 +661,7 @@ class LocaleImportFunctionalTest extends 'prefix' => $prefix, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Ensure the translation file was automatically imported when language was // added. @@ -674,7 +674,7 @@ class LocaleImportFunctionalTest extends 'translation' => 'translated', 'group' => 'all', ); - $this->drupalPost('admin/international/translate/translate', $search, t('Filter')); + $this->drupalPost('admin/config/international/translate/translate', $search, t('Filter')); $this->assertNoText(t('No strings found for your search.'), t('String successfully imported.')); } @@ -704,7 +704,7 @@ class LocaleImportFunctionalTest extends $name = tempnam(file_directory_temp(), "po_"); file_put_contents($name, $contents); $options['files[file]'] = $name; - $this->drupalPost('admin/international/translate/import', $options, t('Import')); + $this->drupalPost('admin/config/international/translate/import', $options, t('Import')); unlink($name); } @@ -851,14 +851,14 @@ class LocaleExportFunctionalTest extends // This will also automatically enable the 'fr' language. $name = tempnam(file_directory_temp(), "po_"); file_put_contents($name, $this->getPoFile()); - $this->drupalPost('admin/international/translate/import', array( + $this->drupalPost('admin/config/international/translate/import', array( 'langcode' => 'fr', 'files[file]' => $name, ), t('Import')); unlink($name); // Get the French translations. - $this->drupalPost('admin/international/translate/export', array( + $this->drupalPost('admin/config/international/translate/export', array( 'langcode' => 'fr', ), t('Export')); @@ -876,7 +876,7 @@ class LocaleExportFunctionalTest extends // There are two 'Export' buttons on this page, but it somehow works. It'd // be better if we could use the submit button id like documented but that // doesn't work. - $this->drupalPost('admin/international/translate/export', array(), t('Export')); + $this->drupalPost('admin/config/international/translate/export', array(), t('Export')); // Ensure we have a translation file. $this->assertRaw('# LANGUAGE translation of PROJECT', t('Exported translation template file.')); } @@ -950,13 +950,13 @@ class LocaleUninstallFunctionalTest exte // Build the JavaScript translation file for French. $user = $this->drupalCreateUser(array('translate interface', 'access administration pages')); $this->drupalLogin($user); - $this->drupalGet('admin/international/translate/translate'); + $this->drupalGet('admin/config/international/translate/translate'); $string = db_query('SELECT min(lid) AS lid FROM {locales_source} WHERE location LIKE :location AND textgroup = :textgroup', array( ':location' => '%.js%', ':textgroup' => 'default', ))->fetchObject(); $edit = array('translations[fr]' => 'french translation'); - $this->drupalPost('admin/international/translate/edit/' . $string->lid, $edit, t('Save translations')); + $this->drupalPost('admin/config/international/translate/edit/' . $string->lid, $edit, t('Save translations')); _locale_rebuild_js('fr'); $file = db_query('SELECT javascript FROM {languages} WHERE language = :language', array(':language' => 'fr'))->fetchObject(); $js_file = file_create_path(variable_get('locale_js_directory', 'languages')) . '/fr_' . $file->javascript . '.js'; @@ -1064,14 +1064,14 @@ class LanguageSwitchingFunctionalTest ex $edit = array( 'langcode' => 'fr', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add language')); // Set language negotiation. $edit = array( 'language_negotiation' => LANGUAGE_NEGOTIATION_PATH_DEFAULT, ); - $this->drupalPost('admin/international/language/configure', $edit, t('Save settings')); - $this->assertEqual($this->getUrl(), url('admin/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); + $this->drupalPost('admin/config/international/language/configure', $edit, t('Save settings')); + $this->assertEqual($this->getUrl(), url('admin/config/international/language', array('absolute' => TRUE)), t('Correct page redirection.')); // Assert that the language switching block is displayed on the frontpage. $this->drupalGet(''); @@ -1153,7 +1153,7 @@ class LocaleUserLanguageFunctionalTest e 'prefix' => $prefix, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Add custom language and disable it. // Code for the language. @@ -1171,12 +1171,12 @@ class LocaleUserLanguageFunctionalTest e 'prefix' => $prefix_disabled, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Disable the language. $edit = array( 'enabled[' . $langcode_disabled . ']' => FALSE, ); - $this->drupalPost('admin/international/language', $edit, t('Save configuration')); + $this->drupalPost('admin/config/international/language', $edit, t('Save configuration')); $this->drupalLogout(); // Login as normal user and edit account settings. @@ -1246,13 +1246,13 @@ class LocalePathFunctionalTest extends D 'prefix' => $prefix, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Set language negotiation. $edit = array( 'language_negotiation' => LANGUAGE_NEGOTIATION_PATH_DEFAULT, ); - $this->drupalPost('admin/international/language/configure', $edit, t('Save settings')); + $this->drupalPost('admin/config/international/language/configure', $edit, t('Save settings')); // Create a node. $node = $this->drupalCreateNode(array('type' => 'page')); @@ -1332,7 +1332,7 @@ class LocaleContentFunctionalTest extend 'prefix' => $prefix, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Add disabled custom language. // Code for the language. @@ -1350,9 +1350,9 @@ class LocaleContentFunctionalTest extend 'prefix' => $prefix_disabled, 'direction' => '0', ); - $this->drupalPost('admin/international/language/add', $edit, t('Add custom language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add custom language')); // Disable second custom language. - $path = 'admin/international/language'; + $path = 'admin/config/international/language'; $edit = array( 'enabled[' . $langcode_disabled . ']' => FALSE, ); @@ -1362,7 +1362,7 @@ class LocaleContentFunctionalTest extend $edit = array( 'language_negotiation' => LANGUAGE_NEGOTIATION_PATH_DEFAULT, ); - $this->drupalPost('admin/international/language/configure', $edit, t('Save settings')); + $this->drupalPost('admin/config/international/language/configure', $edit, t('Save settings')); // Set page content type to use multilingual support. $this->drupalGet('admin/build/node-type/page'); Index: modules/path/path.test =================================================================== RCS file: /cvs/drupal/drupal/modules/path/path.test,v retrieving revision 1.14 diff -u -p -r1.14 path.test --- modules/path/path.test 30 Jun 2009 18:21:06 -0000 1.14 +++ modules/path/path.test 2 Jul 2009 17:40:54 -0000 @@ -179,7 +179,7 @@ class PathLanguageTestCase extends Drupa $edit = array(); $edit['langcode'] = 'fr'; - $this->drupalPost('admin/international/language/add', $edit, t('Add language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add language')); // Set language negotiation to "Path prefix with fallback". variable_set('language_negotiation', LANGUAGE_NEGOTIATION_PATH); Index: modules/simpletest/simpletest.module =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.module,v retrieving revision 1.55 diff -u -p -r1.55 simpletest.module --- modules/simpletest/simpletest.module 13 Jun 2009 11:29:25 -0000 1.55 +++ modules/simpletest/simpletest.module 2 Jul 2009 17:40:54 -0000 @@ -13,7 +13,7 @@ function simpletest_help($path, $arg) { switch ($path) { case 'admin/help#simpletest': $output = '

' . t('The SimpleTest module is a framework for running automated unit tests in Drupal. It can be used to verify a working state of Drupal before and after any code changes, or as a means for developers to write and execute tests for their modules.') . '

'; - $output .= '

' . t('Visit Administer >> Site building >> SimpleTest to display a list of available tests. For comprehensive testing, select all tests, or individually select tests for more targeted testing. Note that it might take several minutes for all tests to complete.)', array('@admin-simpletest' => url('admin/development/testing'))) . '

'; + $output .= '

' . t('Visit Administer >> Site building >> SimpleTest to display a list of available tests. For comprehensive testing, select all tests, or individually select tests for more targeted testing. Note that it might take several minutes for all tests to complete.)', array('@admin-simpletest' => url('admin/config/development/testing'))) . '

'; $output .= '

' . t('After the tests have run, a message will be displayed next to each test group indicating whether tests within it passed, failed, or had exceptions. A pass means that a test returned the expected results, while fail means that it did not. An exception normally indicates an error outside of the test, such as a PHP warning or notice. If there were fails or exceptions, the results are expanded, and the tests that had issues will be indicated in red or pink rows. Use these results to refine your code and tests until all tests return a pass.') . '

'; $output .= '

' . t('For more information on creating and modifying your own tests, see the SimpleTest API Documentation in the Drupal handbook.', array('@simpletest-api' => 'http://drupal.org/simpletest')) . '

'; $output .= '

' . t('For more information, see the online handbook entry for SimpleTest module.', array('@simpletest' => 'http://drupal.org/handbook/modules/simpletest')) . '

'; @@ -25,17 +25,17 @@ function simpletest_help($path, $arg) { * Implement hook_menu(). */ function simpletest_menu() { - $items['admin/development/testing'] = array( + $items['admin/config/development/testing'] = array( 'title' => 'Testing', 'page callback' => 'drupal_get_form', 'page arguments' => array('simpletest_test_form'), 'description' => 'Run tests against Drupal core and your active modules. These tests help assure that your site code is working as designed.', 'access arguments' => array('administer unit tests'), ); - $items['admin/development/testing/results/%'] = array( + $items['admin/config/development/testing/results/%'] = array( 'title' => 'Test result', 'page callback' => 'drupal_get_form', - 'page arguments' => array('simpletest_result_form', 4), + 'page arguments' => array('simpletest_result_form', 5), 'description' => 'View result of tests.', 'access arguments' => array('administer unit tests'), 'type' => MENU_CALLBACK, @@ -132,7 +132,7 @@ function simpletest_run_tests($test_list // By calling batch_process() directly, we skip that behavior and ensure // that we don't exceed the size of data that can be sent to the database // (max_allowed_packet on MySQL). - batch_process('admin/development/testing/results/' . $test_id); + batch_process('admin/config/development/testing/results/' . $test_id); } /** Index: modules/simpletest/simpletest.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.pages.inc,v retrieving revision 1.5 diff -u -p -r1.5 simpletest.pages.inc --- modules/simpletest/simpletest.pages.inc 20 Jun 2009 06:09:56 -0000 1.5 +++ modules/simpletest/simpletest.pages.inc 2 Jul 2009 17:40:54 -0000 @@ -203,7 +203,7 @@ function simpletest_result_form(&$form_s $results = array(); if (is_numeric($test_id) && !$results = simpletest_result_get($test_id)) { drupal_set_message(t('No test results to display.'), 'error'); - drupal_goto('admin/development/testing'); + drupal_goto('admin/config/development/testing'); return $form; } @@ -275,7 +275,7 @@ function simpletest_result_form(&$form_s $form['result']['summary']['#ok'] = $form['result']['summary']['#fail'] + $form['result']['summary']['#exception'] == 0; // Actions. - $form['#action'] = url('admin/development/testing/results/re-run'); + $form['#action'] = url('admin/config/development/testing/results/re-run'); $form['action'] = array( '#type' => 'fieldset', '#title' => t('Actions'), @@ -310,7 +310,7 @@ function simpletest_result_form(&$form_s ); $form['action']['return'] = array( - '#markup' => l(t('Return to list'), 'admin/development/testing'), + '#markup' => l(t('Return to list'), 'admin/config/development/testing'), ); if (is_numeric($test_id)) { @@ -338,7 +338,7 @@ function simpletest_result_form_submit($ } if (!$classes) { - $form_state['redirect'] = 'admin/development/testing'; + $form_state['redirect'] = 'admin/config/development/testing'; return; } Index: modules/simpletest/simpletest.test =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.test,v retrieving revision 1.25 diff -u -p -r1.25 simpletest.test --- modules/simpletest/simpletest.test 17 Jun 2009 13:40:26 -0000 1.25 +++ modules/simpletest/simpletest.test 2 Jul 2009 17:40:54 -0000 @@ -84,7 +84,7 @@ class SimpleTestFunctionalTest extends D // Run twice so test_ids can be accumulated. for ($i = 0; $i < 2; $i++) { // Run this test from web interface. - $this->drupalGet('admin/development/testing'); + $this->drupalGet('admin/config/development/testing'); $edit = array(); $edit['SimpleTestFunctionalTest'] = TRUE; Index: modules/simpletest/tests/common.test =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/tests/common.test,v retrieving revision 1.48 diff -u -p -r1.48 common.test --- modules/simpletest/tests/common.test 2 Jul 2009 04:27:23 -0000 1.48 +++ modules/simpletest/tests/common.test 2 Jul 2009 17:40:55 -0000 @@ -925,7 +925,7 @@ class FormatDateUnitTest extends DrupalW // Create an admin user and add Spanish language. $admin_user = $this->drupalCreateUser(array('administer languages')); $this->drupalLogin($admin_user); - $this->drupalPost('admin/international/language/add', array('langcode' => 'es'), t('Add language')); + $this->drupalPost('admin/config/international/language/add', array('langcode' => 'es'), t('Add language')); // Create a test user to carry out the tests. $test_user = $this->drupalCreateUser(); Index: modules/system/system.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v retrieving revision 1.158 diff -u -p -r1.158 system.admin.inc --- modules/system/system.admin.inc 19 Jun 2009 20:35:05 -0000 1.158 +++ modules/system/system.admin.inc 2 Jul 2009 17:40:57 -0000 @@ -59,6 +59,51 @@ function system_main_admin_page($arg = N } } +/** + * Menu callback; Provide the administration overview page. + */ +function system_admin_config_page() { + // Check for status report errors. + if (system_status(TRUE) && user_access('administer site configuration')) { + drupal_set_message(t('One or more problems were detected with your Drupal installation. Check the status report for more information.', array('@status' => url('admin/reports/status'))), 'error'); + } + $blocks = array(); + if ($admin = db_query("SELECT menu_name, mlid FROM {menu_links} WHERE link_path = 'admin/config' AND module = 'system'")->fetchAssoc()) { + $result = db_query(" + SELECT m.*, ml.* + FROM {menu_links} ml + INNER JOIN {menu_router} m ON ml.router_path = m.path + WHERE ml.link_path != 'admin/help' AND menu_name = :menu_name AND ml.plid = :mlid AND hidden = 0", $admin, array('fetch' => PDO::FETCH_ASSOC)); + foreach ($result as $item) { + _menu_link_translate($item); + if (!$item['access']) { + continue; + } + // The link 'description' either derived from the hook_menu 'description' + // or entered by the user via menu module is saved as the title attribute. + if (!empty($item['localized_options']['attributes']['title'])) { + $item['description'] = $item['localized_options']['attributes']['title']; + } + $block = $item; + $block['content'] = ''; + if ($item['block_callback'] && function_exists($item['block_callback'])) { + $function = $item['block_callback']; + $block['content'] .= $function(); + } + $block['content'] .= theme('admin_block_content', system_admin_menu_block($item)); + // Prepare for sorting as in function _menu_tree_check_access(). + // The weight is offset so it is always positive, with a uniform 5-digits. + $blocks[(50000 + $item['weight']) . ' ' . $item['title'] . ' ' . $item['mlid']] = $block; + } + } + if ($blocks) { + ksort($blocks); + return theme('admin_page', $blocks); + } + else { + return t('You do not have any administrative items.'); + } +} /** * Provide a single block from the administration menu as a page. Index: modules/system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.718 diff -u -p -r1.718 system.module --- modules/system/system.module 1 Jul 2009 13:44:53 -0000 1.718 +++ modules/system/system.module 2 Jul 2009 17:40:58 -0000 @@ -502,6 +502,13 @@ function system_menu() { 'type' => MENU_LOCAL_TASK, 'weight' => 2, ); + $items['admin/config'] = array( + 'title' => 'Config and modules', + 'page callback' => 'system_admin_config_page', + 'position' => 'right', + 'access callback' => array('system_admin_menu_block_access'), + 'access arguments' => array('admin/config', 'access administration pages'), + ); $items['admin/content'] = array( 'title' => 'Content management', 'description' => "Manage your site's content.", @@ -522,6 +529,17 @@ function system_menu() { 'access callback' => 'system_admin_menu_block_access', 'access arguments' => array('admin/settings', 'access administration pages'), ); + + // Development menu category. + $items['admin/config/development'] = array( + 'title' => 'Development', + 'description' => 'Development tools.', + 'position' => 'right', + 'weight' => -7, + 'page callback' => 'system_admin_menu_block_page', + 'access callback' => 'system_admin_menu_block_access', + 'access arguments' => array('admin/config/development', 'access administration pages'), + ); $items['admin/build'] = array( 'title' => 'Site building', 'description' => 'Control how your site looks and feels.', @@ -597,17 +615,6 @@ function system_menu() { 'type' => MENU_CALLBACK, ); - // Development menu category. - $items['admin/development'] = array( - 'title' => 'Development', - 'description' => 'Development tools.', - 'position' => 'right', - 'weight' => -7, - 'page callback' => 'system_admin_menu_block_page', - 'access callback' => 'system_admin_menu_block_access', - 'access arguments' => array('admin/development', 'access administration pages'), - ); - // Actions. $items['admin/settings/actions'] = array( 'title' => 'Actions', Index: modules/translation/translation.test =================================================================== RCS file: /cvs/drupal/drupal/modules/translation/translation.test,v retrieving revision 1.12 diff -u -p -r1.12 translation.test --- modules/translation/translation.test 12 Jun 2009 08:39:40 -0000 1.12 +++ modules/translation/translation.test 2 Jul 2009 17:40:58 -0000 @@ -92,13 +92,13 @@ class TranslationTestCase extends Drupal */ function addLanguage($language_code) { // Check to make sure that language has not already been installed. - $this->drupalGet('admin/international/language'); + $this->drupalGet('admin/config/international/language'); if (strpos($this->drupalGetContent(), 'enabled[' . $language_code . ']') === FALSE) { // Doesn't have language installed so add it. $edit = array(); $edit['langcode'] = $language_code; - $this->drupalPost('admin/international/language/add', $edit, t('Add language')); + $this->drupalPost('admin/config/international/language/add', $edit, t('Add language')); // Make sure we're not using a stale list. drupal_static_reset('language_list');