summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/form.inc7
-rw-r--r--modules/locale/locale.test28
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.
*/