/**
  * 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);
 }
Example #8
0
 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);
 }