00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 require_once "./assessment/classes/class.assQuestion.php";
00025
00037 class ASS_QuestionGUI
00038 {
00046 var $object;
00047
00048 var $tpl;
00049 var $lng;
00050 var $error;
00051
00059 function ASS_QuestionGUI()
00060 {
00061 global $lng, $tpl, $ilCtrl;
00062
00063
00064 $this->lng =& $lng;
00065 $this->tpl =& $tpl;
00066 $this->ctrl =& $ilCtrl;
00067 $this->ctrl->saveParameter($this, "q_id");
00068
00069 $this->object = new ASS_Question();
00070 }
00071
00075 function &executeCommand()
00076 {
00077 $cmd = $this->ctrl->getCmd("editQuestion");
00078 $next_class = $this->ctrl->getNextClass($this);
00079
00080 $cmd = $this->getCommand($cmd);
00081
00082 switch($next_class)
00083 {
00084 default:
00085 $ret =& $this->$cmd();
00086 break;
00087 }
00088 return $ret;
00089 }
00090
00091 function getCommand($cmd)
00092 {
00093 return $cmd;
00094 }
00095
00096
00105 function getQuestionType()
00106 {
00107 return "";
00108 }
00109
00113 function getType()
00114 {
00115 return $this->getQuestionType();
00116 }
00117
00125 function outOtherQuestionData()
00126 {
00127 }
00128
00137 function writePostData()
00138 {
00139 }
00140
00148 function outWorkingForm($test_id = "", $is_postponed = false)
00149 {
00150 }
00151
00155 function assessment()
00156 {
00157 $this->tpl->addBlockFile("CONTENT", "content", "tpl.il_as_qpl_content.html", true);
00158 $this->tpl->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html");
00159
00160
00161 sendInfo();
00162
00163
00164
00165 $title = $this->lng->txt("qpl_assessment_of_questions");
00166 if (!empty($title))
00167 {
00168 $this->tpl->setVariable("HEADER", $title);
00169 }
00170
00171 $total_of_answers = $this->object->getTotalAnswers();
00172 $counter = 0;
00173 $color_class = array("tblrow1", "tblrow2");
00174 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_qpl_assessment_of_questions.html", true);
00175 if (!$total_of_answers)
00176 {
00177 $this->tpl->setCurrentBlock("emptyrow");
00178 $this->tpl->setVariable("TXT_NO_ASSESSMENT", $this->lng->txt("qpl_assessment_no_assessment_of_questions"));
00179 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
00180 $this->tpl->parseCurrentBlock();
00181 }
00182 else
00183 {
00184 $this->tpl->setCurrentBlock("row");
00185 $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("qpl_assessment_total_of_answers"));
00186 $this->tpl->setVariable("TXT_VALUE", $total_of_answers);
00187 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
00188 $counter++;
00189 $this->tpl->parseCurrentBlock();
00190 $this->tpl->setCurrentBlock("row");
00191 $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("qpl_assessment_total_of_right_answers"));
00192 $this->tpl->setVariable("TXT_VALUE", sprintf("%2.2f", $this->object->_getTotalRightAnswers($_GET["q_id"]) * 100.0) . " %");
00193 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
00194 $this->tpl->parseCurrentBlock();
00195 }
00196 $this->tpl->setCurrentBlock("adm_content");
00197 $this->tpl->setVariable("TXT_QUESTION_TITLE", $this->object->getTitle());
00198 $this->tpl->setVariable("TXT_RESULT", $this->lng->txt("result"));
00199 $this->tpl->setVariable("TXT_VALUE", $this->lng->txt("value"));
00200 $this->tpl->parseCurrentBlock();
00201 }
00202
00203
00212 function writeOtherPostData($result = 0)
00213 {
00214 $this->object->setEstimatedWorkingTime(
00215 ilUtil::stripSlashes($_POST["Estimated"][h]),
00216 ilUtil::stripSlashes($_POST["Estimated"][m]),
00217 ilUtil::stripSlashes($_POST["Estimated"][s])
00218 );
00219
00220 $saved = false;
00221 return $saved;
00222 }
00223
00235 function &_getQuestionGUI($question_type, $question_id = -1)
00236 {
00237 if ((!$question_type) and ($question_id > 0))
00238 {
00239 $question_type = ASS_Question::getQuestionTypeFromDb($question_id);
00240
00241 }
00242 switch ($question_type)
00243 {
00244 case "qt_multiple_choice_sr":
00245 $question =& new ASS_MultipleChoiceGUI();
00246 $question->object->set_response(RESPONSE_SINGLE);
00247 break;
00248
00249 case "qt_multiple_choice_mr":
00250 $question =& new ASS_MultipleChoiceGUI();
00251 $question->object->set_response(RESPONSE_MULTIPLE);
00252 break;
00253
00254 case "qt_cloze":
00255 $question =& new ASS_ClozeTestGUI();
00256 break;
00257
00258 case "qt_matching":
00259 $question =& new ASS_MatchingQuestionGUI();
00260 break;
00261
00262 case "qt_ordering":
00263 $question =& new ASS_OrderingQuestionGUI();
00264 break;
00265
00266 case "qt_imagemap":
00267 $question =& new ASS_ImagemapQuestionGUI();
00268 break;
00269
00270 case "qt_javaapplet":
00271 $question =& new ASS_JavaAppletGUI();
00272 break;
00273 case "qt_text":
00274 $question =& new ASS_TextQuestionGUI();
00275 break;
00276 }
00277 if ($question_id > 0)
00278 {
00279 $question->object->loadFromDb($question_id);
00280 }
00281
00282 return $question;
00283 }
00284
00285 function _getGUIClassNameForId($a_q_id)
00286 {
00287 $q_type = ASS_Question::getQuestionTypeFromDb($a_q_id);
00288 $class_name = ASS_QuestionGUI::_getClassNameForQType($q_type);
00289 return $class_name;
00290 }
00291
00292 function _getClassNameForQType($q_type)
00293 {
00294 switch ($q_type)
00295 {
00296 case "qt_multiple_choice_sr":
00297 return "ASS_MultipleChoiceGUI";
00298 break;
00299
00300 case "qt_multiple_choice_mr":
00301 return "ASS_MultipleChoiceGUI";
00302 break;
00303
00304 case "qt_cloze":
00305 return "ASS_ClozeTestGUI";
00306 break;
00307
00308 case "qt_matching":
00309 return "ASS_MatchingQuestionGUI";
00310 break;
00311
00312 case "qt_ordering":
00313 return "ASS_OrderingQuestionGUI";
00314 break;
00315
00316 case "qt_imagemap":
00317 return "ASS_ImagemapQuestionGUI";
00318 break;
00319
00320 case "qt_javaapplet":
00321 return "ASS_JavaAppletGUI";
00322 break;
00323
00324 case "qt_text":
00325 return "ASS_TextQuestionGUI";
00326 break;
00327 }
00328
00329 }
00330
00341 function &createQuestionGUI($question_type, $question_id = -1)
00342 {
00343 $this->question =& ASS_QuestionGUI::_getQuestionGUI($question_type, $question_id);
00344 }
00345
00349 function getQuestionTemplate($q_type)
00350 {
00351 $this->tpl->addBlockFile("CONTENT", "content", "tpl.il_as_qpl_content.html", true);
00352 $this->tpl->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html");
00353
00354 if ($this->object->id > 0)
00355 {
00356 $title = $this->lng->txt("edit") . " " . $this->lng->txt($q_type);
00357 }
00358 else
00359 {
00360 $title = $this->lng->txt("create_new") . " " . $this->lng->txt($q_type);
00361 $this->tpl->setVariable("HEADER", $title);
00362 }
00363 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_question.html", true);
00364 }
00365
00369 function outQuestionPage($a_temp_var, $a_postponed = false, $test_id = "")
00370 {
00371 $postponed = "";
00372 if ($a_postponed)
00373 {
00374 $postponed = " (" . $this->lng->txt("postponed") . ")";
00375 }
00376
00377 include_once("content/classes/Pages/class.ilPageObjectGUI.php");
00378 $this->lng->loadLanguageModule("content");
00379 $page =& new ilPageObject("qpl", $this->object->getId());
00380 $page_gui =& new ilPageObjectGUI($page);
00381 $page_gui->setQuestionXML($this->object->to_xml(false, false, true, $test_id));
00382 $page_gui->setTemplateTargetVar($a_temp_var);
00383 $page_gui->setFileDownloadLink("test.php?cmd=downloadFile".
00384 "&ref_id=".$_GET["ref_id"]);
00385 $page_gui->setFullscreenLink("test.php?cmd=fullscreen".
00386 "&ref_id=".$_GET["ref_id"]);
00387 $page_gui->setSourcecodeDownloadScript("test.php?ref_id=".$_GET["ref_id"]);
00388 $page_gui->setOutputMode("presentation");
00389
00390 $page_gui->setPresentationTitle($this->object->getTitle().$postponed);
00391 return $page_gui->presentation();
00392 }
00393
00397 function cancel()
00398 {
00399 if ($_GET["calling_test"])
00400 {
00401 $_GET["ref_id"] = $_GET["calling_test"];
00402 ilUtil::redirect("test.php?cmd=questions&ref_id=".$_GET["calling_test"]);
00403 }
00404 elseif ($_GET["test_ref_id"])
00405 {
00406 $_GET["ref_id"] = $_GET["test_ref_id"];
00407 ilUtil::redirect("test.php?cmd=questions&ref_id=".$_GET["test_ref_id"]);
00408 }
00409 else
00410 {
00411 if ($_GET["q_id"] > 0)
00412 {
00413 $this->ctrl->setParameterByClass("ilpageobjectgui", "q_id", $_GET["q_id"]);
00414 $this->ctrl->redirectByClass("ilpageobjectgui", "view");
00415 }
00416 else
00417 {
00418 $this->ctrl->redirectByClass("ilobjquestionpoolgui", "questions");
00419 }
00420 }
00421 }
00422
00423 function originalSyncForm()
00424 {
00425 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_tst_sync_original.html", true);
00426 $this->tpl->setCurrentBlock("adm_content");
00427 $this->tpl->setVariable("BUTTON_YES", $this->lng->txt("yes"));
00428 $this->tpl->setVariable("BUTTON_NO", $this->lng->txt("no"));
00429 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
00430 $this->tpl->setVariable("TEXT_SYNC", $this->lng->txt("confirm_sync_questions"));
00431 $this->tpl->parseCurrentBlock();
00432 }
00433
00434 function sync()
00435 {
00436 $original_id = $this->object->original_id;
00437 if ($original_id)
00438 {
00439 $this->object->syncWithOriginal();
00440 }
00441 $_GET["ref_id"] = $_GET["calling_test"];
00442 ilUtil::redirect("test.php?cmd=questions&ref_id=".$_GET["calling_test"]);
00443 }
00444
00445 function cancelSync()
00446 {
00447 $_GET["ref_id"] = $_GET["calling_test"];
00448 ilUtil::redirect("test.php?cmd=questions&ref_id=".$_GET["calling_test"]);
00449 }
00450
00454 function saveEdit()
00455 {
00456 $result = $this->writePostData();
00457 if ($result == 0)
00458 {
00459 $this->object->saveToDb();
00460 $originalexists = $this->object->_questionExists($this->object->original_id);
00461 if ($_GET["calling_test"] && $originalexists)
00462 {
00463 $this->originalSyncForm();
00464 }
00465 elseif ($_GET["calling_test"] && !$originalexists)
00466 {
00467 $_GET["ref_id"] = $_GET["calling_test"];
00468 ilUtil::redirect("test.php?cmd=questions&ref_id=".$_GET["calling_test"]);
00469 return;
00470 }
00471 elseif ($_GET["test_ref_id"])
00472 {
00473 require_once ("assessment/classes/class.ilObjTest.php");
00474 $_GET["ref_id"] = $_GET["test_ref_id"];
00475 $test =& new ilObjTest($_GET["test_ref_id"], true);
00476 $test->insertQuestion($this->object->getId());
00477 ilUtil::redirect("test.php?cmd=questions&ref_id=".$_GET["test_ref_id"]);
00478 }
00479 else
00480 {
00481 $_GET["q_id"] = $this->object->getId();
00482 $this->editQuestion();
00483 if (strcmp($_SESSION["info"], "") != 0)
00484 {
00485 sendInfo($_SESSION["info"] . "<br />" . $this->lng->txt("msg_obj_modified"), false);
00486 }
00487 else
00488 {
00489 sendInfo($this->lng->txt("msg_obj_modified"), false);
00490 }
00491 $this->ctrl->setParameterByClass("ilpageobjectgui", "q_id", $this->object->getId());
00492 $this->ctrl->redirectByClass("ilpageobjectgui", "view");
00493 }
00494 }
00495 else
00496 {
00497 sendInfo($this->lng->txt("fill_out_all_required_fields"));
00498 $this->editQuestion();
00499 }
00500 }
00501
00505 function save()
00506 {
00507 $old_id = $_GET["q_id"];
00508 $result = $this->writePostData();
00509 if ($result == 0)
00510 {
00511 $this->object->saveToDb();
00512 $originalexists = $this->object->_questionExists($this->object->original_id);
00513 if ($_GET["calling_test"] && $originalexists)
00514 {
00515 $this->originalSyncForm();
00516 }
00517 elseif ($_GET["calling_test"] && !$originalexists)
00518 {
00519 $_GET["ref_id"] = $_GET["calling_test"];
00520 ilUtil::redirect("test.php?cmd=questions&ref_id=".$_GET["calling_test"]);
00521 return;
00522 }
00523 elseif ($_GET["test_ref_id"])
00524 {
00525 require_once ("assessment/classes/class.ilObjTest.php");
00526 $_GET["ref_id"] = $_GET["test_ref_id"];
00527 $test =& new ilObjTest($_GET["test_ref_id"], true);
00528 $test->insertQuestion($this->object->getId());
00529 ilUtil::redirect("test.php?cmd=questions&ref_id=".$_GET["test_ref_id"]);
00530 }
00531 else
00532 {
00533 $_GET["q_id"] = $this->object->getId();
00534 if ($_GET["q_id"] != $old_id)
00535 {
00536
00537 $this->ctrl->setParameterByClass($_GET["cmdClass"], "q_id", $this->object->getId());
00538 $this->ctrl->setParameterByClass($_GET["cmdClass"], "sel_question_types", $_GET["sel_question_types"]);
00539 $this->ctrl->redirectByClass($_GET["cmdClass"], "editQuestion");
00540 }
00541 $this->editQuestion();
00542 if (strcmp($_SESSION["info"], "") != 0)
00543 {
00544 sendInfo($_SESSION["info"] . "<br />" . $this->lng->txt("msg_obj_modified"), false);
00545 }
00546 else
00547 {
00548 sendInfo($this->lng->txt("msg_obj_modified"), false);
00549 }
00550
00551
00552 }
00553 }
00554 else
00555 {
00556 sendInfo($this->lng->txt("fill_out_all_required_fields"));
00557 $this->editQuestion();
00558 }
00559 }
00560
00564 function apply()
00565 {
00566 $this->writePostData();
00567 $this->object->saveToDb();
00568 $_GET["q_id"] = $this->object->getId();
00569 $this->editQuestion();
00570 }
00571
00572 function cancelExplorer()
00573 {
00574 unset($_SESSION["subquestion_index"]);
00575 unset($_SESSION["link_new_type"]);
00576 $this->editQuestion();
00577 }
00578
00579 function addSuggestedSolution()
00580 {
00581 global $tree;
00582
00583 require_once("./assessment/classes/class.ilSolutionExplorer.php");
00584 switch ($_POST["internalLinkType"])
00585 {
00586 case "lm":
00587 $_SESSION["link_new_type"] = "lm";
00588 $_SESSION["search_link_type"] = "lm";
00589 break;
00590 case "glo":
00591 $_SESSION["link_new_type"] = "glo";
00592 $_SESSION["search_link_type"] = "glo";
00593 break;
00594 case "st":
00595 $_SESSION["link_new_type"] = "lm";
00596 $_SESSION["search_link_type"] = "st";
00597 break;
00598 case "pg":
00599 $_SESSION["link_new_type"] = "lm";
00600 $_SESSION["search_link_type"] = "pg";
00601 break;
00602 default:
00603 if (!$_SESSION["link_new_type"])
00604 {
00605 $_SESSION["link_new_type"] = "lm";
00606 }
00607 break;
00608 }
00609
00610 sendInfo($this->lng->txt("select_object_to_link"));
00611
00612 $exp = new ilSolutionExplorer($this->ctrl->getLinkTarget($this,'addSuggestedSolution'), get_class($this));
00613
00614 $exp->setExpand($_GET["expand"] ? $_GET["expand"] : $tree->readRootId());
00615 $exp->setExpandTarget($this->ctrl->getLinkTarget($this,'addSuggestedSolution'));
00616 $exp->setTargetGet("ref_id");
00617 $exp->setRefId($this->cur_ref_id);
00618 $exp->addFilter($_SESSION["link_new_type"]);
00619 $exp->setSelectableType($_SESSION["link_new_type"]);
00620
00621
00622 $exp->setOutput(0);
00623
00624 $this->tpl->addBlockFile("EXPLORER", "explorer", "tpl.il_as_qpl_explorer.html", true);
00625 $this->tpl->setVariable("EXPLORER_TREE",$exp->getOutput());
00626 $this->tpl->setVariable("BUTTON_CANCEL",$this->lng->txt("cancel"));
00627 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00628 $this->tpl->parseCurrentBlock();
00629 }
00630
00631 function removeSuggestedSolution()
00632 {
00633 $this->object->suggested_solutions = array();
00634 $this->object->saveToDb();
00635 $this->editQuestion();
00636 }
00637
00638 function addPG()
00639 {
00640 $subquestion_index = 0;
00641 if ($_SESSION["subquestion_index"] >= 0)
00642 {
00643 $subquestion_index = $_SESSION["subquestion_index"];
00644 }
00645 $this->object->setSuggestedSolution("il__pg_" . $_GET["pg"], $subquestion_index);
00646 unset($_SESSION["subquestion_index"]);
00647 unset($_SESSION["link_new_type"]);
00648 unset($_SESSION["search_link_type"]);
00649 sendInfo($this->lng->txt("suggested_solution_added_successfully"));
00650 $this->editQuestion();
00651 }
00652
00653 function addST()
00654 {
00655 $subquestion_index = 0;
00656 if ($_SESSION["subquestion_index"] >= 0)
00657 {
00658 $subquestion_index = $_SESSION["subquestion_index"];
00659 }
00660 $this->object->setSuggestedSolution("il__st_" . $_GET["st"], $subquestion_index);
00661 unset($_SESSION["subquestion_index"]);
00662 unset($_SESSION["link_new_type"]);
00663 unset($_SESSION["search_link_type"]);
00664 sendInfo($this->lng->txt("suggested_solution_added_successfully"));
00665 $this->editQuestion();
00666 }
00667
00668 function addGIT()
00669 {
00670 $subquestion_index = 0;
00671 if ($_SESSION["subquestion_index"] >= 0)
00672 {
00673 $subquestion_index = $_SESSION["subquestion_index"];
00674 }
00675 $this->object->setSuggestedSolution("il__git_" . $_GET["git"], $subquestion_index);
00676 unset($_SESSION["subquestion_index"]);
00677 unset($_SESSION["link_new_type"]);
00678 unset($_SESSION["search_link_type"]);
00679 sendInfo($this->lng->txt("suggested_solution_added_successfully"));
00680 $this->editQuestion();
00681 }
00682
00683 function linkChilds()
00684 {
00685 switch ($_SESSION["search_link_type"])
00686 {
00687 case "pg":
00688 case "st":
00689 $_GET["q_id"] = $this->object->getId();
00690 $this->tpl->setVariable("HEADER", $this->object->getTitle());
00691 $this->getQuestionTemplate($_GET["sel_question_types"]);
00692 $color_class = array("tblrow1", "tblrow2");
00693 $counter = 0;
00694 require_once("./content/classes/class.ilObjContentObject.php");
00695 $cont_obj =& new ilObjContentObject($_GET["source_id"], true);
00696
00697 $ctree =& $cont_obj->getLMTree();
00698 $nodes = $ctree->getSubtree($ctree->getNodeData($ctree->getRootId()));
00699 $this->tpl->addBlockFile("LINK_SELECTION", "link_selection", "tpl.il_as_qpl_internallink_selection.html", true);
00700 foreach($nodes as $node)
00701 {
00702 if($node["type"] == $_SESSION["search_link_type"])
00703 {
00704 $this->tpl->setCurrentBlock("linktable_row");
00705 $this->tpl->setVariable("TEXT_LINK", $node["title"]);
00706 $this->tpl->setVariable("TEXT_ADD", $this->lng->txt("add"));
00707 $this->tpl->setVariable("LINK_HREF", $this->ctrl->getLinkTargetByClass(get_class($this), "add" . strtoupper($node["type"])) . "&" . $node["type"] . "=" . $node["obj_id"]);
00708 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
00709 $this->tpl->parseCurrentBlock();
00710 $counter++;
00711 }
00712 }
00713 $this->tpl->setCurrentBlock("link_selection");
00714 $this->tpl->setVariable("BUTTON_CANCEL",$this->lng->txt("cancel"));
00715 $this->tpl->setVariable("TEXT_LINK_TYPE", $this->lng->txt("obj_" . $_SESSION["search_link_type"]));
00716 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00717 $this->tpl->parseCurrentBlock();
00718 break;
00719 case "glo":
00720 $_GET["q_id"] = $this->object->getId();
00721 $this->tpl->setVariable("HEADER", $this->object->getTitle());
00722 $this->getQuestionTemplate($_GET["sel_question_types"]);
00723 $color_class = array("tblrow1", "tblrow2");
00724 $counter = 0;
00725 $this->tpl->addBlockFile("LINK_SELECTION", "link_selection", "tpl.il_as_qpl_internallink_selection.html", true);
00726 require_once "./content/classes/class.ilObjGlossary.php";
00727 $glossary =& new ilObjGlossary($_GET["source_id"], true);
00728
00729 $terms = $glossary->getTermList();
00730 foreach($terms as $term)
00731 {
00732 $this->tpl->setCurrentBlock("linktable_row");
00733 $this->tpl->setVariable("TEXT_LINK", $term["term"]);
00734 $this->tpl->setVariable("TEXT_ADD", $this->lng->txt("add"));
00735 $this->tpl->setVariable("LINK_HREF", $this->ctrl->getLinkTargetByClass(get_class($this), "addGIT") . "&git=" . $term["id"]);
00736 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
00737 $this->tpl->parseCurrentBlock();
00738 $counter++;
00739 }
00740 $this->tpl->setCurrentBlock("link_selection");
00741 $this->tpl->setVariable("BUTTON_CANCEL",$this->lng->txt("cancel"));
00742 $this->tpl->setVariable("TEXT_LINK_TYPE", $this->lng->txt("glossary_term"));
00743 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00744 $this->tpl->parseCurrentBlock();
00745 break;
00746 case "lm":
00747 $subquestion_index = 0;
00748 if ($_SESSION["subquestion_index"] >= 0)
00749 {
00750 $subquestion_index = $_SESSION["subquestion_index"];
00751 }
00752 $this->object->setSuggestedSolution("il__lm_" . $_GET["source_id"], $subquestion_index);
00753 unset($_SESSION["subquestion_index"]);
00754 unset($_SESSION["link_new_type"]);
00755 unset($_SESSION["search_link_type"]);
00756 sendInfo($this->lng->txt("suggested_solution_added_successfully"));
00757 $this->editQuestion();
00758 break;
00759 }
00760 }
00761 }
00762 ?>