4require_once 
'./Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
 
    5require_once 
'./Modules/TestQuestionPool/interfaces/interface.ilGuiQuestionScoringAdjustable.php';
 
    6require_once 
'./Modules/TestQuestionPool/interfaces/interface.ilGuiAnswerScoringAdjustable.php';
 
    7require_once 
'./Modules/Test/classes/inc.AssessmentConstants.php';
 
   50        include_once 
"./Modules/TestQuestionPool/classes/class.assOrderingQuestion.php";
 
   53            $this->
object->loadFromDb($id);
 
   55        $this->clearAnswersOnWritingPostDataEnabled = 
false;
 
   81        $form->setValuesByPost();
 
   85        $this->
object->saveToDb();
 
   87        $form->ensureReprintableFormStructure($this->
object);
 
   98        $form->setValuesByPost();
 
  101        $this->
object->setOrderingType(
OQ_TERMS);
 
  102        $this->
object->saveToDb();
 
  104        $form->ensureReprintableFormStructure($this->
object);
 
  112        $this->
object->saveToDb();
 
  121        $this->
object->saveToDb();
 
  128        $orderingInput = $this->
object->buildOrderingImagesInputGui();
 
  129        $this->
object->initOrderingElementAuthoringProperties($orderingInput);
 
  132        $form->replaceFormItemByPostVar($orderingInput);
 
  133        $form->setValuesByPost();
 
  136            $this->object->getId(),
 
  140        $storedElementList = $this->
object->getOrderingElementList();
 
  142        foreach ($orderingInput->getElementList($this->object->getId()) as $submittedElement) {
 
  143            if ($submittedElement->isImageRemovalRequest()) {
 
  144                if ($this->object->isImageFileStored($submittedElement->getContent())) {
 
  145                    $this->
object->dropImageFile($submittedElement->getContent());
 
  148                $submittedElement->setContent(
null);
 
  151            if ($storedElementList->elementExistByRandomIdentifier($submittedElement->getRandomIdentifier())) {
 
  152                $storedElement = $storedElementList->getElementByRandomIdentifier(
 
  153                    $submittedElement->getRandomIdentifier()
 
  156                $submittedElement->setSolutionIdentifier($storedElement->getSolutionIdentifier());
 
  157                $submittedElement->setIndentation($storedElement->getIndentation());
 
  160            $replacementElemList->addElement($submittedElement);
 
  163        $replacementElemList->saveToDb();
 
  165        $orderingInput->setElementList($replacementElemList);
 
  171        $orderingInput = $this->
object->buildOrderingImagesInputGui();
 
  172        $this->
object->initOrderingElementAuthoringProperties($orderingInput);
 
  175        $form->replaceFormItemByPostVar($orderingInput);
 
  176        $form->setValuesByPost();
 
  178        if (!$orderingInput->checkInput()) {
 
  183        $this->
object->getOrderingElementList()->saveToDb();
 
  184        $orderingInput->setElementList($this->object->getOrderingElementList());
 
  191        $this->
object->setThumbGeometry(
$_POST[
"thumb_geometry"]);
 
  194        $this->
object->setPoints(
$_POST[
"points"]);
 
  203        #$submittedElementList = $this->object->fetchSolutionListFromFormSubmissionData($_POST); 
  204        $submittedElementList = $this->
object->fetchSolutionListFromSubmittedForm($form);
 
  207        $replacementElementList->setQuestionId($this->object->getId());
 
  209        $currentElementList = $this->
object->getOrderingElementList();
 
  211        foreach ($submittedElementList as $submittedElement) {
 
  212            if ($this->object->hasOrderingTypeUploadSupport()) {
 
  213                if ($submittedElement->isImageUploadAvailable()) {
 
  214                    $suffix = strtolower(array_pop(explode(
".", $submittedElement->getUploadImageName())));
 
  215                    if (in_array($suffix, array(
"jpg", 
"jpeg", 
"png", 
"gif"))) {
 
  216                        $submittedElement->setUploadImageName($this->object->buildHashedImageFilename(
 
  217                            $submittedElement->getUploadImageName(),
 
  221                        $wasImageFileStored = $this->
object->storeImageFile(
 
  222                            $submittedElement->getUploadImageFile(),
 
  223                            $submittedElement->getUploadImageName()
 
  226                        if ($wasImageFileStored) {
 
  227                            if ($this->object->isImageFileStored($submittedElement->getContent())) {
 
  228                                $this->
object->dropImageFile($submittedElement->getContent());
 
  231                            $submittedElement->setContent($submittedElement->getUploadImageName());
 
  237            if ($currentElementList->elementExistByRandomIdentifier($submittedElement->getRandomIdentifier())) {
 
  238                $storedElement = $currentElementList->getElementByRandomIdentifier(
 
  239                    $submittedElement->getRandomIdentifier()
 
  242                $submittedElement->setSolutionIdentifier($storedElement->getSolutionIdentifier());
 
  245                    $submittedElement->setContent($storedElement->getContent());
 
  248                if (!$this->object->isOrderingTypeNested()) {
 
  249                    $submittedElement->setIndentation($storedElement->getIndentation());
 
  252                if ($this->object->isImageReplaced($submittedElement, $storedElement)) {
 
  253                    $this->
object->dropImageFile($storedElement->getContent());
 
  257            $replacementElementList->addElement($submittedElement);
 
  260        if ($this->object->isImageOrderingType()) {
 
  261            $this->
object->handleThumbnailCreation($replacementElementList);
 
  265            $replacementElementList->clearElementContents();
 
  268        if ($this->object->hasOrderingTypeUploadSupport()) {
 
  269            $obsoleteElementList = $currentElementList->getDifferenceElementList($replacementElementList);
 
  271            foreach ($obsoleteElementList as $obsoleteElement) {
 
  272                $this->
object->dropImageFile($obsoleteElement->getContent());
 
  276        $this->
object->setOrderingElementList($replacementElementList);
 
  282        $header->setTitle($this->lng->txt(
'oq_header_ordering_elements'));
 
  286            $orderingElementInput = $this->
object->buildNestedOrderingElementInputGui();
 
  288            $orderingElementInput = $this->
object->buildOrderingElementInputGui();
 
  292        $this->
object->initOrderingElementAuthoringProperties($orderingElementInput);
 
  294        $orderingElementInput->setElementList($this->object->getOrderingElementList());
 
  296        $form->
addItem($orderingElementInput);
 
  303        if ($this->object->isImageOrderingType()) {
 
  304            $geometry = 
new ilNumberInputGUI($this->lng->txt(
"thumb_geometry"), 
"thumb_geometry");
 
  305            $geometry->setValue($this->object->getThumbGeometry());
 
  306            $geometry->setRequired(
true);
 
  307            $geometry->setMaxLength(6);
 
  308            $geometry->setMinValue(20);
 
  309            $geometry->setSize(6);
 
  310            $geometry->setInfo($this->lng->txt(
"thumb_geometry_info"));
 
  316        $points->allowDecimals(
true);
 
  317        $points->setValue($this->object->getPoints());
 
  318        $points->setRequired(
true);
 
  320        $points->setMinValue(0);
 
  321        $points->setMinvalueShouldBeGreater(
true);
 
  332        $savingAllowed = 
true; 
 
  340            $form->setValuesByPost(); 
 
  342            if (!$form->checkInput()) { 
 
  343                $form->prepareValuesReprintable($this->
object);
 
  347                $savingAllowed = 
false;
 
  354            $form->setValuesByPost(); 
 
  358        if ($savingAllowed) {
 
  380        require_once 
'Modules/TestQuestionPool/classes/forms/class.ilAssOrderingQuestionAuthoringFormGUI.php';
 
  382        $this->editForm = $form;
 
  384        $form->setFormAction($this->ctrl->getFormAction($this));
 
  386        $form->setMultipart(($this->object->getOrderingType() == 
OQ_PICTURES) ? 
true : 
false);
 
  387        $form->setTableWidth(
"100%");
 
  388        $form->setId(
"ordering");
 
  396        $form->addSpecificOrderingQuestionCommandButtons($this->
object);
 
  397        $form->addGenericAssessmentQuestionCommandButtons($this->
object);
 
  430        $graphicalOutput = 
false,
 
  431        $result_output = 
false,
 
  432        $show_question_only = 
true,
 
  433        $show_feedback = 
false,
 
  434        $forceCorrectSolution = 
false,
 
  435        $show_manual_scoring = 
false,
 
  436        $show_question_text = 
true 
  438        $solutionOrderingList = $this->
object->getOrderingElementListForSolutionOutput(
 
  439            $forceCorrectSolution,
 
  445        $answers_gui = $this->
object->buildNestedOrderingElementInputGui();
 
  447        if ($forceCorrectSolution) {
 
  453        $answers_gui->setInteractionEnabled(
false);
 
  455        $answers_gui->setElementList($solutionOrderingList);
 
  457        $answers_gui->setCorrectnessTrueElementList(
 
  458            $solutionOrderingList->getParityTrueElementList($this->object->getOrderingElementList())
 
  461        $solution_html = $answers_gui->getHTML();
 
  463        $template = 
new ilTemplate(
"tpl.il_as_qpl_nested_ordering_output_solution.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  464        $template->setVariable(
'SOLUTION_OUTPUT', $solution_html);
 
  465        if ($show_question_text == 
true) {
 
  466            $template->setVariable(
"QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->getQuestion(), 
true));
 
  468        $questionoutput = $template->get();
 
  470        $solutiontemplate = 
new ilTemplate(
"tpl.il_as_tst_solution_output.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  471        $solutiontemplate->setVariable(
"SOLUTION_OUTPUT", $questionoutput);
 
  473        if ($show_feedback) {
 
  478                $feedback .= strlen($fb) ? $fb : 
'';
 
  482            $feedback .= strlen($fb) ? $fb : 
'';
 
  484            if (strlen($feedback)) {
 
  490                $solutiontemplate->setVariable(
"ILC_FB_CSS_CLASS", $cssClass);
 
  491                $solutiontemplate->setVariable(
"FEEDBACK", $this->object->prepareTextareaOutput($feedback, 
true));
 
  495        if ($show_question_only) {
 
  496            return $solutiontemplate->get();
 
  505    public function getPreview($show_question_only = 
false, $showInlineFeedback = 
false)
 
  508            $solutionOrderingElementList = unserialize(
 
  512            $solutionOrderingElementList = $this->
object->getShuffledOrderingElementList();
 
  515        $answers = $this->
object->buildNestedOrderingElementInputGui();
 
  516        $answers->setNestingEnabled($this->object->isOrderingTypeNested());
 
  519        $answers->setElementList($solutionOrderingElementList);
 
  521        $template = 
new ilTemplate(
"tpl.il_as_qpl_ordering_output.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  523        $template->setCurrentBlock(
'nested_ordering_output');
 
  524        $template->setVariable(
'NESTED_ORDERING', $answers->getHTML());
 
  525        $template->parseCurrentBlock();
 
  527        $template->setVariable(
"QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->getQuestion(), 
true));
 
  529        if ($show_question_only) {
 
  530            return $template->get();
 
  544        if (
$DIC[
'ilBrowser']->isMobile() || 
$DIC[
'ilBrowser']->isIpad()) {
 
  545            $files[] = 
'./libs/bower/bower_components/jqueryui-touch-punch/jquery.ui.touch-punch.min.js';
 
  552    public function getTestOutput($activeId, 
$pass, $isPostponed = 
false, $userSolutionPost = 
false, $inlineFeedback = 
false)
 
  556        $userSolutionPost = is_array($userSolutionPost) ? $userSolutionPost : array();
 
  559        $orderingGUI = $this->
object->buildNestedOrderingElementInputGui();
 
  560        $orderingGUI->setNestingEnabled($this->object->isOrderingTypeNested());
 
  562        $solutionOrderingElementList = $this->
object->getSolutionOrderingElementListForTestOutput(
 
  569        $template = 
new ilTemplate(
'tpl.il_as_qpl_ordering_output.html', 
true, 
true, 
'Modules/TestQuestionPool');
 
  572        $orderingGUI->setElementList($solutionOrderingElementList);
 
  574        $template->setCurrentBlock(
'nested_ordering_output');
 
  575        $template->setVariable(
'NESTED_ORDERING', $orderingGUI->getHTML());
 
  576        $template->parseCurrentBlock();
 
  578        $template->setVariable(
'QUESTIONTEXT', $this->object->prepareTextareaOutput($this->object->getQuestion(), 
true));
 
  580        $pageoutput = $this->
outQuestionPage(
'', $isPostponed, $activeId, $template->get());
 
  608        $rbacsystem = 
$DIC[
'rbacsystem'];
 
  609        $ilTabs = 
$DIC[
'ilTabs'];
 
  611        $ilTabs->clearTargets();
 
  613        $this->ctrl->setParameterByClass(
"ilAssQuestionPageGUI", 
"q_id", 
$_GET[
"q_id"]);
 
  614        include_once 
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
 
  615        $q_type = $this->
object->getQuestionType();
 
  617        if (strlen($q_type)) {
 
  618            $classname = $q_type . 
"GUI";
 
  619            $this->ctrl->setParameterByClass(strtolower($classname), 
"sel_question_types", $q_type);
 
  620            $this->ctrl->setParameterByClass(strtolower($classname), 
"q_id", 
$_GET[
"q_id"]);
 
  624            if ($rbacsystem->checkAccess(
'write', 
$_GET[
"ref_id"])) {
 
  628                    $this->ctrl->getLinkTargetByClass(
"ilAssQuestionPageGUI", 
"edit"),
 
  629                    array(
"edit", 
"insert", 
"exec_pg"),
 
  639        $force_active = 
false;
 
  640        if ($rbacsystem->checkAccess(
'write', 
$_GET[
"ref_id"])) {
 
  643                $url = $this->ctrl->getLinkTargetByClass($classname, 
"editQuestion");
 
  645            $commands = 
$_POST[
"cmd"];
 
  646            if (is_array($commands)) {
 
  647                foreach ($commands as $key => $value) {
 
  648                    if (preg_match(
"/^delete_.*/", $key, $matches)) {
 
  649                        $force_active = 
true;
 
  657                array(
"orderNestedTerms",
"orderNestedPictures",
"editQuestion", 
"save", 
"saveEdit", 
"addanswers", 
"removeanswers", 
"changeToPictures", 
"uploadElementImage", 
"changeToText", 
"upanswers", 
"downanswers", 
"originalSyncForm"),
 
  677                $this->ctrl->getLinkTargetByClass($classname, 
"assessment"),
 
  689        if (!$this->object->feedbackOBJ->specificAnswerFeedbackExists()) {
 
  693        $tpl = 
new ilTemplate(
'tpl.il_as_qpl_ordering_elem_fb.html', 
true, 
true, 
'Modules/TestQuestionPool');
 
  695        foreach ($this->object->getOrderingElementList() as $element) {
 
  696            $feedback = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation(
 
  697                $this->object->getId(),
 
  699                $element->getPosition()
 
  702            if ($this->object->isImageOrderingType()) {
 
  703                $imgSrc = $this->
object->getImagePathWeb() . $element->getContent();
 
  704                $tpl->setCurrentBlock(
'image');
 
  705                $tpl->setVariable(
'IMG_SRC', $imgSrc);
 
  707                $tpl->setCurrentBlock(
'text');
 
  709            $tpl->setVariable(
'CONTENT', $element->getContent());
 
  710            $tpl->parseCurrentBlock();
 
  712            $tpl->setCurrentBlock(
'element');
 
  713            $tpl->setVariable(
'FEEDBACK', $feedback);
 
  714            $tpl->parseCurrentBlock();
 
  717        return $this->
object->prepareTextareaOutput(
$tpl->get(), 
true);
 
  738            'SELECT depth FROM qpl_a_ordering WHERE question_fi = %s ORDER BY solution_key ASC',
 
  740            array($this->object->getId())
 
  743            $this->old_ordering_depth[] = $row[
'depth'];
 
  788            $this->object->getOrderingElementList()
 
  797        foreach ($relevant_answers_chosen as $answer_chosen) {
 
  798            $passdata[$answer_chosen[
'active_fi'] . 
'-' . $answer_chosen[
'pass']][$answer_chosen[
'value2']] = $answer_chosen[
'value1'];
 
  802        foreach ($passdata as $key => 
$data) {
 
  803            $hash = md5(implode(
'-', 
$data));
 
  805            foreach ($variants as $vkey => $variant) {
 
  806                if ($variant[
'hash'] == $hash) {
 
  812                $variants[$key][
'hash'] = $hash;
 
  813                $variants[$key][
'count'] = 1;
 
  817        $aggregate = array(); 
 
  818        foreach ($variants as $key => $variant_entry) {
 
  819            $variant = $passdata[$key];
 
  821            foreach ($variant as $variant_key => $variant_line) {
 
  823                $aggregated_info_for_answer[
'count'] = $variant_entry[
'count'];
 
  824                foreach ($answers_defined_on_question as $element) {
 
  827                    if ($this->object->isImageOrderingType()) {
 
  828                        $element->setImageThumbnailPrefix($this->object->getThumbPrefix());
 
  829                        $element->setImagePathWeb($this->object->getImagePathWeb());
 
  830                        $element->setImagePathFs($this->object->getImagePath());
 
  832                        $src = $element->getPresentationImageUrl();
 
  833                        $alt = $element->getContent();
 
  834                        $content = 
"<img src='{$src}' alt='{$alt}' title='{$alt}'/>";
 
  836                        $content = $element->getContent();
 
  839                    $aggregated_info_for_answer[
$i . 
' - ' . $content]
 
  840                        = $passdata[$key][
$i];
 
  843            $aggregate[] = $aggregated_info_for_answer;
 
  855        $tpl = 
new ilTemplate(
'tpl.il_as_aggregated_answers_table.html', 
true, 
true, 
"Modules/TestQuestionPool");
 
  857        foreach ($aggregate as $line_data) {
 
  858            $tpl->setCurrentBlock(
'aggregaterow');
 
  859            $count = array_shift($line_data);
 
  861            foreach ($line_data as $key => $line) {
 
  862                $html .= 
'<li>' . ++$line . 
' - ' . $key . 
'</li>';
 
  865            $tpl->setVariable(
'COUNT', $count);
 
  866            $tpl->setVariable(
'OPTION', $html);
 
  868            $tpl->parseCurrentBlock();
 
  875        if ($this->object->isImageOrderingType()) {
 
  882            $content = 
"<img src='{$src}' alt='{$alt}' title='{$alt}'/>";
 
  897        foreach ($list as $elem) {
 
  898            if ($elem->getIndentation() > $lastIndent) {
 
  900            } elseif ($elem->getIndentation() < $lastIndent) {
 
  901                $html .= 
'</li></ul><li>';
 
  902            } elseif (!$firstElem) {
 
  903                $html .= 
'</li><li>';
 
  911            $lastIndent = $elem->getIndentation();
 
  916        for (
$i = $lastIndent; 
$i > 0; 
$i--) {
 
  917            $html .= 
'</ul></li>';
 
  927        $answersByActiveAndPass = array();
 
  929        foreach ($relevantAnswers as $row) {
 
  930            $key = $row[
'active_fi'] . 
':' . $row[
'pass'];
 
  932            if (!isset($answersByActiveAndPass[$key])) {
 
  933                $answersByActiveAndPass[$key] = array();
 
  936            $answersByActiveAndPass[$key][$row[
'value1']] = $row[
'value2'];
 
  939        $solutionLists = array();
 
  941        foreach ($answersByActiveAndPass as $indexedSolutions) {
 
  942            $solutionLists[] = $this->
object->getSolutionOrderingElementList($indexedSolutions);
 
  948        foreach ($solutionLists as $orderingElementList) {
 
  949            $hash = $orderingElementList->getHash();
 
  951            if (!isset($answers[$hash])) {
 
  956                $answers[$hash] = array(
 
  957                    'answer' => $variantHtml, 
'frequency' => 0
 
  961            $answers[$hash][
'frequency']++;
 
  964        return array_values($answers);
 
  973        $orderingInput->prepareReprintable($this->
object);
 
  982        $points->allowDecimals(
true);
 
  983        $points->setValue($this->object->getPoints());
 
  984        $points->setRequired(
true);
 
  986        $points->setMinValue(0);
 
  987        $points->setMinvalueShouldBeGreater(
true);
 
  991        $header->setTitle($this->lng->txt(
'oq_header_ordering_elements'));
 
  994        $orderingElementInput = $this->
object->buildNestedOrderingElementInputGui();
 
  996        $this->
object->initOrderingElementAuthoringProperties($orderingElementInput);
 
  998        $orderingElementInput->setElementList($this->object->getOrderingElementList());
 
 1000        $form->
addItem($orderingElementInput);
 
 1008        $this->
object->setPoints((
float) $form->
getInput(
'points'));
 
 1010        $submittedElementList = $this->
object->fetchSolutionListFromSubmittedForm($form);
 
 1012        $curElementList = $this->
object->getOrderingElementList();
 
 1015        $newElementList->setQuestionId($this->object->getId());
 
 1017        foreach ($submittedElementList as $submittedElement) {
 
 1018            if (!$curElementList->elementExistByRandomIdentifier($submittedElement->getRandomIdentifier())) {
 
 1022            $curElement = $curElementList->getElementByRandomIdentifier($submittedElement->getRandomIdentifier());
 
 1024            $curElement->setPosition($submittedElement->getPosition());
 
 1026            if ($this->object->isOrderingTypeNested()) {
 
 1027                $curElement->setIndentation($submittedElement->getIndentation());
 
 1030            $newElementList->addElement($curElement);
 
 1033        $this->
object->setOrderingElementList($newElementList);
 
An exception for terminatinating execution or to throw for unit testing.
Ordering question GUI representation.
prepareReprintableCorrectionsForm(ilPropertyFormGUI $form)
isClearAnswersOnWritingPostDataEnabled()
persistAuthoringForm($form)
setQuestionTabs()
Sets the ILIAS tabs for this question type.
getAnswersFrequency($relevantAnswers, $questionIndex)
getPreview($show_question_only=false, $showInlineFeedback=false)
__construct($id=-1)
assOrderingQuestionGUI constructor
getSolutionOutput( $active_id, $pass=null, $graphicalOutput=false, $result_output=false, $show_question_only=true, $show_feedback=false, $forceCorrectSolution=false, $show_manual_scoring=false, $show_question_text=true)
Get the question solution output.
writeQuestionSpecificPostData(ilPropertyFormGUI $form)
Extracts the question specific values from $_POST and applies them to the data object.
populateAnswerSpecificFormPart(ilPropertyFormGUI $form)
Adds the answer specific form parts to a question property form gui.
aggregateAnswers($relevant_answers_chosen, $answers_defined_on_question)
getAnswerStatisticOrderingElementHtml(ilAssOrderingElement $element)
renderAggregateView($aggregate)
getAfterParticipationSuppressionAnswerPostVars()
Returns a list of postvars which will be suppressed in the form output when used in scoring adjustmen...
getPresentationJavascripts()
writeAnswerSpecificPostData(ilPropertyFormGUI $form)
Extracts the answer specific values from $_POST and applies them to the data object.
populateQuestionSpecificFormPart(\ilPropertyFormGUI $form)
editQuestion($checkonly=false)
Creates an output of the edit form for the question.
supportsIntermediateSolutionOutput()
Question type specific support of intermediate solution output The function getSolutionOutput respect...
setClearAnswersOnWritingPostDataEnabled($clearAnswersOnWritingPostDataEnabled)
populateCorrectionsFormProperties(ilPropertyFormGUI $form)
writePostData($forceSaving=false)
{Evaluates a posted edit form and writes the form data in the question object.integer A positive valu...
getAggregatedAnswersView($relevant_answers)
Returns an html string containing a question specific representation of the answers so far given in t...
saveCorrectionsFormProperties(ilPropertyFormGUI $form)
isInteractivePresentation()
getAfterParticipationSuppressionQuestionPostVars()
Returns a list of postvars which will be suppressed in the form output when used in scoring adjustmen...
getAnswerStatisticOrderingVariantHtml(ilAssOrderingElementList $list)
getTestOutput($activeId, $pass, $isPostponed=false, $userSolutionPost=false, $inlineFeedback=false)
$clearAnswersOnWritingPostDataEnabled
getSpecificFeedbackOutput($userSolution)
Returns the answer specific feedback for the question.
Class for ordering questions.
const ORDERING_ELEMENT_FORM_FIELD_POSTVAR
Basic GUI class for assessment questions.
populateTaxonomyFormSection(ilPropertyFormGUI $form)
addTab_QuestionHints(ilTabsGUI $tabs)
adds the hints tab to ilTabsGUI
isRenderPurposePrintPdf()
writeQuestionGenericPostData()
getILIASPage($html="")
Returns the ILIAS Page around a question.
isRenderPurposePlayback()
addTab_SuggestedSolution(ilTabsGUI $tabs, $classname)
outQuestionPage($a_temp_var, $a_postponed=false, $active_id="", $html="", $inlineFeedbackEnabled=false)
output question page
getUseIntermediateSolution()
Get if intermediate solution should be used for solution output.
saveTaxonomyAssignments()
addBackTab(ilTabsGUI $ilTabs)
isTestPresentationContext()
isRenderPurposeDemoplay()
hasCorrectSolution($activeId, $passIndex)
addTab_QuestionFeedback(ilTabsGUI $tabs)
adds the feedback tab to ilTabsGUI
addBasicQuestionFormProperties($form)
Add basic question form properties: assessment: title, author, description, question,...
addTab_QuestionPreview(ilTabsGUI $tabsGUI)
isAdjustmentEditContext()
getGenericFeedbackOutput($active_id, $pass)
Returns the answer specific feedback for the question.
static buildInstance($questionId, $orderingElements=array())
setImagePathWeb($imagePathWeb)
setImageThumbnailPrefix($imageThumbnailPrefix)
getPresentationImageUrl()
setImagePathFs($imagePathFs)
const CSS_CLASS_FEEDBACK_WRONG
const CSS_CLASS_FEEDBACK_CORRECT
special template class to simplify handling of ITX/PEAR
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
const OQ_PICTURES
Ordering question constants.
Interface ilGuiAnswerScoringAdjustable.
Interface ilGuiQuestionScoringAdjustable.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
foreach($_POST as $key=> $value) $res