diff options
-rw-r--r-- | includes/form.inc | 7 | ||||
-rw-r--r-- | modules/locale/locale.test | 28 |
2 files changed, 35 insertions, 0 deletions
diff --git a/includes/form.inc b/includes/form.inc index b0d0b4449..3d5f6f22e 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -3351,6 +3351,13 @@ function form_process_machine_name($element, &$form_state) { 'replace' => '_', ); + // By default, machine names are restricted to Latin alphanumeric characters. + // So, default to LTR directionality. + if (!isset($element['#attributes'])) { + $element['#attributes'] = array(); + } + $element['#attributes'] += array('dir' => 'ltr'); + // The source element defaults to array('name'), but may have been overidden. if (empty($element['#machine_name']['source'])) { return $element; diff --git a/modules/locale/locale.test b/modules/locale/locale.test index 5eb1cd342..ca945569a 100644 --- a/modules/locale/locale.test +++ b/modules/locale/locale.test @@ -1881,6 +1881,34 @@ class LocaleContentFunctionalTest extends DrupalWebTestCase { } /** + * Verifies that machine name fields are always LTR. + */ + function testMachineNameLTR() { + // User to add and remove language. + $admin_user = $this->drupalCreateUser(array('administer languages', 'administer content types', 'access administration pages')); + + // Log in as admin. + $this->drupalLogin($admin_user); + + // Verify that the machine name field is LTR for a new content type. + $this->drupalGet('admin/structure/types/add'); + $this->assertFieldByXpath('//input[@name="type" and @dir="ltr"]', NULL, 'The machine name field is LTR when no additional language is configured.'); + + // Install the Arabic language (which is RTL) and configure as the default. + $edit = array(); + $edit['langcode'] = 'ar'; + $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language')); + + $edit = array(); + $edit['site_default'] = 'ar'; + $this->drupalPost(NULL, $edit, t('Save configuration')); + + // Verify that the machine name field is still LTR for a new content type. + $this->drupalGet('admin/structure/types/add'); + $this->assertFieldByXpath('//input[@name="type" and @dir="ltr"]', NULL, 'The machine name field is LTR when the default language is RTL.'); + } + + /** * Test if a content type can be set to multilingual and language setting is * present on node add and edit forms. */ |