';
+ while (true) {
+ if ($apageid) {
+ $title = get_field("lesson_pages", "title", "id", $apageid);
+ $jump[$apageid] = strip_tags(format_string($title,true));
+ $apageid = get_field("lesson_pages", "nextpageid", "id", $apageid);
+ } else {
+ // last page reached
+ break;
+ }
+ }
+ }
+ $mform->addElement('hidden','id',$cm->id);
+ $mform->setType('id', PARAM_INT);
+ $mform->addElement('hidden','action','addpage');
+ $mform->setType('action', PARAM_TEXT);
+ $mform->addElement('hidden','pageid',$pageid);
+ $mform->setType('pageid', PARAM_INT);
+ $mform->addElement('hidden','qtype',$qtype);
+ $mform->setType('qtype', PARAM_INT);
+ if ($qtype == LESSON_SHORTANSWER || $qtype == LESSON_MULTICHOICE ) { // only display this option for Multichoice and shortanswer
if ($qtype == LESSON_SHORTANSWER) {
$qoptionstr = get_string('casesensitive', 'lesson');
} else {
$qoptionstr = get_string('multianswer', 'lesson');
}
- echo "";
- helpbutton("questionoption", get_string("questionoption", "lesson"), "lesson");
- echo '
';
- }
- ?>
-
-
-
- |
- ";
- echo get_string("pagecontents", "lesson").": \n";
- print_textarea($usehtmleditor, 25,70, 630, 400, "contents");
- use_html_editor("contents");
- echo " | \n";
- switch ($qtype) {
- case LESSON_TRUEFALSE :
- for ($i = 0; $i < 2; $i++) {
- $iplus1 = $i + 1;
- echo "".get_string("answer", "lesson")." $iplus1: \n";
- print_textarea(false, 6, 70, 630, 300, "answer[$i]");
- echo " |
\n";
- echo "".get_string("response", "lesson")." $iplus1: \n";
- print_textarea(false, 6, 70, 630, 300, "response[$i]");
- echo " |
\n";
- echo "".get_string("jump", "lesson")." $iplus1: \n";
- if ($i) {
- // answers 2, 3, 4... jumpto this page
- choose_from_menu($jump, "jumpto[$i]", 0, "");
- } else {
- // answer 1 jumpto next page
- choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, "");
- }
- helpbutton("jumpto", get_string("jump", "lesson"), "lesson");
- if($lesson->custom) {
+ $mform->addElement('checkbox','qoption',$qoptionstr);
+ $mform->setHelpButton('qoption', array('questionoption', get_string('questionoption','lesson'),'lesson'), true);
+ }
+ $mform->addElement('text','title',get_string("pagetitle", "lesson"),'maxlength="255" size="70"');
+ $mform->setType('title', PARAM_TEXT);
+ $mform->addElement('htmleditor','contents',get_string("pagecontents", "lesson"),array('rows'=>'20', 'cols'=>'65'));
+ $mform->setType('contents', PARAM_RAW);
+ switch ($qtype) {
+ case LESSON_TRUEFALSE :
+ for ($i = 0; $i < 2; $i++) {
+ $iplus1 = $i + 1;
+ $mform->addElement('textarea',"answer[$i]",get_string("answer", "lesson").$iplus1,array('rows'=>'6', 'cols'=>'60'));
+ $mform->setType("answer[$i]", PARAM_TEXT);
+ $mform->addElement('textarea',"response[$i]",get_string("response", "lesson").$iplus1,array('rows'=>'6', 'cols'=>'60'));
+ $mform->setType("response[$i]", PARAM_TEXT);
if ($i) {
- echo get_string("score", "lesson")." $iplus1: ";
+ // answers 2, 3, 4... jumpto this page
+ $mform->addElement('select',"jumpto[$i]",get_string("jump", "lesson")."$iplus1:",$jump);
+ $mform->setDefault("jumpto[$i]",'0');
} else {
- echo get_string("score", "lesson")." $iplus1: ";
+ // answer 1 jumpto next page
+ $mform->addElement('select',"jumpto[$i]",get_string("jump", "lesson")."$iplus1:",$jump);
+ $mform->setDefault("jumpto[$i]",LESSON_NEXTPAGE);
+ }
+ $mform->setHelpButton("jumpto[$i]", array('jumpto', get_string('jump','lesson'),'lesson'), true);
+ if($lesson->custom) {
+ if ($i) {
+ $mform->addElement('text',"score[$i]",get_string("score", "lesson")." $iplus1:",'size="5"');
+ $mform->setType("score[$i]", PARAM_TEXT);
+ $mform->setDefault("score[$i]",'0');
+ } else {
+ $mform->addElement('text',"score[$i]",get_string("score", "lesson")." $iplus1:",'size="5"');
+ $mform->setType("score[$i]", PARAM_TEXT);
+ $mform->setDefault("score[$i]",'1');
+ }
}
}
- echo " |
\n";
- }
- break;
- case LESSON_ESSAY :
- echo "".get_string("jump", "lesson").": \n";
- choose_from_menu($jump, "jumpto[0]", LESSON_NEXTPAGE, "");
- helpbutton("jumpto", get_string("jump", "lesson"), "lesson");
+ break;
+ case LESSON_ESSAY :
+ $mform->addElement('select',"jumpto[0]",get_string("jump", "lesson").":",$jump);
+ $mform->setDefault("jumpto[0]",LESSON_NEXTPAGE);
+ $mform->setHelpButton("jumpto[0]", array('jumpto', get_string('jump','lesson'),'lesson'), true);
if ($lesson->custom) {
- echo get_string("score", "lesson").": ";
+ $mform->addElement('text',"score[0]",get_string("score", "lesson"),'size="5"');
+ $mform->setType("score[0]", PARAM_TEXT);
+ $mform->setDefault("score[0]",'1');
}
- echo " |
\n";
- break;
- case LESSON_MATCHING :
- for ($i = 0; $i < $lesson->maxanswers+2; $i++) {
- $icorrected = $i - 1;
- if ($i == 0) {
- echo "".get_string("correctresponse", "lesson").": \n";
- print_textarea(false, 6, 70, 630, 300, "answer[$i]");
- echo " |
\n";
- } elseif ($i == 1) {
- echo "".get_string("wrongresponse", "lesson").": \n";
- print_textarea(false, 6, 70, 630, 300, "answer[$i]");
- echo " |
\n";
- } else {
- echo "".get_string("answer", "lesson")." $icorrected: \n";
- print_textarea(false, 6, 70, 630, 300, "answer[$i]");
- echo " |
\n";
- echo "".get_string("matchesanswer", "lesson")." $icorrected: \n";
- print_textarea(false, 6, 70, 630, 300, "response[$i]");
- echo " |
\n";
- }
- if ($i == 2) {
- echo "".get_string("correctanswerjump", "lesson").": \n";
- choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, "");
- helpbutton("jumpto", get_string("jump", "lesson"), "lesson");
- if($lesson->custom) {
- echo get_string("correctanswerscore", "lesson").": ";
+ break;
+ case LESSON_MATCHING :
+ for ($i = 0; $i < $lesson->maxanswers+2; $i++) {
+ $icorrected = $i - 1;
+ if ($i == 0) {
+ $mform->addElement('textarea',"answer[$i]",get_string("correctresponse", "lesson").":",array('rows'=>'6', 'cols'=>'60'));
+ $mform->setType("answer[$i]", PARAM_TEXT);
+ } elseif ($i == 1) {
+ $mform->addElement('textarea',"answer[$i]",get_string("wrongresponse", "lesson").":",array('rows'=>'6', 'cols'=>'60'));
+ $mform->setType("answer[$i]", PARAM_TEXT);
+ } else {
+ $mform->addElement('textarea',"answer[$i]",get_string("answer", "lesson")."$icorrected:",array('rows'=>'6', 'cols'=>'60'));
+ $mform->setType("answer[$i]", PARAM_TEXT);
+ $mform->addElement('textarea',"response[$i]",get_string("matchesanswer", "lesson")."$icorrected:",array('rows'=>'6', 'cols'=>'60'));
+ $mform->setType("response[$i]", PARAM_TEXT);
+ }
+ if ($i == 2) {
+ $mform->addElement('select',"jumpto[$i]",get_string("correctanswerjump", "lesson").":",$jump);
+ $mform->setDefault("jumpto[$i]",LESSON_NEXTPAGE);
+ $mform->setHelpButton("jumpto[$i]", array('jumpto', get_string('jump','lesson'),'lesson'), true);
+ if($lesson->custom) {
+ $mform->addElement('text',"score[$i]",get_string("correctanswerscore", "lesson"),'size="5"');
+ $mform->setType("score[$i]", PARAM_TEXT);
+ $mform->setDefault("score[$i]",'1');
+ }
+ } elseif ($i == 3) {
+ $mform->addElement('select',"jumpto[$i]",get_string("wronganswerjump", "lesson").":",$jump);
+ $mform->setDefault("jumpto[$i]",'0');
+ $mform->setHelpButton("jumpto[$i]", array('jumpto', get_string('jump','lesson'),'lesson'), true);
+ if($lesson->custom) {
+ $mform->addElement('text',"score[$i]",get_string("wronganswerscore", "lesson").":",'size="5"');
+ $mform->setType("score[$i]", PARAM_TEXT);
+ $mform->setDefault("score[$i]",'0');
+ }
+ }
+ }
+ break;
+ case LESSON_SHORTANSWER :
+ case LESSON_NUMERICAL :
+ case LESSON_MULTICHOICE :
+ // default code
+ for ($i = 0; $i < $lesson->maxanswers; $i++) {
+ $iplus1 = $i + 1;
+ $mform->addElement('textarea',"answer[$i]",get_string("answer", "lesson")."$iplus1:",array('rows'=>'6', 'cols'=>'60'));
+ $mform->setType("answer[$i]", PARAM_TEXT);
+ $mform->addElement('textarea',"response[$i]",get_string("response", "lesson")."$iplus1:",array('rows'=>'6', 'cols'=>'60'));
+ $mform->setType("response[$i]", PARAM_TEXT);
+ if ($i) {
+ // answers 2, 3, 4... jumpto this page
+ $mform->addElement('select',"jumpto[$i]",get_string("jump", "lesson")."$iplus1:",$jump);
+ $mform->setDefault("jumpto[$i]",'0');
+ } else {
+ // answer 1 jumpto next page
+ $mform->addElement('select',"jumpto[$i]",get_string("jump", "lesson")."$iplus1:",$jump);
+ $mform->setDefault("jumpto[$i]",LESSON_NEXTPAGE);
}
- echo " |
\n";
- } elseif ($i == 3) {
- echo "".get_string("wronganswerjump", "lesson").": \n";
- choose_from_menu($jump, "jumpto[$i]", 0, "");
- helpbutton("jumpto", get_string("jump", "lesson"), "lesson");
+ $mform->setHelpButton("jumpto[$i]", array('jumpto', get_string('jump','lesson'),'lesson'), true);
if($lesson->custom) {
- echo get_string("wronganswerscore", "lesson").": ";
+ if ($i) {
+ $mform->addElement('text',"score[$i]",get_string("score", "lesson")."$iplus1:",'size="5"');
+ $mform->setType("score[$i]", PARAM_TEXT);
+ $mform->setDefault("score[$i]",'0');
+ } else {
+ $mform->addElement('text',"score[$i]",get_string("score", "lesson")."$iplus1:",'size="5"');
+ $mform->setType("score[$i]", PARAM_TEXT);
+ $mform->setDefault("score[$i]",'1');
+ }
}
- echo " |
\n";
}
+ break;
+ }
+ $mform->addElement('submit','submit',get_string("addaquestionpage", "lesson"));
+ $mform->addElement('submit','cancel',get_string("cancel"));
+
+ }
+}
+$pageid = required_param('pageid', PARAM_INT);
+$qtype = optional_param('qtype', LESSON_MULTICHOICE, PARAM_INT);
+$firstpage = optional_param('firstpage', 0, PARAM_INT);
+if (!$firstpage) {
+ $linkadd = "";
+} else {
+ $linkadd = "&firstpage=1";
+}
+$maddform =new lesson_addnewpage_form('lesson.php',compact('pageid','qtype','lesson','pageid','cm', 'firstpage'));
+if(!$maddform->data_submitted()){
+
+}
+// check to see if the cancel button was pushed
+if (optional_param('cancel', '', PARAM_ALPHA)) {
+ redirect("$CFG->wwwroot/mod/lesson/edit.php?id=$cm->id");
+}
+$timenow = time();
+if ($data=$maddform->data_submitted()){
+ $newpage = new stdClass;
+ $newanswer = new stdClass;
+ if ($data->pageid) {
+ // the new page is not the first page
+ if (!$page = get_record("lesson_pages", "id", $data->pageid)) {
+ error("Insert page: page record not found");
+ }
+ $newpage->lessonid = $lesson->id;
+ $newpage->prevpageid = $data->pageid;
+ $newpage->nextpageid = $page->nextpageid;
+ $newpage->timecreated = $timenow;
+ $newpage->qtype = $data->qtype;
+ if (isset($data->qoption)) {
+ $newpage->qoption = $data->qoption;
+ } else {
+ $newpage->qoption = 0;
+ }
+ if (isset($data->layout)) {
+ $newpage->layout = $data->layout;
+ } else {
+ $newpage->layout = 0;
+ }
+ if (isset($data->display)) {
+ $newpage->display =$data->display;
+ } else {
+ $newpage->display = 0;
+ }
+ $newpage->title = $data->title;
+ $newpage->contents = trim($data->contents);
+ $newpage->title = addslashes($newpage->title);
+ $newpageid = insert_record("lesson_pages", $newpage);
+ if (!$newpageid) {
+ error("Insert page: new page not inserted");
+ }
+ // update the linked list (point the previous page to this new one)
+ if (!set_field("lesson_pages", "nextpageid", $newpageid, "id", $newpage->prevpageid)) {
+ error("Insert page: unable to update next link");
+ }
+ if ($page->nextpageid) {
+ // new page is not the last page
+ if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $page->nextpageid)) {
+ error("Insert page: unable to update previous link");
}
- break;
- case LESSON_SHORTANSWER :
- case LESSON_NUMERICAL :
- case LESSON_MULTICHOICE :
- // default code
- for ($i = 0; $i < $lesson->maxanswers; $i++) {
- $iplus1 = $i + 1;
- echo "".get_string("answer", "lesson")." $iplus1: \n";
- print_textarea(false, 6, 70, 630, 300, "answer[$i]");
- echo " |
\n";
- echo "".get_string("response", "lesson")." $iplus1: \n";
- print_textarea(false, 6, 70, 630, 300, "response[$i]");
- echo " |
\n";
- echo "".get_string("jump", "lesson")." $iplus1: \n";
- if ($i) {
- // answers 2, 3, 4... jumpto this page
- choose_from_menu($jump, "jumpto[$i]", 0, "");
- } else {
- // answer 1 jumpto next page
- choose_from_menu($jump, "jumpto[$i]", LESSON_NEXTPAGE, "");
+ }
+ } else {
+ // new page is the first page
+ // get the existing (first) page (if any)
+ if (!$page = get_record_select("lesson_pages", "lessonid = $lesson->id AND prevpageid = 0")) {
+ // there are no existing pages
+ $newpage->lessonid = $lesson->id;
+ $newpage->prevpageid = 0; // this is a first page
+ $newpage->nextpageid = 0; // this is the only page
+ $newpage->timecreated = $timenow;
+ $newpage->qtype = $data->qtype;
+ if (isset($data->qoption)) {
+ $newpage->qoption = $data->qoption;
+ } else {
+ $newpage->qoption = 0;
+ }
+ if (isset($data->layout)) {
+ $newpage->layout = $data->layout;
+ } else {
+ $newpage->layout = 0;
+ }
+ if (isset($data->display)) {
+ $newpage->display = $data->display;
+ } else {
+ $newpage->display = 0;
+ }
+ $newpage->title = $data->title;
+ $newpage->contents = trim($data->contents);
+ $newpage->title = addslashes($newpage->title);
+ $newpageid = insert_record("lesson_pages", $newpage);
+ if (!$newpageid) {
+ error("Insert page: new first page not inserted");
+ }
+ } else {
+ // there are existing pages put this at the start
+ $newpage->lessonid = $lesson->id;
+ $newpage->prevpageid = 0; // this is a first page
+ $newpage->nextpageid = $page->id;
+ $newpage->timecreated = $timenow;
+ $newpage->qtype = $data->qtype;
+ if (isset($data->qoption)) {
+ $newpage->qoption = $data->qoption;
+ } else {
+ $newpage->qoption = 0;
+ }
+ if (isset($data->layout)) {
+ $newpage->layout = $data->layout;
+ } else {
+ $newpage->layout = 0;
+ }
+ if (isset($data->display)) {
+ $newpage->display = $data->display;
+ } else {
+ $newpage->display = 0;
+ }
+ $newpage->title = $data->title;
+ $newpage->contents = trim($data->contents);
+ $newpage->title = addslashes($newpage->title);
+ $newpageid = insert_record("lesson_pages", $newpage);
+ if (!$newpageid) {
+ error("Insert page: first page not inserted");
+ }
+ // update the linked list
+ if (!set_field("lesson_pages", "prevpageid", $newpageid, "id", $newpage->nextpageid)) {
+ error("Insert page: unable to update link");
+ }
+ }
+ }
+
+ // now add the answers
+ if ($data->qtype == LESSON_ESSAY) {
+ $newanswer->lessonid = $lesson->id;
+ $newanswer->pageid = $newpageid;
+ $newanswer->timecreated = $timenow;
+ if (isset($data->jumpto[0])) {
+ $newanswer->jumpto = $data->jumpto[0];
+ }
+ if (isset($data->score[0])) {
+ $newanswer->score = $data->score[0];
+ }
+ $newanswerid = insert_record("lesson_answers", $newanswer);
+ if (!$newanswerid) {
+ error("Insert Page: answer record not inserted");
+ }
+ } else {
+ if ($data->qtype == LESSON_MATCHING) {
+ // need to add two to offset correct response and wrong response
+ $lesson->maxanswers = $lesson->maxanswers + 2;
+ }
+ for ($i = 0; $i < $lesson->maxanswers; $i++) {
+ if (!empty($data->answer[$i]) and trim(strip_tags($data->answer[$i]))) { // strip_tags because the HTML editor adds ...
+ $newanswer->lessonid = $lesson->id;
+ $newanswer->pageid = $newpageid;
+ $newanswer->timecreated = $timenow;
+ $newanswer->answer = trim($data->answer[$i]);
+ if (isset($data->response[$i])) {
+ $newanswer->response = trim($data->response[$i]);
}
- helpbutton("jumpto", get_string("jump", "lesson"), "lesson");
- if($lesson->custom) {
- if ($i) {
- echo get_string("score", "lesson")." $iplus1: ";
- } else {
- echo get_string("score", "lesson")." $iplus1: ";
+ if (isset($data->jumpto[$i])) {
+ $newanswer->jumpto = $data->jumpto[$i];
+ }
+ if ($lesson->custom) {
+ if (isset($data->score[$i])) {
+ $newanswer->score = $data->score[$i];
+ }
+ }
+ $newanswerid = insert_record("lesson_answers", $newanswer);
+ if (!$newanswerid) {
+ error("Insert Page: answer record $i not inserted");
+ }
+ } else {
+ if ($data->qtype == LESSON_MATCHING) {
+ if ($i < 2) {
+ $newanswer->lessonid = $lesson->id;
+ $newanswer->pageid = $newpageid;
+ $newanswer->timecreated = $timenow;
+ $newanswerid = insert_record("lesson_answers", $newanswer);
+ if (!$newanswerid) {
+ error("Insert Page: answer record $i not inserted");
+ }
}
+ } else {
+ break;
}
- echo "
|
\n";
}
- break;
+ }
}
- // close table and form
- ?>
-