/** * forwards the command to page object gui for author presentation * * @access private * @return page object gui object */ private function buildAuthorPresentationPageObjectGUI() { $this->tabs->setBackTarget($this->lng->txt('tst_question_hints_back_to_hint_list'), $this->ctrl->getLinkTargetByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_SHOW_LIST)); $this->ensurePageObjectExists($this->questionHint->getPageObjectType(), $this->questionHint->getId()); $pageObjectGUI = $this->getPageObjectGUI($this->questionHint->getPageObjectType(), $this->questionHint->getId()); $pageObjectGUI->setEnabledTabs(true); return $pageObjectGUI; }
/** * builds the questions hints form * * @access private * @global ilCtrl $ilCtrl * @global ilLanguage $lng * @return ilPropertyFormGUI $form */ private function buildForm(ilAssQuestionHint $questionHint = null) { global $ilCtrl, $lng; require_once 'Services/Form/classes/class.ilPropertyFormGUI.php'; require_once 'Services/Form/classes/class.ilTextAreaInputGUI.php'; require_once 'Services/Form/classes/class.ilNumberInputGUI.php'; require_once 'Services/Form/classes/class.ilHiddenInputGUI.php'; $form = new ilPropertyFormGUI(); $form->setTableWidth('100%'); if (!$this->questionOBJ->isAdditionalContentEditingModePageObject()) { // form input: hint text $areaInp = new ilTextAreaInputGUI($lng->txt('tst_question_hints_form_label_hint_text'), 'hint_text'); $areaInp->setRequired(true); $areaInp->setRows(10); $areaInp->setCols(80); if (!$this->questionOBJ->getPreventRteUsage()) { $areaInp->setUseRte(true); } include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php"; $areaInp->setRteTags(ilObjAdvancedEditing::_getUsedHTMLTags("assessment")); $areaInp->setRTESupport($this->questionOBJ->getId(), 'qpl', 'assessment'); $areaInp->addPlugin("latex"); $areaInp->addButton("latex"); $areaInp->addButton("pastelatex"); $form->addItem($areaInp); } // form input: hint points $numInp = new ilNumberInputGUI($lng->txt('tst_question_hints_form_label_hint_points'), 'hint_points'); $numInp->allowDecimals(true); $numInp->setRequired(true); $numInp->setSize(3); $form->addItem($numInp); if ($questionHint instanceof ilAssQuestionHint) { // build form title for an existing hint $form->setTitle(sprintf($lng->txt('tst_question_hints_form_header_edit'), $questionHint->getIndex(), $this->questionOBJ->getTitle())); // hidden input: hint id $hiddenInp = new ilHiddenInputGUI('hint_id'); $form->addItem($hiddenInp); // init values require_once 'Services/Utilities/classes/class.ilUtil.php'; if (!$this->questionOBJ->isAdditionalContentEditingModePageObject()) { $areaInp->setValue(ilUtil::prepareTextareaOutput($questionHint->getText(), true)); } $numInp->setValue($questionHint->getPoints()); $hiddenInp->setValue($questionHint->getId()); } else { // build form title for a new hint $form->setTitle(sprintf($lng->txt('tst_question_hints_form_header_create'), $this->questionOBJ->getTitle())); } if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) { if ($questionHint instanceof ilAssQuestionHint) { $saveCmdLabel = $lng->txt('tst_question_hints_form_cmd_save_points'); } else { $saveCmdLabel = $lng->txt('tst_question_hints_form_cmd_save_points_and_edit_page'); } } else { $saveCmdLabel = $lng->txt('tst_question_hints_form_cmd_save'); } $form->setFormAction($ilCtrl->getFormAction($this)); $form->addCommandButton(self::CMD_CANCEL_FORM, $lng->txt('cancel')); $form->addCommandButton(self::CMD_SAVE_FORM, $saveCmdLabel); return $form; }
/** * renders a table row by filling wor data to table row template * * @access public * @global ilCtrl $ilCtrl * @global ilLanguage $lng * @param array $rowData */ public function fillRow($rowData) { global $ilCtrl, $lng; if ($this->tableMode == self::TBL_MODE_ADMINISTRATION) { $list = new ilAdvancedSelectionListGUI(); $list->setListTitle($lng->txt('actions')); $list->setId("advsl_hint_{$rowData['hint_id']}_actions"); if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) { $editPointsHref = $ilCtrl->getLinkTargetByClass('ilAssQuestionHintGUI', ilAssQuestionHintGUI::CMD_SHOW_FORM); $editPointsHref = ilUtil::appendUrlParameterString($editPointsHref, "hint_id={$rowData['hint_id']}", true); $list->addItem($lng->txt('tst_question_hints_table_link_edit_hint_points'), '', $editPointsHref); $editPageHref = $ilCtrl->getLinkTargetByClass('ilasshintpagegui', 'edit'); $editPageHref = ilUtil::appendUrlParameterString($editPageHref, "hint_id={$rowData['hint_id']}", true); $list->addItem($lng->txt('tst_question_hints_table_link_edit_hint_page'), '', $editPageHref); } else { $editHref = $ilCtrl->getLinkTargetByClass('ilAssQuestionHintGUI', ilAssQuestionHintGUI::CMD_SHOW_FORM); $editHref = ilUtil::appendUrlParameterString($editHref, "hint_id={$rowData['hint_id']}", true); $list->addItem($lng->txt('tst_question_hints_table_link_edit_hint'), '', $editHref); } $deleteHref = $ilCtrl->getLinkTarget($this->parent_obj, ilAssQuestionHintsGUI::CMD_CONFIRM_DELETE); $deleteHref = ilUtil::appendUrlParameterString($deleteHref, "hint_id={$rowData['hint_id']}", true); $list->addItem($lng->txt('tst_question_hints_table_link_delete_hint'), '', $deleteHref); $this->tpl->setVariable('ACTIONS', $list->getHTML()); $this->tpl->setVariable('HINT_ID', $rowData['hint_id']); $hintIndex = $rowData['hint_index'] * self::INDEX_TO_POSITION_FACTOR; } else { $showHref = $this->parent_obj->getHintPresentationLinkTarget($rowData['hint_id']); $this->tpl->setVariable('HINT_HREF', $showHref); $hintIndex = ilAssQuestionHint::getHintIndexLabel($lng, $rowData['hint_index']); } $this->tpl->setVariable('HINT_INDEX', $hintIndex); $this->tpl->setVariable('HINT_TEXT', $rowData['hint_text']); $this->tpl->setVariable('HINT_POINTS', $rowData['hint_points']); }
public function storeRequest(ilAssQuestionHint $questionHint) { $this->previewSession->addRequestedHint($questionHint->getId()); }
/** * Tracks the given hint as requested for the given * question, testactive and testpass * * @access public * @global ilDB $ilDB * @param ilAssQuestionHint $questionHint */ public function storeRequest(ilAssQuestionHint $questionHint) { global $ilDB; $trackId = $ilDB->nextId('qpl_hint_tracking'); $ilDB->insert('qpl_hint_tracking', array('qhtr_track_id' => array('integer', $trackId), 'qhtr_active_fi' => array('integer', $this->getActiveId()), 'qhtr_pass' => array('integer', $this->getPass()), 'qhtr_question_fi' => array('integer', $this->getQuestionId()), 'qhtr_hint_fi' => array('integer', $questionHint->getId()))); }
/** * inits the notification telling the user, * that a hint is stored to hint ordering clipboard * * @access private * @global ilLanguage $lng */ private function initHintOrderingClipboardNotification() { global $lng; if (!$this->hintOrderingClipboard->hasStored()) { return; } $questionHint = ilAssQuestionHint::getInstanceById($this->hintOrderingClipboard->getStored()); ilUtil::sendInfo(sprintf($lng->txt('tst_question_hints_item_stored_in_ordering_clipboard'), $questionHint->getIndex())); }
/** * shows an allready requested hint * * @access private * @global ilCtrl $ilCtrl * @global ilTemplate $tpl * @global ilLanguage $lng */ private function showHintCmd() { global $ilCtrl, $tpl, $lng; if (!isset($_GET['hintId']) || !(int) $_GET['hintId']) { throw new ilTestException('no hint id given'); } $isRequested = $this->questionHintTracking->isRequested((int) $_GET['hintId']); if (!$isRequested) { throw new ilTestException('hint with given id is not yet requested for given testactive and testpass'); } $questionHint = ilAssQuestionHint::getInstanceById((int) $_GET['hintId']); require_once 'Services/Utilities/classes/class.ilUtil.php'; require_once 'Services/Form/classes/class.ilPropertyFormGUI.php'; require_once 'Services/Form/classes/class.ilNonEditableValueGUI.php'; // build form $form = new ilPropertyFormGUI(); $form->setFormAction($ilCtrl->getFormAction($this)); $form->setTableWidth('100%'); $form->setTitle(sprintf($lng->txt('tst_question_hints_form_header_edit'), $questionHint->getIndex(), $this->questionOBJ->getTitle())); $form->addCommandButton(self::CMD_BACK_TO_QUESTION, $lng->txt('tst_question_hints_back_to_question')); $numExistingRequests = $this->questionHintTracking->getNumExistingRequests(); if ($numExistingRequests > 1) { $form->addCommandButton(self::CMD_SHOW_LIST, $lng->txt('button_show_requested_question_hints')); } // form input: hint text $nonEditableHintText = new ilNonEditableValueGUI($lng->txt('tst_question_hints_form_label_hint_text'), 'hint_text', true); $nonEditableHintText->setValue(ilUtil::prepareTextareaOutput($questionHint->getText(), true)); $form->addItem($nonEditableHintText); // form input: hint points $nonEditableHintPoints = new ilNonEditableValueGUI($lng->txt('tst_question_hints_form_label_hint_points'), 'hint_points'); $nonEditableHintPoints->setValue($questionHint->getPoints()); $form->addItem($nonEditableHintPoints); $this->populateContent($ilCtrl->getHtml($form)); }
/** * instantiates a question hint list for the passed hint ids * * @access public * @static * @global ilDB $ilDB * @param array $hintIds * @return self $questionHintList */ public static function getListByHintIds($hintIds) { global $ilDB; $qht_hint_id__IN__hintIds = $ilDB->in('qht_hint_id', $hintIds, false, 'integer'); $query = "\n\t\t\tSELECT\t\tqht_hint_id,\n\t\t\t\t\t\tqht_question_fi,\n\t\t\t\t\t\tqht_hint_index,\n\t\t\t\t\t\tqht_hint_points,\n\t\t\t\t\t\tqht_hint_text\n\t\t\t\t\t\n\t\t\tFROM\t\tqpl_hints\n\t\t\t\n\t\t\tWHERE\t\t{$qht_hint_id__IN__hintIds}\n\t\t\t\n\t\t\tORDER BY\tqht_hint_index ASC\n\t\t"; $res = $ilDB->query($query); $questionHintList = new self(); while ($row = $ilDB->fetchAssoc($res)) { $questionHint = new ilAssQuestionHint(); ilAssQuestionHint::assignDbRow($questionHint, $row); $questionHintList->addHint($questionHint); } return $questionHintList; }
/** * assigns the field elements of passed hint db row array to the * corresponding hint object properties of passed hint object instance * * @access public * @static * @param self $questionHint * @param array $hintDbRow */ public static function assignDbRow(self $questionHint, $hintDbRow) { foreach ($hintDbRow as $field => $value) { switch ($field) { case 'qht_hint_id': $questionHint->setId($value); break; case 'qht_question_fi': $questionHint->setQuestionId($value); break; case 'qht_hint_index': $questionHint->setIndex($value); break; case 'qht_hint_points': $questionHint->setPoints($value); break; case 'qht_hint_text': $questionHint->setText($value); break; default: throw new ilTestQuestionPoolException("invalid db field identifier ({$field}) given!"); } } }