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();
 
  174        $this->q_gui->populateJavascriptFilesRequiredForWorkForm($main_tpl);
 
  175        $main_tpl->addCss(
'Modules/Test/templates/default/ta.css');
 
  177        $this->tpl->setCurrentBlock(
"multiplechoice");
 
  178        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  179        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  180        if ($this->json_decoded->selection_limit) {
 
  181            $this->tpl->setVariable(
'SELECTION_LIMIT_HINT', sprintf(
 
  182                $this->lng->txt(
'ass_mc_sel_lim_hint'),
 
  183                $this->json_decoded->selection_limit,
 
  184                count($this->json_decoded->answers)
 
  187            $this->tpl->setVariable(
'SELECTION_LIMIT_VALUE', $this->json_decoded->selection_limit);
 
  189            $this->tpl->setVariable(
'SELECTION_LIMIT_VALUE', 
'null');
 
  191        if ($this->preview_mode) {
 
  192            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  194        if ($this->json_decoded->path) {
 
  195            $this->tpl->setVariable(
 
  197                "ilias.questions.handleMCImages(" . $this->json_decoded->id . 
");" 
  200        $this->tpl->parseCurrentBlock();
 
  201        foreach ($this->json_decoded->answers as $answer) {
 
  202            if ($answer->image != 
"") {
 
  203                array_push(self::$media_files, $this->q_gui->object->getImagePath() . $answer->image);
 
  204                array_push(self::$media_files, $this->q_gui->object->getImagePath() . 
"thumb." . $answer->image);
 
  208        return $this->tpl->get();
 
  215        $main_tpl = 
$DIC[
"tpl"];
 
  217        $main_tpl->addCss(
'Modules/Test/templates/default/ta.css');
 
  219        $this->tpl->setCurrentBlock(
"kprimchoice");
 
  221        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  222        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  224        if ($this->preview_mode) {
 
  225            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  228        if ($this->json_decoded->path) {
 
  229            $this->tpl->setVariable(
 
  231                "ilias.questions.handleKprimImages(" . $this->json_decoded->id . 
");" 
  235        $this->tpl->setVariable(
'OPTION_LABEL_TRUE', $this->json_decoded->trueOptionLabel);
 
  236        $this->tpl->setVariable(
'OPTION_LABEL_FALSE', $this->json_decoded->falseOptionLabel);
 
  238        $this->tpl->setVariable(
'VALUE_TRUE', 1);
 
  239        $this->tpl->setVariable(
'VALUE_FALSE', 0);
 
  241        $this->tpl->parseCurrentBlock();
 
  243        foreach ($this->json_decoded->answers as $answer) {
 
  244            if (is_object($answer->image)) {
 
  245                self::$media_files[] = $answer->getImageFsPath();
 
  246                self::$media_files[] = $answer->getThumbFsPath();
 
  247            } elseif (is_string($answer->image)) {
 
  248                self::$media_files[] = $this->q_gui->object->getImagePath() . $answer->image;
 
  249                if (is_file($this->q_gui->object->getImagePath() . 
"thumb." . $answer->image)) {
 
  250                    self::$media_files[] = $this->q_gui->object->getImagePath() . 
"thumb." . $answer->image;
 
  257        return $this->tpl->get();
 
  262        $maxlength = $this->json_decoded->maxlength == 0 ? 4096 : $this->json_decoded->maxlength;
 
  263        $this->tpl->setCurrentBlock(
"textquestion");
 
  264        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  265        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  266        $this->tpl->setVariable(
"VAL_MAXLENGTH", $maxlength);
 
  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(
"clozequestion");
 
  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(
"longmenu");
 
  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        $this->tpl->parseCurrentBlock();
 
  298        return $this->tpl->get();
 
  303        $this->tpl->setCurrentBlock(
"orderingquestion");
 
  304        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  305        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  306        if ($this->preview_mode) {
 
  307            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  309        if ($this->q_gui->object->getOrderingType() == 
OQ_PICTURES) {
 
  310            $this->tpl->setVariable(
"VAL_SUBTYPE", 
"_images");
 
  311            $this->tpl->setVariable(
 
  313                "ilias.questions.handleOrderingImages(" . $this->json_decoded->id . 
");" 
  316            foreach ($this->json_decoded->answers as $answer) {
 
  317                if ($answer->answertext != 
"") {
 
  318                    array_push(self::$media_files, $this->q_gui->object->getImagePath() . $answer->answertext);
 
  319                    array_push(self::$media_files, $this->q_gui->object->getImagePath() . 
"thumb." . $answer->answertext);
 
  323            $this->tpl->setVariable(
"VAL_SUBTYPE", 
"_terms");
 
  325        $this->tpl->parseCurrentBlock();
 
  327        return $this->tpl->get();
 
  333        $main_tpl = 
$DIC[
"tpl"];
 
  335        $main_tpl->addJavaScript(
'Modules/TestQuestionPool/js/ilMatchingQuestion.js');
 
  336        $main_tpl->addCss(
'Modules/TestQuestionPool/templates/default/test_javascript.css');
 
  337        $this->tpl->setCurrentBlock(
"matchingquestion");
 
  338        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  339        $this->tpl->setVariable(
"BTN_LABEL_RESET", $this->lng->txt(
"reset_terms"));
 
  340        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  341        if ($this->preview_mode) {
 
  342            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  344        $this->tpl->parseCurrentBlock();
 
  346        return $this->tpl->get();
 
  351        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  352        array_push(self::$media_files, $this->q_gui->object->getImagePath() . $this->q_gui->object->getImageFilename());
 
  353        $this->tpl->setCurrentBlock(
"mapareas");
 
  354        $areas = $this->json_decoded->answers;
 
  356        foreach ($areas as $area) {
 
  357            $this->tpl->setVariable(
"VAL_TOOLTIP", htmlspecialchars($area->answertext));
 
  358            $this->tpl->setVariable(
"VAL_COORDS", $area->coords);
 
  359            $this->tpl->setVariable(
"VAL_ORDER", $area->order);
 
  360            $this->tpl->setVariable(
"VAL_AREA", $area->area);
 
  361            $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  362            $this->tpl->parseCurrentBlock();
 
  364        $this->tpl->setCurrentBlock(
"imagemapquestion");
 
  365        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  366        if ($this->preview_mode) {
 
  367            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  369        $this->tpl->parseCurrentBlock();
 
  371        return $this->tpl->get();
 
  376        $maxlength = $this->json_decoded->maxlength == 0 ? 4096 : $this->json_decoded->maxlength;
 
  377        $this->tpl->setCurrentBlock(
"textsubset");
 
  378        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  379        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  380        if ($this->preview_mode) {
 
  381            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  383        $this->tpl->parseCurrentBlock();
 
  385        return $this->tpl->get();
 
  390        $this->tpl->setCurrentBlock(
"orderinghorizontal");
 
  391        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  392        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  393        if ($this->preview_mode) {
 
  394            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  396        $this->tpl->parseCurrentBlock();
 
  398        return $this->tpl->get();
 
  403        $this->tpl->setCurrentBlock(
"errortext");
 
  404        $this->tpl->setVariable(
"VAL_ID", $this->json_decoded->id);
 
  405        $this->tpl->setVariable(
"TXT_SUBMIT_ANSWERS", $this->lng->txt(
"cont_submit_answers"));
 
  406        if ($this->preview_mode) {
 
  407            $this->tpl->setVariable(
"VAL_NO_DISPLAY", 
"style=\"display:none\"");
 
  409        $this->tpl->parseCurrentBlock();
 
  411        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.
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.