Merge branch 'MDL-30021' of git://github.com/timhunt/moodle
authorAparup Banerjee <aparup@moodle.com>
Wed, 9 Nov 2011 04:19:20 +0000 (12:19 +0800)
committerAparup Banerjee <aparup@moodle.com>
Wed, 9 Nov 2011 04:19:20 +0000 (12:19 +0800)
1  2 
question/format/xml/format.php

@@@ -67,7 -67,7 +67,7 @@@ class qformat_xml extends qformat_defau
       * @param string name format name from xml file
       * @return int Moodle format code
       */
 -    protected function trans_format($name) {
 +    public function trans_format($name) {
          $name = trim($name);
  
          if ($name == 'moodle_auto_format') {
              }
          }
          $qo->unitgradingtype = $this->getpath($question, array('#', 'unitgradingtype', 0, '#'), 0);
-         $qo->unitpenalty = $this->getpath($question, array('#', 'unitpenalty', 0, '#'), 0);
-         $qo->showunits = $this->getpath($question, array('#', 'showunits', 0, '#'), 0);
+         $qo->unitpenalty = $this->getpath($question, array('#', 'unitpenalty', 0, '#'), 0.1);
+         $qo->showunits = $this->getpath($question, array('#', 'showunits', 0, '#'), null);
          $qo->unitsleft = $this->getpath($question, array('#', 'unitsleft', 0, '#'), 0);
          $qo->instructions['text'] = '';
          $qo->instructions['format'] = FORMAT_HTML;
                      $instructions, array('0', '#', 'file'), array()));
          }
  
+         if (is_null($qo->showunits)) {
+             // Set a good default, depending on whether there are any units defined.
+             if (empty($qo->unit)) {
+                 $qo->showunits = 3; // qtype_numerical::UNITNONE;
+             } else {
+                 $qo->showunits = 0; // qtype_numerical::UNITOPTIONAL;
+             }
+         }
          $this->import_hints($qo, $question, false, false, $this->get_format($qo->questiontextformat));
  
          return $qo;
  
          $qo->unitgradingtype = $this->getpath($question,
                  array('#', 'unitgradingtype', 0, '#'), 0);
-         $qo->unitpenalty = $this->getpath($question, array('#', 'unitpenalty', 0, '#'), 0);
+         $qo->unitpenalty = $this->getpath($question, array('#', 'unitpenalty', 0, '#'), null);
          $qo->showunits = $this->getpath($question, array('#', 'showunits', 0, '#'), 0);
          $qo->unitsleft = $this->getpath($question, array('#', 'unitsleft', 0, '#'), 0);
          $qo->instructions = $this->getpath($question,
              $qo->instructions['files'] = $this->import_files($this->getpath($instructions,
                      array('0', '#', 'file'), array()));
          }
+         if (is_null($qo->unitpenalty)) {
+             // Set a good default, depending on whether there are any units defined.
+             if (empty($qo->unit)) {
+                 $qo->showunits = 3; // qtype_numerical::UNITNONE;
+             } else {
+                 $qo->showunits = 0; // qtype_numerical::UNITOPTIONAL;
+             }
+         }
          $datasets = $question['#']['dataset_definitions'][0]['#']['dataset_definition'];
          $qo->dataset = array();
          $qo->datasetindex= 0;