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' => '_',
 | 
					    '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.
 | 
					  // The source element defaults to array('name'), but may have been overidden.
 | 
				
			||||||
  if (empty($element['#machine_name']['source'])) {
 | 
					  if (empty($element['#machine_name']['source'])) {
 | 
				
			||||||
    return $element;
 | 
					    return $element;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1861,6 +1861,34 @@ class LocaleContentFunctionalTest extends DrupalWebTestCase {
 | 
				
			||||||
    parent::setUp('locale');
 | 
					    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.
 | 
					   * Test if a content type can be set to multilingual and language is present.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue