From e0a60c29bbc9519bdfe72ca1495ddfaa0aac2d36 Mon Sep 17 00:00:00 2001
From: Eric Kirsner <evilehk@gmail.com>
Date: Sun, 20 Oct 2013 00:10:09 -0500
Subject: [PATCH 1/3] patch for chromes hidden required fields for issue
 #2101427

---
 core/lib/Drupal/Core/Database/Install/Tasks.php | 12 ++++++++++--
 core/misc/states.js                             |  4 ++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/core/lib/Drupal/Core/Database/Install/Tasks.php b/core/lib/Drupal/Core/Database/Install/Tasks.php
index df58c25..04993bd 100644
--- a/core/lib/Drupal/Core/Database/Install/Tasks.php
+++ b/core/lib/Drupal/Core/Database/Install/Tasks.php
@@ -215,16 +215,24 @@ public function getFormOptions($database) {
       '#title' => t('Database name'),
       '#default_value' => empty($database['database']) ? '' : $database['database'],
       '#size' => 45,
-      '#required' => TRUE,
       '#description' => t('The name of the database your @drupal data will be stored in.', array('@drupal' => drupal_install_profile_distribution_name())),
+      '#states' => array(
+        'required' => array(
+          ':input[name=driver]' => array('value' => $this->pdoDriver),
+        ),
+      ),
     );
 
     $form['username'] = array(
       '#type' => 'textfield',
       '#title' => t('Database username'),
       '#default_value' => empty($database['username']) ? '' : $database['username'],
-      '#required' => TRUE,
       '#size' => 45,
+      '#states' => array(
+        'required' => array(
+          ':input[name=driver]' => array('value' => $this->pdoDriver),
+        ),
+      ),
     );
 
     $form['password'] = array(
diff --git a/core/misc/states.js b/core/misc/states.js
index d934ee5..4941ee3 100644
--- a/core/misc/states.js
+++ b/core/misc/states.js
@@ -517,10 +517,10 @@ $(document).bind('state:disabled', function(e) {
 $(document).bind('state:required', function(e) {
   if (e.trigger) {
     if (e.value) {
-      $(e.target).closest('.form-item, .form-wrapper').find('label').append('<abbr class="form-required" title="' + Drupal.t('This field is required.') + '">*</abbr>');
+      $(e.target).attr({'required': 'required', 'aria-required': 'aria-required'}).closest('.form-item, .form-wrapper').find('label').append('<abbr class="form-required" title="' + Drupal.t('This field is required.') + '">*</abbr>');
     }
     else {
-      $(e.target).closest('.form-item, .form-wrapper').find('label .form-required').remove();
+      $(e.target).removeAttr('required aria-required').closest('.form-item, .form-wrapper').find('label .form-required').remove();
     }
   }
 });
-- 
1.8.1.msysgit.1


From 74b42dbe48fd64e23e4c869dfd6c5de293d69c20 Mon Sep 17 00:00:00 2001
From: Eric Kirsner <evilehk@gmail.com>
Date: Sun, 20 Oct 2013 11:45:54 -0500
Subject: [PATCH 2/3] adds abbr to drupal.theme for issue #2101427

---
 core/misc/states.js | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/core/misc/states.js b/core/misc/states.js
index 4941ee3..20a1f76 100644
--- a/core/misc/states.js
+++ b/core/misc/states.js
@@ -517,7 +517,9 @@ $(document).bind('state:disabled', function(e) {
 $(document).bind('state:required', function(e) {
   if (e.trigger) {
     if (e.value) {
-      $(e.target).attr({'required': 'required', 'aria-required': 'aria-required'}).closest('.form-item, .form-wrapper').find('label').append('<abbr class="form-required" title="' + Drupal.t('This field is required.') + '">*</abbr>');
+      var marker = Drupal.theme('requiredMarker')
+      var label = $(e.target).attr({'required': 'required', 'aria-required': 'aria-required'}).closest('.form-item, .form-wrapper').find('label');
+      label.append(marker);
     }
     else {
       $(e.target).removeAttr('required aria-required').closest('.form-item, .form-wrapper').find('label .form-required').remove();
@@ -566,4 +568,10 @@ function compare (a, b) {
   return (a === b) ? (typeof a === 'undefined' ? a : true) : (typeof a === 'undefined' || typeof b === 'undefined');
 }
 
+$.extend(Drupal.theme, {
+  requiredMarker: function () {
+    return '<abbr class="form-required" title="' + Drupal.t('This field is required.') + '">*</abbr>';
+  }
+});
+
 })(jQuery);
-- 
1.8.1.msysgit.1


From 8ad73eaa2a793805c91f7783673441f4103f60b7 Mon Sep 17 00:00:00 2001
From: Eric Kirsner <evilehk@gmail.com>
Date: Sun, 20 Oct 2013 12:17:39 -0500
Subject: [PATCH 3/3] spacing issue between {} to adhere to Drupal coding
 standards (thanks nod_!) for issue #210427

---
 core/misc/states.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/misc/states.js b/core/misc/states.js
index 20a1f76..382a297 100644
--- a/core/misc/states.js
+++ b/core/misc/states.js
@@ -518,7 +518,7 @@ $(document).bind('state:required', function(e) {
   if (e.trigger) {
     if (e.value) {
       var marker = Drupal.theme('requiredMarker')
-      var label = $(e.target).attr({'required': 'required', 'aria-required': 'aria-required'}).closest('.form-item, .form-wrapper').find('label');
+      var label = $(e.target).attr({ 'required': 'required', 'aria-required': 'aria-required' }).closest('.form-item, .form-wrapper').find('label');
       label.append(marker);
     }
     else {
-- 
1.8.1.msysgit.1

