# This patch file was generated by NetBeans IDE # This patch can be applied using context Tools: Apply Diff Patch action on respective folder. # It uses platform neutral UTF-8 encoding. # Above lines and this line are ignored by the patching process. Index: modules/locale/locale.module --- modules/locale/locale.module Base (1.276) +++ modules/locale/locale.module Locally Modified (Based On 1.276) @@ -349,6 +349,7 @@ '#type' => 'fieldset', '#title' => t('Language settings'), '#weight' => 1, + '#access' => ($form['#user_category'] == 'account' || ($form['#user_category'] == 'register' && user_access('administer users'))), ); // Get language negotiation settings. @@ -411,7 +412,7 @@ if (drupal_multilingual()) { // Display language selector when either creating a user on the admin // interface or editing a user account. - if (($form_id == 'user_register_form' && user_access('administer users')) || ($form_id == 'user_profile_form' && $form['#user_category'] == 'account')) { + if ($form_id == 'user_register_form' || ($form_id == 'user_profile_form' && $form['#user_category'] == 'account')) { locale_language_selector_form($form, $form_state, $form['#user']); } } Index: modules/locale/locale.test --- modules/locale/locale.test Base (1.56) +++ modules/locale/locale.test Locally Modified (Based On 1.56) @@ -1207,6 +1207,107 @@ } /** + * Functional test for language handling during user creation. + */ +class LocalUserCreationTest extends DrupalWebTestCase { + + public static function getInfo() { + return array( + 'name' => 'User creation', + 'description' => 'Tests whether proper language is stored for new users and access to language selector.', + 'group' => 'Locale', + ); + } + + function setUp() { + parent::setUp('locale'); + } + + /** + * Functional test for language handling during user creation. + */ + function testLocalUserCreation() { + // User to add and remove language and create new users. + $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages', 'administer users')); + $this->drupalLogin($admin_user); + + // Add predefined language. + $langcode = 'fr'; + $edit = array( + 'langcode' => 'fr', + ); + $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language')); + $this->assertText($langcode, t('Language added successfully.')); + $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.')); + + // Set language negotiation. + $edit = array( + 'language[enabled][locale-url]' => TRUE, + ); + $this->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings')); + $this->assertText(t('Language negotiation configuration saved.'), t('Set language negotiation.')); + + // Check if the language selector is available on admin/people/create and + // set to the currently active language. + $this->drupalGet($langcode . '/admin/people/create'); + $this->assertFieldChecked("edit-language-$langcode", t('Global language set in the language selector.')); + + // Create a user with the admin/people/create form and check if the correct + // language is set. + $username = $this->randomName(10); + $edit = array( + 'name' => $username, + 'mail' => $this->randomName(4) . '@example.com', + 'pass[pass1]' => $username, + 'pass[pass2]' => $username, + ); + + $this->drupalPost($langcode . '/admin/people/create', $edit, t('Create new account')); + + $user = user_load_by_name($username); + $this->assertEqual($user->language, $langcode, t('New user has correct language set.')); + + // Register a new user and check if the language selector is hidden. + $this->drupalLogout(); + + $this->drupalGet($langcode . '/user/register'); + $this->assertNoFieldByName('language[fr]', t('Language selector is not accessible.')); + + $username = $this->randomName(10); + $edit = array( + 'name' => $username, + 'mail' => $this->randomName(4) . '@example.com', + ); + + $this->drupalPost($langcode . '/user/register', $edit, t('Create new account')); + + $user = user_load_by_name($username); + $this->assertEqual($user->language, $langcode, t('New user has correct language set.')); + + // Test if the admin can use the language selector and if the + // correct language is was saved. + $user_edit = $langcode . '/user/' . $user->uid . '/edit'; + + $this->drupalLogin($admin_user); + $this->drupalGet($user_edit); + $this->assertFieldChecked("edit-language-$langcode", t('Language selector is accessible and correct language is selected.')); + + // Set pass_raw so we can login the new user. + $user->pass_raw = $this->randomName(10); + $edit = array( + 'pass[pass1]' => $user->pass_raw, + 'pass[pass2]' => $user->pass_raw, + ); + + $this->drupalPost($user_edit, $edit, t('Save')); + + $this->drupalLogin($user); + $this->drupalGet($user_edit); + $this->assertFieldChecked("edit-language-$langcode", t('Language selector is accessible and correct language is selected.')); + } +} + +/** * Functional tests for configuring a different path alias per language. */ class LocalePathFunctionalTest extends DrupalWebTestCase {