5require_once(
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php");
 
   50        $this->lng->loadLanguageModule(
'assessment');
 
   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();
 
  169        $this->tpl->setCurrentBlock(
"multiplechoice");
 
  170        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  171        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  172        if ($this->json_decoded->selection_limit) {
 
  173            $this->tpl->setVariable(
'SELECTION_LIMIT_HINT', sprintf(
 
  174                $this->lng->txt(
'ass_mc_sel_lim_hint'),
 
  175                $this->json_decoded->selection_limit,
 
  176                count($this->json_decoded->answers)
 
  179            $this->tpl->setVariable(
'SELECTION_LIMIT_VALUE', $this->json_decoded->selection_limit);
 
  181            $this->tpl->setVariable(
'SELECTION_LIMIT_VALUE', 
'null');
 
  183        if ($this->preview_mode) {
 
  184            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  186        if ($this->json_decoded->path) {
 
  187            $this->tpl->setVariable(
 
  189                "ilias.questions.handleMCImages(" . $this->json_decoded->id . 
");" 
  192        $this->tpl->parseCurrentBlock();
 
  193        foreach ($this->json_decoded->answers as $answer) {
 
  194            if ($answer->image != 
"") {
 
  195                array_push(self::$media_files, $this->q_gui->object->getImagePath() . $answer->image);
 
  196                array_push(self::$media_files, $this->q_gui->object->getImagePath() . 
"thumb." . $answer->image);
 
  200        return $this->tpl->get();
 
  206        $this->tpl->setCurrentBlock(
"kprimchoice");
 
  208        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  209        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  211        if ($this->preview_mode) {
 
  212            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  215        if ($this->json_decoded->path) {
 
  216            $this->tpl->setVariable(
 
  218                "ilias.questions.handleKprimImages(" . $this->json_decoded->id . 
");" 
  222        $this->tpl->setVariable(
'OPTION_LABEL_TRUE', $this->json_decoded->trueOptionLabel);
 
  223        $this->tpl->setVariable(
'OPTION_LABEL_FALSE', $this->json_decoded->falseOptionLabel);
 
  225        $this->tpl->setVariable(
'VALUE_TRUE', 1);
 
  226        $this->tpl->setVariable(
'VALUE_FALSE', 0);
 
  228        $this->tpl->parseCurrentBlock();
 
  230        foreach ($this->json_decoded->answers as $answer) {
 
  231            if (is_object($answer->image)) {
 
  232                self::$media_files[] = $answer->getImageFsPath();
 
  233                self::$media_files[] = $answer->getThumbFsPath();
 
  234            } elseif (is_string($answer->image)) {
 
  235                self::$media_files[] = $this->q_gui->object->getImagePath() . $answer->image;
 
  236                if (is_file($this->q_gui->object->getImagePath() . 
"thumb." . $answer->image)) {
 
  237                    self::$media_files[] = $this->q_gui->object->getImagePath() . 
"thumb." . $answer->image;
 
  244        return $this->tpl->get();
 
  249        $maxlength = $this->json_decoded->maxlength == 0 ? 4096 : $this->json_decoded->maxlength;
 
  250        $this->tpl->setCurrentBlock(
"textquestion");
 
  251        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  252        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  253        $this->tpl->setVariable(
"VAL_MAXLENGTH", $maxlength);
 
  254        if ($this->preview_mode) {
 
  255            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  257        $this->tpl->parseCurrentBlock();
 
  259        return $this->tpl->get();
 
  264        $this->tpl->setCurrentBlock(
"clozequestion");
 
  265        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  266        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  267        if ($this->preview_mode) {
 
  268            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  270        $this->tpl->parseCurrentBlock();
 
  272        return $this->tpl->get();
 
  277        $this->tpl->setCurrentBlock(
"longmenu");
 
  278        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  279        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  280        if ($this->preview_mode) {
 
  281            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  283        $this->tpl->parseCurrentBlock();
 
  285        return $this->tpl->get();
 
  290        $this->tpl->setCurrentBlock(
"orderingquestion");
 
  291        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  292        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  293        if ($this->preview_mode) {
 
  294            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  296        if ($this->q_gui->object->getOrderingType() == 
OQ_PICTURES) {
 
  297            $this->tpl->setVariable(
"VAL_SUBTYPE", 
"_images");
 
  298            $this->tpl->setVariable(
 
  300                "ilias.questions.handleOrderingImages(" . $this->json_decoded->id . 
");" 
  303            foreach ($this->json_decoded->answers as $answer) {
 
  304                if ($answer->answertext != 
"") {
 
  305                    array_push(self::$media_files, $this->q_gui->object->getImagePath() . $answer->answertext);
 
  306                    array_push(self::$media_files, $this->q_gui->object->getImagePath() . 
"thumb." . $answer->answertext);
 
  310            $this->tpl->setVariable(
"VAL_SUBTYPE", 
"_terms");
 
  312        $this->tpl->parseCurrentBlock();
 
  314        return $this->tpl->get();
 
  319        $this->tpl->setCurrentBlock(
"matchingquestion");
 
  320        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  321        $this->tpl->setVariable(
"BTN_LABEL_RESET", $this->lng->txt(
"reset_terms"));
 
  322        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  323        if ($this->preview_mode) {
 
  324            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  326        $this->tpl->parseCurrentBlock();
 
  328        return $this->tpl->get();
 
  333        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  334        array_push(self::$media_files, $this->q_gui->object->getImagePath() . $this->q_gui->object->getImageFilename());
 
  335        $this->tpl->setCurrentBlock(
"mapareas");
 
  336        $areas = $this->json_decoded->answers;
 
  338        foreach ($areas as $area) {
 
  339            $this->tpl->setVariable(
"VAL_TOOLTIP", htmlspecialchars($area->answertext));
 
  340            $this->tpl->setVariable(
"VAL_COORDS", $area->coords);
 
  341            $this->tpl->setVariable(
"VAL_ORDER", $area->order);
 
  342            $this->tpl->setVariable(
"VAL_AREA", $area->area);
 
  343            $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  344            $this->tpl->parseCurrentBlock();
 
  346        $this->tpl->setCurrentBlock(
"imagemapquestion");
 
  347        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  348        if ($this->preview_mode) {
 
  349            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  351        $this->tpl->parseCurrentBlock();
 
  353        return $this->tpl->get();
 
  358        $this->tpl->setCurrentBlock(
"textsubset");
 
  359        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  360        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  361        if ($this->preview_mode) {
 
  362            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  364        $this->tpl->parseCurrentBlock();
 
  366        return $this->tpl->get();
 
  371        $this->tpl->setCurrentBlock(
"orderinghorizontal");
 
  372        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  373        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  374        if ($this->preview_mode) {
 
  375            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  377        $this->tpl->parseCurrentBlock();
 
  379        return $this->tpl->get();
 
  384        $this->tpl->setCurrentBlock(
"errortext");
 
  385        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  386        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  387        if ($this->preview_mode) {
 
  388            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  390        $this->tpl->parseCurrentBlock();
 
  392        return $this->tpl->get();
 
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
const OQ_PICTURES
Ordering question constants.