From 9580d3c400c57b537c18baafacbacf88296d8ebc Mon Sep 17 00:00:00 2001
From: michaelk <michaelk@901162.no-reply.drupal.org>
Date: Tue, 18 Jun 2013 12:09:09 -0700
Subject: [PATCH] Set Next/Finish as default submit button when pressing Enter on Short Answer questions

---
 question_types/quiz_question/quiz_question.module |   11 +++++++++++
 quiz.css                                          |    8 ++++++++
 quiz.module                                       |    6 ++++++
 3 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/question_types/quiz_question/quiz_question.module b/question_types/quiz_question/quiz_question.module
index 935daa0..a968ccb 100644
--- a/question_types/quiz_question/quiz_question.module
+++ b/question_types/quiz_question/quiz_question.module
@@ -229,6 +229,17 @@ function quiz_question_answering_form($form, $form_state, $node, $include_nid_in
       );
     }
   }
+  
+  // Add hidden next button as the first button, so it is the default for the form
+  $form['navigation']['submit-hidden'] = $form['navigation']['submit'];
+  $form['navigation']['submit-hidden']['#weight'] = -20;
+  
+  // Add a hidden form element with the default operation to take if the form is
+  // submitted with the enter key in IE 8 or other browser that don't submit a default
+  // button in this case.
+  $form['navigation']['default_submit'] = $form['navigation']['submit'];
+  $form['navigation']['default_submit']['#type'] = 'hidden';
+  
   return $form;
 }
 
diff --git a/quiz.css b/quiz.css
index fd01491..c4dd04b 100644
--- a/quiz.css
+++ b/quiz.css
@@ -163,6 +163,14 @@ input.q-skip-button:hover, input#edit-back:hover {
   text-decoration: underline;
 }
 
+input#edit-submit-hidden {
+  height: 0;
+  width: 0;
+  overflow: hidden;
+  padding: 0;
+  border: none;
+}
+
 .quiz-passed {
   color: #00dd00;
 }
diff --git a/quiz.module b/quiz.module
index ab679e8..a70100d 100644
--- a/quiz.module
+++ b/quiz.module
@@ -1918,6 +1918,12 @@ function quiz_take_quiz($quiz) {
   if (isset($_SESSION['quiz_' . $quiz->nid]['question_duration'])) {
     $_SESSION['quiz_' . $quiz->nid]['question_duration'] -= REQUEST_TIME - $_SESSION['quiz_' . $quiz->nid]['question_start_time'];
   }
+  
+  // Check to see if the question navigation form was submitted using the enter key
+  // in a browser that doesn't pass a default submit operation value when this happens.
+  if (!isset($_POST['op']) && isset($_POST['default_submit'])) {
+    $_POST['op'] = $_POST['default_submit'];
+  }
 
   if (!isset($_POST['op'])) {
     // @todo Starting new quiz... Do we need to show instructions here?
-- 
1.7.3.1.msysgit.0

