34 require_once(
"./Services/UIComponent/Explorer/classes/class.ilExplorer.php");
35 require_once(
"./Modules/ScormAicc/classes/SCORM/class.ilSCORMTree.php");
55 parent::__construct($a_target);
56 $this->slm_obj = $a_slm_obj;
90 $ilias = $DIC[
'ilias'];
92 $tpl =
new ilTemplate(
"tpl.tree.html",
true,
true,
"Services/UIComponent/Explorer");
94 $tpl->setCurrentBlock(
"row");
95 $tpl->setVariable(
"TITLE",
$lng->txt(
"cont_manifest"));
96 $tpl->setVariable(
"LINK_TARGET", $this->target .
"&" . $this->target_get .
"=" . $a_obj_id);
97 $tpl->setVariable(
"TARGET",
" target=\"" . $this->frame_target .
"\"");
98 $tpl->parseCurrentBlock();
100 $this->output[] =
$tpl->get();
119 return $_SERVER[
"PATH_INFO"] .
"?cmd=explorer&ref_id=" . $this->slm_obj->getRefId() .
"&scexpand=" . $a_child;
126 public function setOutput($parent_id, $a_depth = 1, $a_obj_id = 0, $a_highlighted_subtree =
false)
140 $types_do_not_display = array(
"sos",
"sma");
141 $types_do_not_load = array(
"srs");
143 if (!isset($a_parent_id)) {
144 $this->
ilias->raiseError(get_class($this) .
"::setOutput(): No node_id given!", $this->
ilias->error_obj->WARNING);
151 foreach ($this->tree->getChilds($a_parent_id, $this->order_column) as
$key => $child) {
152 if (in_array($child[
"c_type"], $types_do_not_load)) {
157 $option[
"parent"] = $child[
"parent"];
158 $option[
"id"] = $child[
"child"];
159 $option[
"title"] = $child[
"title"];
160 $option[
"c_type"] = $child[
"c_type"];
161 $option[
"obj_id"] = $child[
"obj_id"];
162 $option[
"desc"] =
"obj_" . $child[
"c_type"];
163 $option[
"container"] =
false;
164 $option[
"visible"] = !in_array($child[
"c_type"], $types_do_not_display);
215 if ($option[
"visible"]) {
216 $tpl =
new ilTemplate(
"tpl.sahs_tree_ul.html",
true,
true,
"Modules/ScormAicc");
219 $tpl =
new ilTemplate(
"tpl.sahs_tree_free.html",
true,
true,
"Modules/ScormAicc");
222 if (is_array($option[
"childs"]) && count($option[
"childs"])) {
223 foreach ($option[
"childs"] as
$key => $ch_option) {
224 $tpl->setCurrentBlock(
"childs");
225 $tpl->setVariable(
"CHILDS", $this->
createOutput($ch_option, $jsApi)->
get());
226 $tpl->parseCurrentBlock();
246 if (is_object($a_obj)) {
251 if ($sc_object->getIdentifierRef() !=
"") {
269 if (!is_array($option) || !isset($option[
"id"])) {
270 $this->
ilias->raiseError(get_class($this) .
"::insertObject(): Missing parameter or wrong datatype! " .
271 "options:" . var_dump($option), $this->
ilias->error_obj->WARNING);
276 $id_ref = $sc_object->getIdentifierRef();
285 $clickable = $this->
isClickable($option[
"c_type"], $option[
"id"], $sc_object);
287 if ($this->output_icons && $clickable) {
293 $frame_target = $this->
buildFrameTarget($option[
"c_type"], $option[
"id"], $option[
"obj_id"]);
294 if ($frame_target !=
"") {
296 $tpl->
setVariable(
"LINK_TARGET",
"javascript:void(0);");
297 if ($jsApi ==
true) {
298 $tpl->
setVariable(
"ONCLICK",
" onclick=\"parent.API.IliasLaunch('" . $option[
"id"] .
"');return false;\"");
300 $tpl->
setVariable(
"ONCLICK",
" onclick=\"parent.APIFRAME.setupApi();parent.APIFRAME.API." 301 . ($scormtype ==
'asset' ?
'IliasLaunchAsset' :
'IliasLaunchSahs')
302 .
"('" . $option[
"id"] .
"');return false;\"");
331 $tpl->setCurrentBlock(
"icon");
333 if ($scormtype ==
'asset') {
335 $tpl->setVariable(
'TXT_ALT_IMG',
'');
336 $tpl->parseCurrentBlock();
343 $this->slm_obj->getId()
347 $status = ($trdata[
"cmi.core.lesson_status"] ==
"")
349 : $trdata[
"cmi.core.lesson_status"];
351 $statusChar = strtolower(substr($status, 0, 1));
352 if ($statusChar ==
"f") {
354 } elseif ($statusChar ==
"b") {
356 } elseif ($statusChar ==
"c") {
357 $status =
"completed";
358 } elseif ($statusChar ==
"n") {
359 $status =
"not_attempted";
360 } elseif ($statusChar ==
"p") {
362 } elseif ($statusChar ==
"r") {
366 $alt =
$lng->txt(
"cont_status") .
": " .
367 $lng->txt(
"cont_sc_stat_" . str_replace(
" ",
"_", $status));
370 if ($trdata[
"cmi.core.score.raw"] !=
"") {
371 $alt .=
", " .
$lng->txt(
"cont_credits") .
372 ": " . $trdata[
"cmi.core.score.raw"];
376 if ($trdata[
"cmi.core.total_time"] !=
"" &&
377 $trdata[
"cmi.core.total_time"] !=
"0000:00:00.00") {
378 $alt .=
", " .
$lng->txt(
"cont_total_time") .
379 ": " . $trdata[
"cmi.core.total_time"];
382 $tpl->setVariable(
"ICON_NAME",
'scoIcon' . $a_node_id);
384 $tpl->setVariable(
"TXT_ALT_IMG", $alt);
385 $tpl->parseCurrentBlock();
if((!isset($_SERVER['DOCUMENT_ROOT'])) OR(empty($_SERVER['DOCUMENT_ROOT']))) $_SERVER['DOCUMENT_ROOT']
static shortenText( $a_str, $a_len, $a_dots=false, $a_next_blank=false, $a_keep_extension=false)
shorten a string to given length.
buildFrameTarget($a_type, $a_child=0, $a_obj_id=0)
get frame target (may be overwritten by derived classes)
createTarget($a_type, $a_child, $a_highlighted_subtree=false, $a_append_anch=true)
Creates Get Parameter private.
insertObject($option, ilTemplate $tpl, $jsApi)
insert the option data in $tpl
getOutput($jsApi=false)
Creates output template.
checkPermissions($a_check)
check permissions via rbac
getOutputIcons(&$tpl, $a_option, $a_node_id, $scormtype="sco")
tpl is filled with option state
setOrderColumn($a_column)
set the order column public
static _lookupIdByIdRef($a_id_ref, $a_slm_id)
static _lookupScormType($a_obj_id)
createOutputArray($a_parent_id, $options=array())
recursivi creating of outputs
setVariable($variable, $value='')
Sets a variable value.
setOutput($parent_id, $a_depth=1, $a_obj_id=0, $a_highlighted_subtree=false)
possible output array is set
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
special template class to simplify handling of ITX/PEAR
showChilds($a_parent_id)
determines wether the childs of an object should be shown or not note: this standard implementation a...
redirection script todo: (a better solution should control the processing via a xml file) ...
Explorer View for SCORM Learning Modules.
isClickable($a_type, $a_id=0, $a_obj=0)
can i click on the module name
isVisible($a_id, $a_type)
Class ilExplorer class for explorer view in admin frame.
setCurrentBlock($part="DEFAULT")
Überladene Funktion, die sich hier lokal noch den aktuellen Block merkt.
createOutput($option, $jsApi)
recursive creation of output templates
__construct($a_target, &$a_slm_obj)
Constructor public.
static _lookupTrackingDataOfUser($a_item_id, $a_user_id=0, $a_obj_id=0)
outputIcons($a_icons)
output icons
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt public...
formatHeader($tpl, $a_obj_id, $a_option)
overwritten method from base class public
readRootId()
read root id from database