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