From 79bb7202001a96f8f31a60a249dd18cb65a9d2c9 Mon Sep 17 00:00:00 2001 From: jamiesensei Date: Fri, 17 Aug 2007 01:06:02 +0000 Subject: [PATCH] Fixed MDL-10855 'Calculated question error: undefined stdClass::$nextpageparam' and some other calculated question bugs. --- question/question.php | 25 +++++++++++-------- .../type/calculated/edit_calculated_form.php | 21 ++++++++++------ .../datasetdefinitions_form.php | 19 ++++++-------- .../datasetdependent/datasetitems_form.php | 18 +++++-------- 4 files changed, 41 insertions(+), 42 deletions(-) diff --git a/question/question.php b/question/question.php index 2fada32f1d..bf31bebb08 100644 --- a/question/question.php +++ b/question/question.php @@ -25,6 +25,8 @@ $movecontext = optional_param('movecontext', 0, PARAM_BOOL);//switch to make qu //uneditable - form is displayed to edit category only $returnurl = optional_param('returnurl', 0, PARAM_LOCALURL); +$inpopup = optional_param('inpopup', 0, PARAM_BOOL); + if ($movecontext && !$id){ print_error('questiondoesnotexist', 'question', $returnurl); } @@ -174,26 +176,27 @@ if ($mform->is_cancelled()){ } $question = $QTYPES[$question->qtype]->save_question($question, $fromform, $COURSE, $wizardnow); - if ($QTYPES[$qtype]->finished_edit_wizard($fromform) || $movecontext){ - - if (optional_param('inpopup', 0, PARAM_BOOL)) { + if (($QTYPES[$question->qtype]->finished_edit_wizard($fromform)) || $movecontext){ + if ($inpopup) { notify(get_string('changessaved'), ''); close_window(3); } else { redirect($returnurl); } } else { - $nexturlparams = array('returnurl'=>$returnurl) - + $fromform->nextpageparam;//useful for passing data to the next page which is not saved in the database - if ($question->id) { - $nexturlparams['id'] = $question->id; - } else { // only for creating new questions - $nexturlparams['category'] = $question->category; - $nexturlparams['qtype'] =$question->qtype; + $nexturlparams = array('returnurl'=>$returnurl); + if (isset($fromform->nextpageparam) && is_array($fromform->nextpageparam)){ + $nexturlparams += $fromform->nextpageparam;//useful for passing data to the next page which is not saved in the database } + $nexturlparams['id'] = $question->id; $nexturlparams['wizardnow'] = $fromform->wizard; $nexturl = new moodle_url('question.php', $nexturlparams); - redirect($nexturl); + if ($cmid){ + $nexturl->param('cmid', $cmid); + } else { + $nexturl->param('courseid', $COURSE->id); + } + redirect($nexturl->out()); } } else { diff --git a/question/type/calculated/edit_calculated_form.php b/question/type/calculated/edit_calculated_form.php index 30c2c3a1cc..880603a82a 100644 --- a/question/type/calculated/edit_calculated_form.php +++ b/question/type/calculated/edit_calculated_form.php @@ -96,11 +96,12 @@ class question_edit_calculated_form extends question_edit_form { } $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); - + if ($mform->elementExists('multiplier[0]')){ + $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); @@ -149,15 +150,19 @@ class question_edit_calculated_form extends question_edit_form { $qu = new stdClass; $el = new stdClass; /* no need to call elementExists() here */ - $el=$this->_form->getElement('category'); + if ($this->_form->elementExists('category')){ + $el=$this->_form->getElement('category'); + } else { + $el=$this->_form->getElement('categorymoveto'); + } if($value =$el->getSelected()) { $qu->category =$value[0]; }else { $qu->category=$question->category;// on load $question->category is set by question.php } $html2 = $this->qtypeobj->print_dataset_definitions_category($qu); - $this->_form->_elements[$this->_form->_elementIndex['listcategory']]->_text = $html2 ; - $question = (object)((array)$question + $default_values); + $this->_form->_elements[$this->_form->_elementIndex['listcategory']]->_text = $html2 ; + $question = (object)((array)$question + $default_values); parent::set_data($question); } diff --git a/question/type/datasetdependent/datasetdefinitions_form.php b/question/type/datasetdependent/datasetdefinitions_form.php index d6ae8c72a3..923e0c4642 100644 --- a/question/type/datasetdependent/datasetdefinitions_form.php +++ b/question/type/datasetdependent/datasetdefinitions_form.php @@ -51,7 +51,7 @@ class question_dataset_dependent_definitions_form extends moodleform { $datadefscat = $this->qtypeobj->get_dataset_definitions_category($this->question); $datasetmenus = array(); $label = "
".get_string('datasetrole', 'qtype_datasetdependent','numerical')."
"; - $mform->addElement('html', $label);// explaining the role of datasets so other strings can be shortened + $mform->addElement('html', $label);// explaining the role of datasets so other strings can be shortened $mform->addElement('header', 'mandatoryhdr', get_string('mandatoryhdr', $stringfile)); $labelsharedwildcard = get_string("sharedwildcard", "qtype_datasetdependent"); @@ -71,7 +71,7 @@ class question_dataset_dependent_definitions_form extends moodleform { } } $mform->addElement('header', 'possiblehdr', get_string('possiblehdr', $stringfile)); - + foreach ($possibledatasets as $datasetname) { if (!isset($datasetmenus[$datasetname])) { @@ -83,8 +83,8 @@ class question_dataset_dependent_definitions_form extends moodleform { if (isset($datadefscat[$datasetname])){ $mform->addElement('static', "there is a category", $labelsharedwildcard." $datasetname ", get_string('dataitemdefined',"qtype_datasetdependent", $datadefscat[$datasetname])); } - - // $selected ="0"; + + // $selected ="0"; $mform->setDefault("dataset[$key]", $selected); $datasetmenus[$datasetname]=''; $key++; @@ -96,20 +96,17 @@ class question_dataset_dependent_definitions_form extends moodleform { //hidden elements $mform->addElement('hidden', 'returnurl'); $mform->setType('returnurl', PARAM_URL); - $mform->addElement('hidden', 'qtype'); - $mform->setType('qtype', PARAM_ALPHA); - $mform->addElement('hidden', 'category'); - $mform->setType('category', PARAM_INT); $mform->addElement('hidden', 'id'); - + $mform->setType('id', PARAM_INT); + $mform->addElement('hidden', 'courseid'); $mform->setType('courseid', PARAM_INT); $mform->setDefault('courseid', 0); - + $mform->addElement('hidden', 'cmid'); $mform->setType('cmid', PARAM_INT); $mform->setDefault('cmid', 0); - + $mform->setType('id', PARAM_INT); $mform->addElement('hidden', 'wizard', 'datasetitems'); $mform->setType('wizard', PARAM_ALPHA); diff --git a/question/type/datasetdependent/datasetitems_form.php b/question/type/datasetdependent/datasetitems_form.php index c9defa801e..4f0210bcd1 100644 --- a/question/type/datasetdependent/datasetitems_form.php +++ b/question/type/datasetdependent/datasetitems_form.php @@ -87,7 +87,7 @@ class question_dataset_dependent_items_form extends moodleform { } $addremoveoptions = Array(); $addremoveoptions['1']='1'; - for ($i=10; $i<=100 ; $i+=10){ + for ($i=10; $i<=100 ; $i+=10){ $addremoveoptions["$i"]="$i"; } $mform->addElement('header', 'additemhdr', get_string('add', 'moodle')); @@ -150,23 +150,17 @@ class question_dataset_dependent_items_form extends moodleform { $mform->closeHeaderBefore('backtoquiz'); //hidden elements - $mform->addElement('hidden', 'returnurl'); - $mform->setType('returnurl', PARAM_URL); - $mform->addElement('hidden', 'qtype'); - $mform->setType('qtype', PARAM_ALPHA); - $mform->addElement('hidden', 'category'); - $mform->setType('category', PARAM_INT); - + $mform->addElement('hidden', 'id'); + $mform->setType('id', PARAM_INT); + $mform->addElement('hidden', 'courseid'); $mform->setType('courseid', PARAM_INT); $mform->setDefault('courseid', 0); - + $mform->addElement('hidden', 'cmid'); $mform->setType('cmid', PARAM_INT); $mform->setDefault('cmid', 0); - - $mform->addElement('hidden', 'id'); - $mform->setType('id', PARAM_INT); + $mform->addElement('hidden', 'wizard', 'datasetitems'); $mform->setType('wizard', PARAM_ALPHA); } -- 2.39.5