Merge branch 'MDL-47494' of git://github.com/timhunt/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 22 Sep 2015 16:38:27 +0000 (18:38 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 22 Sep 2015 16:38:27 +0000 (18:38 +0200)
Note: Fixed some minor grunt and EOF whitespace issues while merging.

1  2 
question/type/ddimageortext/questionbase.php
question/type/ddimageortext/yui/build/moodle-qtype_ddimageortext-form/moodle-qtype_ddimageortext-form-debug.js
question/type/ddimageortext/yui/build/moodle-qtype_ddimageortext-form/moodle-qtype_ddimageortext-form.js
question/type/ddmarker/db/upgrade.php
question/type/ddwtos/lib.php
question/type/gapselect/lib.php

index 0000000,68fa585..c7720f9
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,169 +1,168 @@@
 -
+ <?php
+ // This file is part of Moodle - http://moodle.org/
+ //
+ // Moodle is free software: you can redistribute it and/or modify
+ // it under the terms of the GNU General Public License as published by
+ // the Free Software Foundation, either version 3 of the License, or
+ // (at your option) any later version.
+ //
+ // Moodle is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
+ // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+ /**
+  * Drag-and-drop onto image question definition class.
+  *
+  * @package    qtype_ddimageortext
+  * @copyright  2009 The Open University
+  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+  */
+ defined('MOODLE_INTERNAL') || die();
+ require_once($CFG->dirroot . '/question/type/gapselect/questionbase.php');
+ /**
+  * Represents a drag-and-drop onto image question.
+  *
+  * @copyright  2009 The Open University
+  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+  */
+ class qtype_ddtoimage_question_base extends qtype_gapselect_question_base {
+     public function clear_wrong_from_response(array $response) {
+         foreach ($this->places as $place => $notused) {
+             if (array_key_exists($this->field($place), $response) &&
+                     $response[$this->field($place)] != $this->get_right_choice_for($place)) {
+                 $response[$this->field($place)] = '';
+             }
+         }
+         return $response;
+     }
+     public function get_right_choice_for($placeno) {
+         $place = $this->places[$placeno];
+         foreach ($this->choiceorder[$place->group] as $choicekey => $choiceid) {
+             if ($this->rightchoices[$placeno] == $choiceid) {
+                 return $choicekey;
+             }
+         }
+     }
+     public function summarise_response(array $response) {
+         $allblank = true;
+         foreach ($this->places as $placeno => $place) {
+             $summariseplace = $place->summarise();
+             if (array_key_exists($this->field($placeno), $response) &&
+                                                                 $response[$this->field($placeno)]) {
+                 $selected = $this->get_selected_choice($place->group,
+                                                                 $response[$this->field($placeno)]);
+                 $summarisechoice = $selected->summarise();
+                 $allblank = false;
+             } else {
+                 $summarisechoice = '';
+             }
+             $choices[] = "$summariseplace -> {{$summarisechoice}}";
+         }
+         if ($allblank) {
+             return null;
+         }
+         return implode(' ', $choices);
+     }
+     public function check_file_access($qa, $options, $component, $filearea, $args, $forcedownload) {
+         if ($filearea == 'bgimage' || $filearea == 'dragimage') {
+             $validfilearea = true;
+         } else {
+             $validfilearea = false;
+         }
+         if ($component == 'qtype_ddimageortext' && $validfilearea) {
+             $question = $qa->get_question();
+             $itemid = reset($args);
+             if ($filearea == 'bgimage') {
+                 return $itemid == $question->id;
+             } else if ($filearea == 'dragimage') {
+                 foreach ($question->choices as $group) {
+                     foreach ($group as $drag) {
+                         if ($drag->id == $itemid) {
+                             return true;
+                         }
+                     }
+                 }
+                 return false;
+             }
+         } else {
+             return parent::check_file_access($qa, $options, $component,
+                                                                 $filearea, $args, $forcedownload);
+         }
+     }
+     public function get_validation_error(array $response) {
+         if ($this->is_complete_response($response)) {
+             return '';
+         }
+         return get_string('pleasedraganimagetoeachdropregion', 'qtype_ddimageortext');
+     }
+     public function classify_response(array $response) {
+         $parts = array();
+         foreach ($this->places as $placeno => $place) {
+             $group = $place->group;
+             if (!array_key_exists($this->field($placeno), $response) ||
+                     !$response[$this->field($placeno)]) {
+                 $parts[$placeno] = question_classified_response::no_response();
+                 continue;
+             }
+             $fieldname = $this->field($placeno);
+             $choicekey = $this->choiceorder[$group][$response[$fieldname]];
+             $choice = $this->choices[$group][$choicekey];
+             $correct = $this->get_right_choice_for($placeno) == $response[$fieldname];
+             if ($correct) {
+                 $grade = 1;
+             } else {
+                 $grade = 0;
+             }
+             $parts[$placeno] = new question_classified_response($choice->no, $choice->summarise(), $grade);
+         }
+         return $parts;
+     }
+     public function get_random_guess_score() {
+         $accum = 0;
+         foreach ($this->places as $place) {
+             foreach ($this->choices[$place->group] as $choice) {
+                 if ($choice->infinite) {
+                     return null;
+                 }
+             }
+             $accum += 1 / count($this->choices[$place->group]);
+         }
+         return $accum / count($this->places);
+     }
+     public function get_question_summary() {
+         $summary = '';
+         if (!html_is_blank($this->questiontext)) {
+             $question = $this->html_to_text($this->questiontext, $this->questiontextformat);
+             $summary .= $question . '; ';
+         }
+         $places = array();
+         foreach ($this->places as $place) {
+             $cs = array();
+             foreach ($this->choices[$place->group] as $choice) {
+                 $cs[] = $choice->summarise();
+             }
+             $places[] = '[[' . $place->summarise() . ']] -> {' . implode(' / ', $cs) . '}';
+         }
+         $summary .= implode('; ', $places);
+         return $summary;
+     }
+ }
index 0000000,03f795b..98d1c47
mode 000000,100755..100755
--- /dev/null
@@@ -1,0 -1,63 +1,62 @@@
 -
+ <?php
+ // This file is part of Moodle - http://moodle.org/
+ //
+ // Moodle is free software: you can redistribute it and/or modify
+ // it under the terms of the GNU General Public License as published by
+ // the Free Software Foundation, either version 3 of the License, or
+ // (at your option) any later version.
+ //
+ // Moodle is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
+ // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+ /**
+  * Ddmarker question type upgrade code.
+  *
+  * @package    qtype_ddmarker
+  * @copyright  2013 The Open University
+  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+  */
+ defined('MOODLE_INTERNAL') || die();
+ /**
+  * Upgrade code for the ddmarker question type.
+  * @param int $oldversion the version we are upgrading from.
+  * @return bool
+  */
+ function xmldb_qtype_ddmarker_upgrade($oldversion) {
+     global $CFG, $DB;
+     $dbman = $DB->get_manager();
+     // Moodle v2.3.0 release upgrade line
+     // Put any upgrade step following this.
+     // Moodle v2.4.0 release upgrade line
+     // Put any upgrade step following this.
+     // Moodle v2.5.0 release upgrade line
+     // Put any upgrade step following this.
+     if ($oldversion < 2013053000) {
+         // Define field noofdrags to be added to qtype_ddmarker_drags.
+         $table = new xmldb_table('qtype_ddmarker_drags');
+         $field = new xmldb_field('noofdrags', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '1', 'infinite');
+         // Conditionally launch add field noofdrags.
+         if (!$dbman->field_exists($table, $field)) {
+             $dbman->add_field($table, $field);
+         }
+         // Savepoint reached.
+         upgrade_plugin_savepoint(true, 2013053000, 'qtype', 'ddmarker');
+     }
+     return true;
+ }
index 0000000,4a959da..6feadeb
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,45 +1,44 @@@
 -
+ <?php
+ // This file is part of Moodle - http://moodle.org/
+ //
+ // Moodle is free software: you can redistribute it and/or modify
+ // it under the terms of the GNU General Public License as published by
+ // the Free Software Foundation, either version 3 of the License, or
+ // (at your option) any later version.
+ //
+ // Moodle is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
+ // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+ /**
+  * Serve question type files
+  *
+  * @package   qtype_ddwtos
+  * @copyright 2012 The Open University
+  * @author    Jamie Pratt <me@jamiep.org>
+  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+  */
+ defined('MOODLE_INTERNAL') || die();
+ /**
+  * Checks file access for ddwtos questions.
+  *
+  * @param object $course The course we are in
+  * @param object $cm Course module
+  * @param object $context The context object
+  * @param string $filearea the name of the file area.
+  * @param array $args the remaining bits of the file path.
+  * @param bool $forcedownload whether the user must be forced to download the file.
+  * @param array $options additional options affecting the file serving
+  */
+ function qtype_ddwtos_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options=array()) {
+     global $CFG;
+     require_once($CFG->libdir . '/questionlib.php');
+     question_pluginfile($course, $context, 'qtype_ddwtos', $filearea, $args, $forcedownload, $options);
+ }
index 0000000,38dfad2..1a3ab79
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,35 +1,34 @@@
 -
+ <?php
+ // This file is part of Moodle - http://moodle.org/
+ //
+ // Moodle is free software: you can redistribute it and/or modify
+ // it under the terms of the GNU General Public License as published by
+ // the Free Software Foundation, either version 3 of the License, or
+ // (at your option) any later version.
+ //
+ // Moodle is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
+ // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+ /**
+  * Serve question type files
+  *
+  * @package   qtype_gapselect
+  * @copyright 2012 The Open University
+  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+  */
+ defined('MOODLE_INTERNAL') || die();
+ /**
+  * Checks file access for gapselect questions.
+  */
+ function qtype_gapselect_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options=array()) {
+     global $CFG;
+     require_once($CFG->libdir . '/questionlib.php');
+     question_pluginfile($course, $context, 'qtype_gapselect', $filearea, $args, $forcedownload, $options);
+ }