5 require_once(
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php");
44 $ilDB = $DIC->database();
45 $lng = $DIC->language();
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();
115 return self::$media_files;
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();
Scorm 2004 Question Exporter.
static _extractInstOfTarget($a_target)
Extract installation id out of target.
static _extractObjIdOfTarget($a_target)
Extract object id out of target.
exportQuestion($a_ref_id, $a_image_path=null, $a_output_mode="presentation")
const OQ_PICTURES
Ordering question constants.
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...
__construct($a_preview_mode=false)
Constructor public.
static questionsJS(array $a_qids=null)