Beispiel #1
0
 /**
  * Update a question_attempts row to refect any changes in a question_attempt
  * (but not any of its steps).
  * @param question_attempt $qa the question attempt that has changed.
  */
 public function update_question_attempt(question_attempt $qa)
 {
     $record = new stdClass();
     $record->id = $qa->get_database_id();
     $record->maxmark = $qa->get_max_mark();
     $record->minfraction = $qa->get_min_fraction();
     $record->maxfraction = $qa->get_max_fraction();
     $record->flagged = $qa->is_flagged();
     $record->questionsummary = $qa->get_question_summary();
     $record->rightanswer = $qa->get_right_answer_summary();
     $record->responsesummary = $qa->get_response_summary();
     $record->timemodified = time();
     $this->db->update_record('question_attempts', $record);
 }
Beispiel #2
0
 /**
  * Render the question flag, assuming $flagsoption allows it.
  *
  * @param question_attempt $qa the question attempt to display.
  * @param int $flagsoption the option that says whether flags should be displayed.
  */
 protected function question_flag(question_attempt $qa, $flagsoption)
 {
     global $CFG;
     $divattributes = array('class' => 'questionflag');
     switch ($flagsoption) {
         case question_display_options::VISIBLE:
             $flagcontent = $this->get_flag_html($qa->is_flagged());
             break;
         case question_display_options::EDITABLE:
             $id = $qa->get_flag_field_name();
             // The checkbox id must be different from any element name, because
             // of a stupid IE bug:
             // http://www.456bereastreet.com/archive/200802/beware_of_id_and_name_attribute_mixups_when_using_getelementbyid_in_internet_explorer/
             $checkboxattributes = array('type' => 'checkbox', 'id' => $id . 'checkbox', 'name' => $id, 'value' => 1);
             if ($qa->is_flagged()) {
                 $checkboxattributes['checked'] = 'checked';
             }
             $postdata = question_flags::get_postdata($qa);
             $flagcontent = html_writer::empty_tag('input', array('type' => 'hidden', 'name' => $id, 'value' => 0)) . html_writer::empty_tag('input', $checkboxattributes) . html_writer::empty_tag('input', array('type' => 'hidden', 'value' => $postdata, 'class' => 'questionflagpostdata')) . html_writer::tag('label', $this->get_flag_html($qa->is_flagged(), $id . 'img'), array('id' => $id . 'label', 'for' => $id . 'checkbox')) . "\n";
             $divattributes = array('class' => 'questionflag editable', 'aria-atomic' => 'true', 'aria-relevant' => 'text', 'aria-live' => 'assertive');
             break;
         default:
             $flagcontent = '';
     }
     return html_writer::nonempty_tag('div', $flagcontent, $divattributes);
 }
Beispiel #3
0
 /**
  * Render the question flag, assuming $flagsoption allows it.
  *
  * @param question_attempt $qa the question attempt to display.
  * @param int $flagsoption the option that says whether flags should be displayed.
  */
 protected function question_flag(question_attempt $qa, $flagsoption) {
     global $CFG;
     switch ($flagsoption) {
         case question_display_options::VISIBLE:
             $flagcontent = $this->get_flag_html($qa->is_flagged());
             break;
         case question_display_options::EDITABLE:
             $id = $qa->get_flag_field_name();
             if ($qa->is_flagged()) {
                 $checked = 'checked="checked" ';
             } else {
                 $checked = '';
             }
             $postdata = question_flags::get_postdata($qa);
             // The checkbox id must be different from any element name, because
             // of a stupid IE bug:
             // http://www.456bereastreet.com/archive/200802/beware_of_id_and_name_attribute_mixups_when_using_getelementbyid_in_internet_explorer/
             $flagcontent = '<input type="hidden" name="' . $id . '" value="0" />' .
                     '<input type="checkbox" id="' . $id . 'checkbox" name="' . $id .
                             '" value="1" ' . $checked . ' />' .
                     '<input type="hidden" value="' . s($postdata) .
                             '" class="questionflagpostdata" />' .
                     '<label id="' . $id . 'label" for="' . $id . 'checkbox">' .
                             $this->get_flag_html($qa->is_flagged(), $id . 'img') .
                             '</label>' . "\n";
             break;
         default:
             $flagcontent = '';
     }
     if ($flagcontent) {
         return '<div class="questionflag">' . $flagcontent . "</div>\n";
     }
 }