5require_once(
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php");
 
   50        $this->lng->loadLanguageModule(
'assessment');
 
   52        $this->inst_id = IL_INST_ID;
 
   54        $this->preview_mode = $a_preview_mode;
 
   56        $this->tpl = 
new ilTemplate(
"tpl.question_export.html", 
true, 
true, 
"Modules/Scorm2004");
 
   59        if (!$a_preview_mode) {
 
   60            $this->tpl->setVariable(
"FORM_BEGIN", 
"<form onsubmit='return false;'>");
 
   61            $this->tpl->setVariable(
"FORM_END", 
"</form>");
 
   66    public function exportQuestion($a_ref_id, $a_image_path = 
null, $a_output_mode = 
"presentation")
 
   68        if ($a_ref_id != 
"") {
 
   77        if (!is_object($this->q_gui->object)) {
 
   78            return "Error: Question not found.";
 
   81        $type = $this->q_gui->object->getQuestionType();
 
   82        if (method_exists($this, 
$type)) {
 
   83            $this->q_gui->object->setExportImagePath($a_image_path);
 
   84            $this->q_gui->object->feedbackOBJ->setPageObjectOutputMode($a_output_mode);
 
   85            $this->json = $this->q_gui->object->toJSON();
 
   86            $this->json_decoded = json_decode($this->json);
 
   87            self::$exported[$this->json_decoded->id] = 
$this->json;
 
   88            self::$mobs[$this->json_decoded->id] = $this->json_decoded->mobs;
 
   89            return $this->
$type();
 
   91            return "Error: Question Type not implemented/Question editing not finished";
 
   97        self::$exported = array();
 
   99        self::$media_files = array();
 
  121        if (!is_array($a_qids)) {
 
  122            $exportstring =
'var questions = new Array();';
 
  124        foreach (self::$exported as 
$key => $value) {
 
  125            if (!is_array($a_qids) || in_array(
$key, $a_qids)) {
 
  126                $exportstring .= 
"questions[$key]= $value;";
 
  129        return $exportstring;
 
  134        $this->tpl->setCurrentBlock(
"common");
 
  135        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  136        $this->tpl->setVariable(
"VAL_TYPE", $this->json_decoded->type);
 
  137        $this->tpl->parseCurrentBlock();
 
  142        $this->tpl->setCurrentBlock(
"singlechoice");
 
  143        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  144        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  145        if ($this->preview_mode) {
 
  146            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  148        if ($this->json_decoded->path) {
 
  149            $this->tpl->setVariable(
 
  151                "ilias.questions.handleMCImages(" . $this->json_decoded->id . 
");" 
  154        $this->tpl->parseCurrentBlock();
 
  155        foreach ($this->json_decoded->answers as $answer) {
 
  156            if ($answer->image!=
"") {
 
  157                array_push(self::$media_files, $this->q_gui->object->getImagePath() . $answer->image);
 
  158                if (is_file($this->q_gui->object->getImagePath() . 
"thumb." . $answer->image)) {
 
  159                    array_push(self::$media_files, $this->q_gui->object->getImagePath() . 
"thumb." . $answer->image);
 
  164        return $this->tpl->get();
 
  170        $this->q_gui->populateJavascriptFilesRequiredForWorkForm($main_tpl);
 
  171        $main_tpl->addCss(
'Modules/Test/templates/default/ta.css');
 
  173        $this->tpl->setCurrentBlock(
"multiplechoice");
 
  174        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  175        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  176        if ($this->json_decoded->selection_limit) {
 
  177            $this->tpl->setVariable(
'SELECTION_LIMIT_HINT', 
sprintf(
 
  178                $this->lng->txt(
'ass_mc_sel_lim_hint'),
 
  179                $this->json_decoded->selection_limit,
 
  180                count($this->json_decoded->answers)
 
  183            $this->tpl->setVariable(
'SELECTION_LIMIT_VALUE', $this->json_decoded->selection_limit);
 
  185            $this->tpl->setVariable(
'SELECTION_LIMIT_VALUE', 
'null');
 
  187        if ($this->preview_mode) {
 
  188            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  190        if ($this->json_decoded->path) {
 
  191            $this->tpl->setVariable(
 
  193                "ilias.questions.handleMCImages(" . $this->json_decoded->id . 
");" 
  196        $this->tpl->parseCurrentBlock();
 
  197        foreach ($this->json_decoded->answers as $answer) {
 
  198            if ($answer->image!=
"") {
 
  199                array_push(self::$media_files, $this->q_gui->object->getImagePath() . $answer->image);
 
  200                array_push(self::$media_files, $this->q_gui->object->getImagePath() . 
"thumb." . $answer->image);
 
  204        return $this->tpl->get();
 
  211        $main_tpl = 
$DIC[
"tpl"];
 
  213        $main_tpl->addCss(
'Modules/Test/templates/default/ta.css');
 
  215        $this->tpl->setCurrentBlock(
"kprimchoice");
 
  217        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  218        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  220        if ($this->preview_mode) {
 
  221            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  224        if ($this->json_decoded->path) {
 
  225            $this->tpl->setVariable(
 
  227                "ilias.questions.handleKprimImages(" . $this->json_decoded->id . 
");" 
  231        $this->tpl->setVariable(
'OPTION_LABEL_TRUE', $this->json_decoded->trueOptionLabel);
 
  232        $this->tpl->setVariable(
'OPTION_LABEL_FALSE', $this->json_decoded->falseOptionLabel);
 
  234        $this->tpl->setVariable(
'VALUE_TRUE', 1);
 
  235        $this->tpl->setVariable(
'VALUE_FALSE', 0);
 
  237        $this->tpl->parseCurrentBlock();
 
  239        foreach ($this->json_decoded->answers as $answer) {
 
  240            if (is_object($answer->image)) {
 
  241                self::$media_files[] = $answer->getImageFsPath();
 
  242                self::$media_files[] = $answer->getThumbFsPath();
 
  243            } elseif (is_string($answer->image)) {
 
  244                self::$media_files[] = $this->q_gui->object->getImagePath() . $answer->image;
 
  245                if (is_file($this->q_gui->object->getImagePath() . 
"thumb." . $answer->image)) {
 
  246                    self::$media_files[] = $this->q_gui->object->getImagePath() . 
"thumb." . $answer->image;
 
  253        return $this->tpl->get();
 
  258        $maxlength = $this->json_decoded->maxlength == 0 ? 4096 : $this->json_decoded->maxlength;
 
  259        $this->tpl->setCurrentBlock(
"textquestion");
 
  260        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  261        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  262        $this->tpl->setVariable(
"VAL_MAXLENGTH", $maxlength);
 
  263        if ($this->preview_mode) {
 
  264            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  266        $this->tpl->parseCurrentBlock();
 
  268        return $this->tpl->get();
 
  273        $this->tpl->setCurrentBlock(
"clozequestion");
 
  274        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  275        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  276        if ($this->preview_mode) {
 
  277            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  279        $this->tpl->parseCurrentBlock();
 
  281        return $this->tpl->get();
 
  286        $this->tpl->setCurrentBlock(
"longmenu");
 
  287        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  288        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  289        if ($this->preview_mode) {
 
  290            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  292        $this->tpl->parseCurrentBlock();
 
  294        return $this->tpl->get();
 
  299        $this->tpl->setCurrentBlock(
"orderingquestion");
 
  300        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  301        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  302        if ($this->preview_mode) {
 
  303            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  305        if ($this->q_gui->object->getOrderingType() == 
OQ_PICTURES) {
 
  306            $this->tpl->setVariable(
"VAL_SUBTYPE", 
"_images");
 
  307            $this->tpl->setVariable(
 
  309                "ilias.questions.handleOrderingImages(" . $this->json_decoded->id . 
");" 
  312            foreach ($this->json_decoded->answers as $answer) {
 
  313                if ($answer->answertext!=
"") {
 
  314                    array_push(self::$media_files, $this->q_gui->object->getImagePath() . $answer->answertext);
 
  315                    array_push(self::$media_files, $this->q_gui->object->getImagePath() . 
"thumb." . $answer->answertext);
 
  319            $this->tpl->setVariable(
"VAL_SUBTYPE", 
"_terms");
 
  321        $this->tpl->parseCurrentBlock();
 
  323        return $this->tpl->get();
 
  329        $main_tpl = 
$DIC[
"tpl"];
 
  331        $main_tpl->addJavaScript(
'Modules/TestQuestionPool/js/ilMatchingQuestion.js');
 
  332        $main_tpl->addCss(
'Modules/TestQuestionPool/templates/default/test_javascript.css');
 
  333        $this->tpl->setCurrentBlock(
"matchingquestion");
 
  334        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  335        $this->tpl->setVariable(
"BTN_LABEL_RESET", $this->lng->txt(
"reset_terms"));
 
  336        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  337        if ($this->preview_mode) {
 
  338            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  340        $this->tpl->parseCurrentBlock();
 
  342        return $this->tpl->get();
 
  347        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  348        array_push(self::$media_files, $this->q_gui->object->getImagePath() . $this->q_gui->object->getImageFilename());
 
  349        $this->tpl->setCurrentBlock(
"mapareas");
 
  350        $areas = $this->json_decoded->answers;
 
  352        foreach ($areas as $area) {
 
  353            $this->tpl->setVariable(
"VAL_TOOLTIP", htmlspecialchars($area->answertext));
 
  354            $this->tpl->setVariable(
"VAL_COORDS", $area->coords);
 
  355            $this->tpl->setVariable(
"VAL_ORDER", $area->order);
 
  356            $this->tpl->setVariable(
"VAL_AREA", $area->area);
 
  357            $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  358            $this->tpl->parseCurrentBlock();
 
  360        $this->tpl->setCurrentBlock(
"imagemapquestion");
 
  361        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  362        if ($this->preview_mode) {
 
  363            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  365        $this->tpl->parseCurrentBlock();
 
  367        return $this->tpl->get();
 
  372        $this->tpl->setCurrentBlock(
"textsubset");
 
  373        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  374        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  375        $this->tpl->setVariable(
"VAL_MAXLENGTH", $maxlength);
 
  376        if ($this->preview_mode) {
 
  377            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  379        $this->tpl->parseCurrentBlock();
 
  381        return $this->tpl->get();
 
  386        $this->tpl->setCurrentBlock(
"orderinghorizontal");
 
  387        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  388        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  389        if ($this->preview_mode) {
 
  390            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  392        $this->tpl->parseCurrentBlock();
 
  394        return $this->tpl->get();
 
  399        $this->tpl->setCurrentBlock(
"errortext");
 
  400        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  401        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  402        if ($this->preview_mode) {
 
  403            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  405        $this->tpl->parseCurrentBlock();
 
  407        return $this->tpl->get();
 
sprintf('%.4f', $callTime)
An exception for terminatinating execution or to throw for unit testing.
static _getQuestionGUI($question_type, $question_id=-1)
Creates a question gui representation and returns the alias to the question gui note: please do not u...
static _extractObjIdOfTarget($a_target)
Extract object id out of target.
static _extractInstOfTarget($a_target)
Extract installation id out of target.
Scorm 2004 Question Exporter.
__construct($a_preview_mode=false)
Constructor @access public.
exportQuestion($a_ref_id, $a_image_path=null, $a_output_mode="presentation")
static questionsJS(array $a_qids=null)
special template class to simplify handling of ITX/PEAR
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
const OQ_PICTURES
Ordering question constants.