/** * Constructor * * @access public * @global ilCtrl $ilCtrl * @global ilLanguage $lng * @param assQuestion $questionOBJ * @param ilAssQuestionHintList $questionHintList * @param ilAssQuestionHintsGUI $parentGUI * @param string $parentCmd */ public function __construct(assQuestion $questionOBJ, ilAssQuestionHintList $questionHintList, ilAssQuestionHintAbstractGUI $parentGUI, $parentCmd, $tableMode = self::TBL_MODE_TESTOUTPUT, ilAssQuestionHintsOrderingClipboard $hintOrderingClipboard = null) { global $ilCtrl, $lng; $this->questionOBJ = $questionOBJ; $this->tableMode = $tableMode; $this->hintOrderingClipboard = $hintOrderingClipboard; $this->setPrefix('tst_question_hints' . $tableMode); $this->setId('tst_question_hints' . $tableMode); parent::__construct($parentGUI, $parentCmd); $this->setTitle(sprintf($lng->txt('tst_question_hints_table_header'), $questionOBJ->getTitle())); $this->setNoEntriesText($lng->txt('tst_question_hints_table_no_items')); // we don't take care about offset/limit values, so this avoids segmentation in general // --> required for ordering via clipboard feature $this->setExternalSegmentation(true); $tableData = $questionHintList->getTableData(); $this->setData($tableData); if ($this->tableMode == self::TBL_MODE_ADMINISTRATION) { $this->setRowTemplate('tpl.tst_question_hints_administration_table_row.html', 'Modules/TestQuestionPool'); $this->setSelectAllCheckbox('hint_ids[]'); $rowCount = count($tableData); $this->initAdministrationColumns($rowCount); $this->initAdministrationCommands($rowCount); } else { $this->setRowTemplate('tpl.tst_question_hints_testoutput_table_row.html', 'Modules/TestQuestionPool'); $this->initTestoutputColumns(); $this->initTestoutputCommands(); } }
/** * saves the form on successfull validation and redirects to showForm command * * @access private * @global ilCtrl $ilCtrl * @global ilLanguage $lng */ private function saveFormCmd() { global $ilCtrl, $lng; $form = $this->buildForm(); if ($form->checkInput()) { $questionHint = new ilAssQuestionHint(); if ((int) $form->getInput('hint_id')) { $questionHint->load((int) $form->getInput('hint_id')); } else { $questionHint->setQuestionId($this->questionOBJ->getId()); $questionHint->setIndex(ilAssQuestionHintList::getNextIndexByQuestionId($this->questionOBJ->getId())); } $questionHint->setText($form->getInput('hint_text')); $questionHint->setPoints($form->getInput('hint_points')); $questionHint->save(); ilUtil::sendSuccess($lng->txt('tst_question_hints_form_saved_msg'), true); $ilCtrl->redirectByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_SHOW_LIST); } ilUtil::sendFailure($lng->txt('tst_question_hints_form_invalid_msg')); $this->showFormCmd($form); }
/** * saves the form on successfull validation and redirects to showForm command * * @access private * @global ilCtrl $ilCtrl * @global ilLanguage $lng */ private function saveFormCmd() { global $ilCtrl, $lng, $ilUser; $form = $this->buildForm(); if ($form->checkInput()) { $questionHint = new ilAssQuestionHint(); if ((int) $form->getInput('hint_id')) { $questionHint->load((int) $form->getInput('hint_id')); $hintJustCreated = false; } else { $questionHint->setQuestionId($this->questionOBJ->getId()); $questionHint->setIndex(ilAssQuestionHintList::getNextIndexByQuestionId($this->questionOBJ->getId())); $hintJustCreated = true; } $questionHint->setText($form->getInput('hint_text')); $questionHint->setPoints($form->getInput('hint_points')); $questionHint->save(); ilUtil::sendSuccess($lng->txt('tst_question_hints_form_saved_msg'), true); $originalexists = $this->questionOBJ->_questionExistsInPool($this->questionOBJ->original_id); include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php"; if ($_GET["calling_test"] && $originalexists && assQuestion::_isWriteable($this->questionOBJ->original_id, $ilUser->getId())) { $ilCtrl->redirectByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_CONFIRM_SYNC); } if ($hintJustCreated && $this->questionOBJ->isAdditionalContentEditingModePageObject()) { $ilCtrl->setParameterByClass('ilasshintpagegui', 'hint_id', $questionHint->getId()); $ilCtrl->redirectByClass('ilasshintpagegui', 'edit'); } else { $ilCtrl->redirectByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_SHOW_LIST); } } ilUtil::sendFailure($lng->txt('tst_question_hints_form_invalid_msg')); $this->showFormCmd($form); }
public function getRequestedHintsList() { $hintIds = $this->previewSession->getRequestedHints(); $requestedHintsList = ilAssQuestionHintList::getListByHintIds($hintIds); return $requestedHintsList; }
/** * Returns an object of class ilAssQuestionHintList containing objects * of class ilAssQuestionHint for all allready requested hints * relating to the given question, testactive and testpass * * @access public * @global ilDB $ilDB * @return ilAssQuestionHintList $requestedHintsList */ public function getRequestedHintsList() { global $ilDB; $query = "\n\t\t\tSELECT\t\tqhtr_hint_fi\n\t\t\t\n\t\t\tFROM\t\tqpl_hint_tracking\n\t\t\t\n\t\t\tWHERE\t\tqhtr_question_fi = %s\n\t\t\tAND\t\t\tqhtr_active_fi = %s\n\t\t\tAND\t\t\tqhtr_pass = %s\n\t\t"; $res = $ilDB->queryF($query, array('integer', 'integer', 'integer'), array($this->getQuestionId(), $this->getActiveId(), $this->getPass())); $hintIds = array(); while ($row = $ilDB->fetchAssoc($res)) { $hintIds[] = $row['qhtr_hint_fi']; } $requestedHintsList = ilAssQuestionHintList::getListByHintIds($hintIds); return $requestedHintsList; }
/** * returns a new quastion hint list that contains all question hints * from the passed list except for the hint that is stored to ordering clipboard * * @access private * @param ilAssQuestionHintList $questionHintList * @return ilAssQuestionHintList $filteredQuestionHintList */ private function getQuestionHintListWithoutHintStoredInOrderingClipboard(ilAssQuestionHintList $questionHintList) { $filteredQuestionHintList = new ilAssQuestionHintList(); foreach ($questionHintList as $questionHint) { /* @var $questionHint ilAssQuestionHint */ if ($questionHint->getId() != $this->hintOrderingClipboard->getStored()) { $filteredQuestionHintList->addHint($questionHint); } } return $filteredQuestionHintList; }
/** * saves the form on successfull validation and redirects to showForm command * * @access private * @global ilCtrl $ilCtrl * @global ilLanguage $lng */ private function saveFormCmd() { global $ilCtrl, $lng; $form = $this->buildForm(); if ($form->checkInput()) { $questionHint = new ilAssQuestionHint(); if ((int) $form->getInput('hint_id')) { $questionHint->load((int) $form->getInput('hint_id')); $hintJustCreated = false; } else { $questionHint->setQuestionId($this->questionOBJ->getId()); $questionHint->setIndex(ilAssQuestionHintList::getNextIndexByQuestionId($this->questionOBJ->getId())); $hintJustCreated = true; } $questionHint->setText($form->getInput('hint_text')); $questionHint->setPoints($form->getInput('hint_points')); $questionHint->save(); ilUtil::sendSuccess($lng->txt('tst_question_hints_form_saved_msg'), true); if ($hintJustCreated && $this->questionOBJ->isAdditionalContentEditingModePageObject()) { $ilCtrl->setParameterByClass('ilasshintpagegui', 'hint_id', $questionHint->getId()); $ilCtrl->redirectByClass('ilasshintpagegui', 'edit'); } else { $ilCtrl->redirectByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_SHOW_LIST); } } ilUtil::sendFailure($lng->txt('tst_question_hints_form_invalid_msg')); $this->showFormCmd($form); }
protected function duplicateQuestionHints($originalQuestionId, $duplicateQuestionId) { require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintList.php'; $hintIds = ilAssQuestionHintList::duplicateListForQuestion($originalQuestionId, $duplicateQuestionId); if ($this->isAdditionalContentEditingModePageObject()) { require_once 'Modules/TestQuestionPool/classes/class.ilAssHintPage.php'; foreach ($hintIds as $originalHintId => $duplicateHintId) { $originalPageObject = new ilAssHintPage($originalHintId); $originalXML = $originalPageObject->getXMLContent(); $duplicatePageObject = new ilAssHintPage(); $duplicatePageObject->setId($duplicateHintId); $duplicatePageObject->setParentId($this->getId()); $duplicatePageObject->setXMLContent($originalXML); $duplicatePageObject->createFromXML(); } } }
protected function duplicateQuestionHints($originalQuestionId, $duplicateQuestionId) { require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintList.php'; ilAssQuestionHintList::duplicateListForQuestion($originalQuestionId, $duplicateQuestionId); }