Issue #381994 by xjm, good_man, elcuco, et al: Fixed Machine-name fields are always in Latin characters, and should therefore always be LTR.
parent
2747c3c4d7
commit
eb8c4c09a2
|
@ -3355,6 +3355,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;
|
||||
|
|
|
@ -1861,6 +1861,34 @@ class LocaleContentFunctionalTest extends DrupalWebTestCase {
|
|||
parent::setUp('locale');
|
||||
}
|
||||
|
||||
/**
|
||||
* 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['predefined_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 is present.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue