Exemplo n.º 1
0
 /**
  * Get content of uploaded file.
  * @param $element name of file upload element
  * @return mixed false in case of failure, string if ok
  */
 function get_file_content($elname)
 {
     global $USER;
     if (!$this->is_submitted() or !$this->is_validated()) {
         return false;
     }
     $element = $this->_form->getElement($elname);
     if ($element instanceof MoodleQuickForm_filepicker) {
         $values = $this->_form->exportValues($elname);
         if (empty($values[$elname])) {
             return false;
         }
         $draftid = $values[$elname];
         $fs = get_file_storage();
         $context = get_context_instance(CONTEXT_USER, $USER->id);
         if (!($files = $fs->get_area_files($context->id, 'user_draft', $draftid, 'id DESC', false))) {
             return false;
         }
         $file = reset($files);
         return $file->get_content();
     } else {
         if (isset($_FILES[$elname])) {
             return file_get_contents($_FILES[$elname]['tmp_name']);
         }
     }
     return false;
 }
 /**
  * Add question-type specific form fields.
  *
  * @param MoodleQuickForm $mform the form being built.
  */
 function definition_inner(&$mform)
 {
     global $QTYPES;
     $this->qtypeobj =& $QTYPES[$this->qtype()];
     $label = get_string("sharedwildcards", "qtype_datasetdependent");
     $mform->addElement('hidden', 'initialcategory', 1);
     $html2 = $this->qtypeobj->print_dataset_definitions_category($this->question);
     $mform->insertElementBefore($mform->createElement('static', 'listcategory', $label, $html2), 'name');
     $addfieldsname = 'updatecategory';
     $addstring = get_string("updatecategory", "qtype_calculated");
     $mform->registerNoSubmitButton($addfieldsname);
     $mform->insertElementBefore($mform->createElement('submit', $addfieldsname, $addstring), 'listcategory');
     $repeated = array();
     $repeated[] =& $mform->createElement('header', 'answerhdr', get_string('answerhdr', 'qtype_calculated', '{no}'));
     $repeated[] =& $mform->createElement('text', 'answers', get_string('correctanswerformula', 'quiz') . '=', array('size' => 50));
     $repeatedoptions['answers']['type'] = PARAM_NOTAGS;
     $creategrades = get_grade_options();
     $gradeoptions = $creategrades->gradeoptions;
     $repeated[] =& $mform->createElement('select', 'fraction', get_string('grade'), $gradeoptions);
     $repeatedoptions['fraction']['default'] = 0;
     $repeated[] =& $mform->createElement('text', 'tolerance', get_string('tolerance', 'qtype_calculated'));
     $repeatedoptions['tolerance']['type'] = PARAM_NUMBER;
     $repeatedoptions['tolerance']['default'] = 0.01;
     $repeated[] =& $mform->createElement('select', 'tolerancetype', get_string('tolerancetype', 'quiz'), $this->qtypeobj->tolerance_types());
     $repeated[] =& $mform->createElement('select', 'correctanswerlength', get_string('correctanswershows', 'qtype_calculated'), range(0, 9));
     $repeatedoptions['correctanswerlength']['default'] = 2;
     $answerlengthformats = array('1' => get_string('decimalformat', 'quiz'), '2' => get_string('significantfiguresformat', 'quiz'));
     $repeated[] =& $mform->createElement('select', 'correctanswerformat', get_string('correctanswershowsformat', 'qtype_calculated'), $answerlengthformats);
     $repeated[] =& $mform->createElement('htmleditor', 'feedback', get_string('feedback', 'quiz'));
     $repeatedoptions['feedback']['type'] = PARAM_RAW;
     if (isset($this->question->options)) {
         $count = count($this->question->options->answers);
     } else {
         $count = 0;
     }
     $repeatsatstart = $count + 1;
     $this->repeat_elements($repeated, $repeatsatstart, $repeatedoptions, 'noanswers', 'addanswers', 1, get_string('addmoreanswerblanks', 'qtype_calculated'));
     $repeated = array();
     $repeated[] =& $mform->createElement('header', 'unithdr', get_string('unithdr', 'qtype_numerical', '{no}'));
     $repeated[] =& $mform->createElement('text', 'unit', get_string('unit', 'quiz'));
     $mform->setType('unit', PARAM_NOTAGS);
     $repeated[] =& $mform->createElement('text', 'multiplier', get_string('multiplier', 'quiz'));
     $mform->setType('multiplier', PARAM_NUMBER);
     if (isset($this->question->options)) {
         $countunits = count($this->question->options->units);
     } else {
         $countunits = 0;
     }
     $repeatsatstart = $countunits + 1;
     $this->repeat_elements($repeated, $repeatsatstart, array(), 'nounits', 'addunits', 2, get_string('addmoreunitblanks', 'qtype_calculated', '{no}'));
     $firstunit =& $mform->getElement('multiplier[0]');
     $firstunit->freeze();
     $firstunit->setValue('1.0');
     $firstunit->setPersistantFreeze(true);
     //hidden elements
     $mform->addElement('hidden', 'wizard', 'datasetdefinitions');
     $mform->setType('wizard', PARAM_ALPHA);
 }
Exemplo n.º 3
0
 /**
  * Add question-type specific form fields.
  *
  * @param MoodleQuickForm $mform the form being built.
  */
 function definition_inner(&$mform)
 {
     //------------------------------------------------------------------------------------------
     $creategrades = get_grade_options();
     $gradeoptions = $creategrades->gradeoptions;
     $repeated = array();
     $repeatedoptions = array();
     $repeated[] =& $mform->createElement('header', 'answerhdr', get_string('answerno', 'qtype_numerical', '{no}'));
     $repeated[] =& $mform->createElement('text', 'answer', get_string('answer', 'quiz'));
     $mform->setType('answer', PARAM_RAW);
     $repeated[] =& $mform->createElement('text', 'tolerance', get_string('acceptederror', 'quiz'));
     $mform->setType('tolerance', PARAM_NUMBER);
     $repeated[] =& $mform->createElement('select', 'fraction', get_string('grade'), $gradeoptions);
     $repeatedoptions['fraction']['default'] = 0;
     $repeated[] =& $mform->createElement('htmleditor', 'feedback', get_string('feedback', 'quiz'), array('course' => $this->coursefilesid));
     $mform->setType('feedback', PARAM_RAW);
     if (isset($this->question->options)) {
         $countanswers = count($this->question->options->answers);
     } else {
         $countanswers = 0;
     }
     if ($this->question->formoptions->repeatelements) {
         $repeatsatstart = QUESTION_NUMANS_START > $countanswers + 1 ? QUESTION_NUMANS_START : $countanswers + 1;
     } else {
         $repeatsatstart = $countanswers;
     }
     $this->repeat_elements($repeated, $repeatsatstart, $repeatedoptions, 'noanswers', 'addanswers', 2, get_string('addmoreanswerblanks', 'qtype_numerical'));
     //------------------------------------------------------------------------------------------
     $repeated = array();
     $repeated[] =& $mform->createElement('header', 'unithdr', get_string('unithdr', 'qtype_numerical', '{no}'));
     $repeated[] =& $mform->createElement('text', 'unit', get_string('unit', 'quiz'));
     $mform->setType('unit', PARAM_NOTAGS);
     $repeated[] =& $mform->createElement('text', 'multiplier', get_string('multiplier', 'quiz'));
     $mform->setType('multiplier', PARAM_NUMBER);
     if (isset($this->question->options)) {
         $countunits = count($this->question->options->units);
     } else {
         $countunits = 0;
     }
     if ($this->question->formoptions->repeatelements) {
         $repeatsatstart = $countunits + 2;
     } else {
         $repeatsatstart = $countunits;
     }
     $this->repeat_elements($repeated, $repeatsatstart, array(), 'nounits', 'addunits', 2, get_string('addmoreunitblanks', 'qtype_numerical'));
     $firstunit =& $mform->getElement('multiplier[0]');
     $firstunit->freeze();
     $firstunit->setValue('1.0');
     $firstunit->setPersistantFreeze(true);
 }