00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00038 include_once './course/classes/Event/class.ilEvent.php';
00039
00040 class ilCourseContentGUI
00041 {
00042 var $container_gui;
00043 var $container_obj;
00044 var $course_obj;
00045
00046 var $tpl;
00047 var $ctrl;
00048 var $lng;
00049 var $tabs_gui;
00050
00055 function ilCourseContentGUI(&$container_gui_obj)
00056 {
00057 global $tpl,$ilCtrl,$lng,$ilObjDataCache,$ilTabs;
00058
00059 $this->tpl =& $tpl;
00060 $this->ctrl =& $ilCtrl;
00061 $this->lng =& $lng;
00062 $this->lng->loadLanguageModule('crs');
00063 $this->tabs_gui =& $ilTabs;
00064
00065 $this->container_gui =& $container_gui_obj;
00066 $this->container_obj =& $this->container_gui->object;
00067
00068
00069 $this->__initCourseObject();
00070 }
00071
00072 function &executeCommand()
00073 {
00074 global $ilAccess,$ilErr;
00075
00076 if(!$ilAccess->checkAccess('read','',$this->container_obj->getRefId()))
00077 {
00078 $ilErr->raiseError($this->lng->txt('msg_no_perm_read'),$ilErr->WARNING);
00079 }
00080
00081 $this->__setSubTabs();
00082 $this->tabs_gui->setTabActive('view_content');
00083 $cmd = $this->ctrl->getCmd();
00084
00085 switch($this->ctrl->getNextClass($this))
00086 {
00087 case 'ilcourseitemadministrationgui':
00088 include_once 'course/classes/class.ilCourseItemAdministrationGUI.php';
00089
00090 $this->ctrl->setReturn($this,'');
00091 $item_adm_gui = new ilCourseItemAdministrationGUI($this->container_obj,(int) $_GET['item_id']);
00092 $this->ctrl->forwardCommand($item_adm_gui);
00093 break;
00094
00095 case 'ilcoursearchivesgui':
00096 $this->__forwardToArchivesGUI();
00097 break;
00098
00099 case 'ilcourseobjectivepresentationgui':
00100 $this->__forwardToObjectivePresentation();
00101 break;
00102
00103 case 'ileventadministrationgui':
00104 include_once 'course/classes/Event/class.ilEventAdministrationGUI.php';
00105
00106 $this->ctrl->setReturn($this,'');
00107 $event_gui = new ilEventAdministrationGUI($this->container_gui,(int) $_GET['event_id']);
00108 $this->ctrl->forwardCommand($event_gui);
00109 break;
00110
00111 default:
00112 if(!$this->__checkStartObjects())
00113 {
00114 $this->showStartObjects();
00115 break;
00116 }
00117
00118
00119 if(!$this->is_tutor = $ilAccess->checkAccess('write','',$this->course_obj->getRefId()) and
00120 $this->course_obj->isArchived())
00121 {
00122 $this->__forwardToArchivesGUI();
00123 break;
00124 }
00125
00126 if(!$this->is_tutor and
00127 $this->container_obj->getType() == 'crs' and
00128 $this->container_obj->enabledObjectiveView())
00129 {
00130 $this->__forwardToObjectivePresentation();
00131 break;
00132 }
00133
00134
00135 if(!$cmd)
00136 {
00137 $cmd = $this->__getDefaultCommand();
00138 }
00139 $this->$cmd();
00140 break;
00141 }
00142 }
00143
00144 function __getDefaultCommand()
00145 {
00146 global $ilAccess;
00147
00148
00149 if($_SESSION['crs_timings_panel'][$this->course_obj->getId()])
00150 {
00151 return 'editTimings';
00152 }
00153 if($ilAccess->checkAccess('write','',$this->container_obj->getRefId()))
00154 {
00155 return 'view';
00156 }
00157 if($this->container_obj->getType() == 'crs' and
00158 $this->course_obj->getViewMode() == IL_CRS_VIEW_TIMING)
00159 {
00160 return 'editUserTimings';
00161 }
00162 return 'view';
00163 }
00164
00165 function __forwardToObjectivePresentation()
00166 {
00167 include_once 'course/classes/class.ilCourseObjectivePresentationGUI.php';
00168
00169 $this->ctrl->setReturn($this,'');
00170 $objectives_gui = new ilCourseObjectivePresentationGUI($this->container_gui);
00171 $this->ctrl->forwardCommand($objectives_gui);
00172
00173 $this->tabs_gui->setTabActive('view_content');
00174 $this->tabs_gui->setSubTabActive('learners_view');
00175
00176 return true;
00177 }
00178
00179 function __forwardToArchivesGUI()
00180 {
00181 include_once 'course/classes/class.ilCourseArchivesGUI.php';
00182
00183 $this->ctrl->setReturn($this,'');
00184 $archives_gui = new ilCourseArchivesGUI($this->container_gui);
00185 $this->ctrl->forwardCommand($archives_gui);
00186
00187 $this->tabs_gui->setTabActive('view_content');
00188 $this->tabs_gui->setSubTabActive('crs_archives');
00189
00190 return true;
00191 }
00192
00193 function __checkStartObjects()
00194 {
00195 include_once './course/classes/class.ilCourseStart.php';
00196
00197 global $ilAccess,$ilUser;
00198
00199 if($ilAccess->checkAccess('write','',$this->course_obj->getRefId()))
00200 {
00201 return true;
00202 }
00203 $this->start_obj = new ilCourseStart($this->course_obj->getRefId(),$this->course_obj->getId());
00204 if(count($this->start_obj->getStartObjects()) and !$this->start_obj->allFullfilled($ilUser->getId()))
00205 {
00206 return false;
00207 }
00208 return true;
00209 }
00210
00211 function showStartObjects()
00212 {
00213 include_once './course/classes/class.ilCourseLMHistory.php';
00214 include_once './classes/class.ilRepositoryExplorer.php';
00215 include_once './classes/class.ilLink.php';
00216
00217 global $rbacsystem,$ilias,$ilUser,$ilAccess,$ilObjDataCache;
00218
00219 $this->tabs_gui->setSubTabActive('crs_content');
00220
00221 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_start_view.html","course");
00222 $this->tpl->setVariable("INFO_STRING",$this->lng->txt('crs_info_start'));
00223 $this->tpl->setVariable("TBL_TITLE_START",$this->lng->txt('crs_table_start_objects'));
00224 $this->tpl->setVariable("HEADER_NR",$this->lng->txt('crs_nr'));
00225 $this->tpl->setVariable("HEADER_DESC",$this->lng->txt('description'));
00226 $this->tpl->setVariable("HEADER_EDITED",$this->lng->txt('crs_objective_accomplished'));
00227
00228
00229 $lm_continue =& new ilCourseLMHistory($this->course_obj->getRefId(),$ilUser->getId());
00230 $continue_data = $lm_continue->getLMHistory();
00231
00232 $counter = 0;
00233 foreach($this->start_obj->getStartObjects() as $start)
00234 {
00235 $obj_id = $ilObjDataCache->lookupObjId($start['item_ref_id']);
00236 $ref_id = $start['item_ref_id'];
00237 $type = $ilObjDataCache->lookupType($obj_id);
00238
00239 $conditions_ok = ilConditionHandler::_checkAllConditionsOfTarget($obj_id);
00240
00241 $obj_link = ilLink::_getLink($ref_id,$type);
00242 $obj_frame = ilRepositoryExplorer::buildFrameTarget($type,$ref_id,$obj_id);
00243 $obj_frame = $obj_frame ? $obj_frame : '';
00244
00245
00246 $obj_frame = $type == 'tst' ? '' : $obj_frame;
00247
00248 $contentObj = false;
00249
00250 if($ilAccess->checkAccess('read','',$ref_id))
00251 {
00252 $this->tpl->setCurrentBlock("start_read");
00253 $this->tpl->setVariable("READ_TITLE_START",$ilObjDataCache->lookupTitle($obj_id));
00254 $this->tpl->setVariable("READ_TARGET_START",$obj_frame);
00255 $this->tpl->setVariable("READ_LINK_START", $obj_link.'&crs_show_result='.$this->course_obj->getRefId());
00256 $this->tpl->parseCurrentBlock();
00257 }
00258 else
00259 {
00260 $this->tpl->setCurrentBlock("start_visible");
00261 $this->tpl->setVariable("VISIBLE_LINK_START",$ilObjDataCache->lookupTitle($obj_id));
00262 $this->tpl->parseCurrentBlock();
00263 }
00264
00265
00266 if(isset($continue_data[$ref_id]))
00267 {
00268 $this->tpl->setCurrentBlock("link");
00269 $this->tpl->setVariable("LINK_HREF",ilLink::_getLink($ref_id,'',array('obj_id',
00270 $continue_data[$ref_id]['lm_page_id'])));
00271 #$this->tpl->setVariable("CONTINUE_LINK_TARGET",$target);
00272 $this->tpl->setVariable("LINK_NAME",$this->lng->txt('continue_work'));
00273 $this->tpl->parseCurrentBlock();
00274 }
00275
00276
00277 if(!$ilUser->isDesktopItem($ref_id,$type) and
00278 $this->course_obj->getAboStatus())
00279 {
00280 if ($ilAccess->checkAccess('read','',$ref_id))
00281 {
00282 $this->tpl->setCurrentBlock("link");
00283 $this->ctrl->setParameterByClass(get_class($this->container_gui),'item_ref_id',$ref_id);
00284 $this->ctrl->setParameterByClass(get_class($this->container_gui),'item_id',$ref_id);
00285 $this->ctrl->setParameterByClass(get_class($this->container_gui),'type',$type);
00286
00287 $this->tpl->setVariable("LINK_HREF",$this->ctrl->getLinkTarget($this->container_gui,'addToDesk'));
00288 $this->tpl->setVariable("LINK_NAME", $this->lng->txt("to_desktop"));
00289 $this->tpl->parseCurrentBlock();
00290 }
00291 }
00292 elseif($this->course_obj->getAboStatus())
00293 {
00294 $this->tpl->setCurrentBlock("link");
00295 $this->ctrl->setParameterByClass(get_class($this->container_gui),'item_ref_id',$ref_id);
00296 $this->ctrl->setParameterByClass(get_class($this->container_gui),'item_id',$ref_id);
00297 $this->ctrl->setParameterByClass(get_class($this->container_gui),'type',$type);
00298
00299 $this->tpl->setVariable("LINK_HREF",$this->ctrl->getLinkTarget($this->container_gui,'removeFromDesk'));
00300 $this->tpl->setVariable("LINK_NAME", $this->lng->txt("unsubscribe"));
00301 $this->tpl->parseCurrentBlock();
00302 }
00303
00304
00305
00306 if(strlen($ilObjDataCache->lookupDescription($obj_id)))
00307 {
00308 $this->tpl->setCurrentBlock("start_description");
00309 $this->tpl->setVariable("DESCRIPTION_START",$ilObjDataCache->lookupDescription($obj_id));
00310 $this->tpl->parseCurrentBlock();
00311 }
00312
00313
00314 if($this->start_obj->isFullfilled($ilUser->getId(),$ref_id))
00315 {
00316 $accomplished = 'accomplished';
00317 }
00318 else
00319 {
00320 $accomplished = 'not_accomplished';
00321 }
00322 $this->tpl->setCurrentBlock("start_row");
00323 $this->tpl->setVariable("EDITED_IMG",ilUtil::getImagePath('crs_'.$accomplished.'.gif'));
00324 $this->tpl->setVariable("EDITED_ALT",$this->lng->txt('crs_objective_'.$accomplished));
00325 $this->tpl->setVariable("ROW_CLASS",'option_value');
00326 $this->tpl->setVariable("ROW_CLASS_CENTER",'option_value_center');
00327 $this->tpl->setVariable("OBJ_NR_START",++$counter.'.');
00328 $this->tpl->parseCurrentBlock();
00329 }
00330 return true;
00331 }
00332
00333
00334
00335
00336 function view()
00337 {
00338 if($_SESSION['crs_timings_panel'][$this->course_obj->getId()])
00339 {
00340 return $this->editTimings();
00341 }
00342
00343 global $rbacsystem;
00344
00345 include_once './classes/class.ilObjectListGUIFactory.php';
00346 include_once './course/classes/Event/class.ilEvent.php';
00347
00348 $this->tabs_gui->setSubTabActive('crs_content');
00349
00350 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.container_page.html");
00351
00352 $this->container_gui->showPossibleSubObjects();
00353
00354
00355 $this->__showFeedBack();
00356
00357
00358 $this->__showEvents();
00359
00360
00361 $this->__showMaterials();
00362 }
00363
00364
00365 function __showEvents()
00366 {
00367 global $ilUser;
00368
00369 include_once 'course/classes/Event/class.ilEventItems.php';
00370 include_once 'course/classes/Event/class.ilEventParticipants.php';
00371
00372 $this->course_obj->initCourseItemObject($this->container_obj->getRefId());
00373
00374 if(!count($event_objs = ilEvent::_getEvents($this->container_obj->getId())))
00375 {
00376 return true;
00377 }
00378
00379 $tpl =& new ilTemplate("tpl.table.html", true, true);
00380 $tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.event_row.html","course");
00381
00382 $counter = 0;
00383 foreach($event_objs as $event_obj)
00384 {
00385 $appointment_obj =& $event_obj->getFirstAppointment();
00386
00387
00388 if($event_obj->enabledRegistration() and ilEventParticipants::_isRegistered($ilUser->getId(),$event_obj->getEventId()))
00389 {
00390 $tpl->setCurrentBlock("event_commands");
00391 $this->ctrl->setParameterByClass('ileventadministrationgui','event_id',$event_obj->getEventId());
00392 $tpl->setVariable("EVENT_LINK",$this->ctrl->getLinkTargetByClass('ileventadministrationgui','unregister'));
00393 $tpl->setVariable("EVENT_LINK_TXT",$this->lng->txt('event_unregister'));
00394 $tpl->parseCurrentBlock();
00395 }
00396 elseif($event_obj->enabledRegistration())
00397 {
00398 $tpl->setCurrentBlock("event_commands");
00399 $this->ctrl->setParameterByClass('ileventadministrationgui','event_id',$event_obj->getEventId());
00400 $tpl->setVariable("EVENT_LINK",$this->ctrl->getLinkTargetByClass('ileventadministrationgui','register'));
00401 $tpl->setVariable("EVENT_LINK_TXT",$this->lng->txt('event_register'));
00402 $tpl->parseCurrentBlock();
00403 }
00404 if($this->is_tutor)
00405 {
00406
00407 $tpl->setCurrentBlock("event_commands");
00408 $this->ctrl->setParameterByClass('ileventadministrationgui','event_id',$event_obj->getEventId());
00409 $tpl->setVariable("EVENT_LINK",$this->ctrl->getLinkTargetByClass('ileventadministrationgui','edit'));
00410 $tpl->setVariable("EVENT_LINK_TXT",$this->lng->txt('edit'));
00411 $tpl->parseCurrentBlock();
00412
00413
00414 $tpl->setCurrentBlock("event_commands");
00415 $tpl->setVariable("EVENT_LINK",$this->ctrl->getLinkTargetByClass('ileventadministrationgui','editMembers'));
00416 $tpl->setVariable("EVENT_LINK_TXT",$this->lng->txt('event_edit_members'));
00417 $tpl->parseCurrentBlock();
00418
00419
00420 $tpl->setCurrentBlock("event_commands");
00421 $tpl->setVariable("EVENT_LINK",$this->ctrl->getLinkTargetByClass('ileventadministrationgui','materials'));
00422 $tpl->setVariable("EVENT_LINK_TXT",$this->lng->txt('event_assign_materials'));
00423 $tpl->parseCurrentBlock();
00424
00425
00426 $tpl->setCurrentBlock("event_commands");
00427 $tpl->setVariable("EVENT_LINK",$this->ctrl->getLinkTargetByClass('ileventadministrationgui','confirmDelete'));
00428 $tpl->setVariable("EVENT_LINK_TXT",$this->lng->txt('delete'));
00429 $tpl->parseCurrentBlock();
00430 }
00431
00432
00433
00434 $event_items = $this->course_obj->items_obj->getItemsByEvent($event_obj->getEventId());
00435 foreach ($event_items as $cont_data)
00436 {
00437 if($cont_data["child"] <= 0)
00438 {
00439 continue;
00440 }
00441
00442 if(strlen($html = $this->__getItemHTML($cont_data,true)))
00443 {
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460 if ($this->container_gui->isActiveAdministrationPanel())
00461 {
00462 $tpl->setCurrentBlock("block_row_check");
00463 $tpl->setVariable("ITEM_ID", $cont_data['ref_id']);
00464 $tpl->parseCurrentBlock();
00465 }
00466
00467
00468 $tpl->setVariable("ITEM_HTML",$html);
00469 $tpl->setVariable("MATERIAL_ROWCOL", ilUtil::switchColor($counter,"tblrow1","tblrow2"));
00470 $tpl->setVariable("TYPE_IMG", ilUtil::getImagePath("icon_".$cont_data["type"].".gif"));
00471 $tpl->setVariable("ALT_IMG", $this->lng->txt("obj_".$cont_data["type"]));
00472 }
00473
00474 $tpl->setCurrentBlock("materials");
00475 $tpl->setVariable("ITEM_HTML",$html);
00476 $tpl->parseCurrentBlock();
00477 }
00478
00479 $tpl->setCurrentBlock("tbl_content");
00480 $tpl->setVariable("EVENT_ROWCOL",ilUtil::switchColor($counter,'tblrow1','tblrow2'));
00481 $tpl->setVariable("EVENT_IMG",ilUtil::getImagePath('icon_event.gif'));
00482 $tpl->setVariable("EVENT_ALT",$this->lng->txt('events'));
00483 $tpl->setVariable("EVENT_TITLE",$event_obj->getTitle());
00484
00485 $this->ctrl->setParameterByClass('ileventadministrationgui','event_id',$event_obj->getEventId());
00486 $tpl->setVariable("HREF_EVENT_TITLE",$this->ctrl->getLinkTargetByClass('ileventadministrationgui',
00487 'info'));
00488 if(strlen($desc = $event_obj->getDescription()))
00489 {
00490 $tpl->setVariable("EVENT_DESCRIPTION",$desc);
00491 }
00492 $tpl->setVariable("EVENT_TXT_DATE",$this->lng->txt('event_date'));
00493 $tpl->setVariable("EVENT_DATE",$appointment_obj->appointmentToString());
00494 $tpl->parseCurrentBlock();
00495
00496 $counter++;
00497 }
00498
00499
00500 include_once './classes/class.ilTableGUI.php';
00501 $tbl = new ilTableGUI();
00502 $tbl->setStyle('table','il_ContainerBlock');
00503
00504
00505 $tbl->setTitle($this->lng->txt("events"),"icon_crs.gif",$this->lng->txt("events"));
00506
00507 if($this->is_tutor)
00508 {
00509 $tbl->setHeaderNames(array($this->lng->txt("type"),$this->lng->txt("title"),
00510 ""));
00511 $tbl->setHeaderVars(array("type","title","options"),
00512 array("ref_id" => $this->course_obj->getRefId(),
00513 "cmdClass" => "ilobjcoursecontentgui",
00514 "cmdNode" => $_GET["cmdNode"]));
00515 $tbl->setColumnWidth(array("1px","100%","24px"));
00516 $tbl->disable("header");
00517 }
00518 else
00519 {
00520 $tbl->setHeaderNames(array($this->lng->txt("type"),$this->lng->txt("title")));
00521 $tbl->setHeaderVars(array("type","title"),
00522 array("ref_id" => $this->course_obj->getRefId(),
00523 "cmdClass" => "ilobjcoursecontentgui",
00524 "cmdNode" => $_GET["cmdNode"]));
00525 $tbl->setColumnWidth(array("1px",""));
00526 $tbl->disable("header");
00527 }
00528
00529
00530 $tbl->disable("footer");
00531 $tbl->disable('sort');
00532 $tbl->disable("form");
00533
00534
00535 $tbl->setTemplate($tpl);
00536 $tbl->render();
00537
00538 $this->tpl->setCurrentBlock("cont_page_content");
00539 $this->tpl->setVariable("CONTAINER_PAGE_CONTENT",$tpl->get());
00540 $this->tpl->parseCurrentBlock();
00541 }
00542
00543 function __showMaterials()
00544 {
00545 global $ilAccess;
00546 include_once 'course/classes/Event/class.ilEventItems.php';
00547
00548 $this->course_obj->initCourseItemObject($this->container_obj->getRefId());
00549 $this->cont_arr = $this->course_obj->items_obj->getFilteredItems($this->container_obj->getId());
00550
00551
00552 if(!count($this->cont_arr))
00553 {
00554 #sendInfo($this->lng->txt("crs_no_items_found"));
00555 $this->tpl->addBlockFile("CONTENT_TABLE", "content_tab", "tpl.container_page.html");
00556 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
00557 $this->tpl->setVariable("CONTAINER_PAGE_CONTENT", "");
00558 $this->container_gui->showAdministrationPanel($this->tpl);
00559 return true;
00560 }
00561
00562
00563 $tpl =& new ilTemplate("tpl.table.html", true, true);
00564 $tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.crs_content_row.html","course");
00565 $cont_num = count($this->cont_arr);
00566
00567 $this->container_gui->clearAdminCommandsDetermination();
00568
00569
00570
00571
00572 $num = 0;
00573 foreach ($this->cont_arr as $cont_data)
00574 {
00575 if(!$ilAccess->checkAccess('visible','',$cont_data['ref_id']))
00576 {
00577 continue;
00578 }
00579
00580 if($html = $this->__getItemHTML($cont_data))
00581 {
00582 foreach($this->__getOptions($cont_data,$num) as $key => $image)
00583 {
00584 $tpl->setCurrentBlock("img");
00585 $tpl->setVariable("IMG_TYPE",$image["gif"]);
00586 $tpl->setVariable("IMG_ALT",$image["lng"]);
00587 $tpl->setVariable("IMG_LINK",$image["lnk"]);
00588 $tpl->setVariable("IMG_TARGET",$image["tar"]);
00589 $tpl->parseCurrentBlock();
00590 }
00591
00592 $tpl->setCurrentBlock("options");
00593 $tpl->setVariable("OPT_ROWCOL", ilUtil::switchColor($num,"tblrow1","tblrow2"));
00594 $tpl->parseCurrentBlock();
00595
00596 if ($this->container_gui->isActiveAdministrationPanel())
00597 {
00598 $tpl->setCurrentBlock("block_row_check");
00599 $tpl->setVariable("ITEM_ID", $cont_data['ref_id']);
00600 $tpl->parseCurrentBlock();
00601 }
00602
00603
00604 $tpl->setVariable("ITEM_HTML",$html);
00605 $tpl->setVariable("ROWCOL", ilUtil::switchColor($num,"tblrow1","tblrow2"));
00606 $tpl->setVariable("TYPE_IMG", ilUtil::getImagePath("icon_".$cont_data["type"].".gif"));
00607 $tpl->setVariable("ALT_IMG", $this->lng->txt("obj_".$cont_data["type"]));
00608 $tpl->setCurrentBlock("tbl_content");
00609 $tpl->parseCurrentBlock();
00610
00611 }
00612 $num++;
00613 }
00614
00615
00616 include_once './classes/class.ilTableGUI.php';
00617 $tbl = new ilTableGUI();
00618 $tbl->setStyle('table','il_ContainerBlock');
00619
00620
00621 $tbl->setTitle($this->lng->txt("crs_content"),"icon_crs.gif",$this->lng->txt("courses"));
00622 $tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
00623
00624 if($this->is_tutor)
00625 {
00626 $tbl->setHeaderNames(array($this->lng->txt("type"),$this->lng->txt("title"),
00627 ""));
00628 $tbl->setHeaderVars(array("type","title","options"),
00629 array("ref_id" => $this->course_obj->getRefId(),
00630 "cmdClass" => "ilobjcoursecontentgui",
00631 "cmdNode" => $_GET["cmdNode"]));
00632 $tbl->setColumnWidth(array("1px","100%","24px"));
00633 $tbl->disable("header");
00634 }
00635 else
00636 {
00637 $tbl->setHeaderNames(array($this->lng->txt("type"),$this->lng->txt("title"),''));
00638 $tbl->setHeaderVars(array("type","title",'options'),
00639 array("ref_id" => $this->course_obj->getRefId(),
00640 "cmdClass" => "ilobjcoursecontentgui",
00641 "cmdNode" => $_GET["cmdNode"]));
00642 $tbl->setColumnWidth(array("1px",""));
00643 $tbl->disable("header");
00644 }
00645
00646
00647 $tbl->disable("footer");
00648 $tbl->disable('sort');
00649 $tbl->disable("form");
00650
00651
00652 $tbl->setTemplate($tpl);
00653 $tbl->render();
00654
00655 $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
00656 $this->tpl->setCurrentBlock("cont_page_content");
00657 $this->tpl->setVariable("CONTAINER_PAGE_CONTENT", $tpl->get());
00658 $this->tpl->parseCurrentBlock();
00659 $this->container_gui->showAdministrationPanel($this->tpl);
00660
00661 return true;
00662
00663 }
00664
00665 function editTimings()
00666 {
00667 global $ilAccess,$ilErr;
00668
00669 include_once 'Services/MetaData/classes/class.ilMDEducational.php';
00670 include_once 'classes/class.ilLink.php';
00671
00672 $this->lng->loadLanguageModule('meta');
00673
00674 if(!$ilAccess->checkAccess('write','',$this->container_obj->getRefId()))
00675 {
00676 $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->WARNING);
00677 }
00678 $this->__showTimingsPanel();
00679 $this->tabs_gui->setSubTabActive('timings_timings');
00680
00681 $this->course_obj->initCourseItemObject($this->container_obj->getRefId());
00682 $this->cont_arr = $this->course_obj->items_obj->getAllItems($this->container_obj->getId());
00683
00684 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.crs_edit_items.html','course');
00685 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00686 $this->tpl->setVariable("HEADER_IMG",ilUtil::getImagePath('icon_crs.gif'));
00687 $this->tpl->setVariable("HEADER_ALT",$this->lng->txt('crs_materials'));
00688 $this->tpl->setVariable("BLOCK_HEADER_CONTENT",$this->lng->txt('edit_timings_list'));
00689 $this->tpl->setVariable("TXT_TITLE",$this->lng->txt('title'));
00690
00691
00692 $this->tpl->setVariable("TXT_DURATION",$this->lng->txt('crs_timings_time_frame'));
00693 $this->tpl->setVariable("TXT_INFO_DURATION",$this->lng->txt('crs_timings_in_days'));
00694
00695 $this->tpl->setVariable("TXT_START_END",$this->lng->txt('crs_timings_short_start_end'));
00696 $this->tpl->setVariable("TXT_INFO_START_END",$this->lng->txt('crs_timings_start_end_info'));
00697
00698 $this->tpl->setVariable("TXT_CHANGEABLE",$this->lng->txt('crs_timings_short_changeable'));
00699
00700 $this->tpl->setVariable("TXT_INFO_LIMIT",$this->lng->txt('crs_timings_from_until'));
00701 $this->tpl->setVariable("TXT_LIMIT",$this->lng->txt('crs_timings_short_limit_start_end'));
00702 $this->tpl->setVariable("TXT_ACTIVE",$this->lng->txt('crs_timings_short_active'));
00703 $this->tpl->setVariable("TXT_INFO_ACTIVE",$this->lng->txt('crs_timings_info_active'));
00704
00705 $counter = 0;
00706 foreach($this->cont_arr as $item)
00707 {
00708 $item = $this->__loadFromPost($item);
00709 $item_prefix = "item[$item[ref_id]]";
00710 $item_change_prefix = "item_change[$item[ref_id]]";
00711 $item_active_prefix = "item_active[$item[ref_id]]";
00712
00713 if($item['type'] == 'grp' or
00714 $item['type'] == 'fold')
00715 {
00716 $this->tpl->setVariable("TITLE_LINK",ilLink::_getLink($item['ref_id'],$item['type']));
00717 $this->tpl->setVariable("TITLE_FRAME",ilFrameTargetInfo::_getFrame('MainContent',$item['type']));
00718 $this->tpl->setVariable("TITLE_LINK_NAME",$item['title']);
00719 }
00720 else
00721 {
00722 $this->tpl->setVariable("TITLE",$item['title']);
00723 }
00724
00725 if(strlen($item['description']))
00726 {
00727 $this->tpl->setCurrentBlock("item_description");
00728 $this->tpl->setVariable("DESC",$item['description']);
00729 $this->tpl->parseCurrentBlock();
00730 }
00731
00732 if($tlt = ilMDEducational::_getTypicalLearningTimeSeconds($item['obj_id']))
00733 {
00734 $this->tpl->setCurrentBlock("tlt");
00735 $this->tpl->setVariable("TXT_TLT",$this->lng->txt('meta_typical_learning_time'));
00736 $this->tpl->setVariable("TLT_VAL",ilFormat::_secondsToString($tlt));
00737 $this->tpl->parseCurrentBlock();
00738 }
00739
00740 $this->tpl->setCurrentBlock("container_standard_row");
00741
00742
00743 if(is_array($_POST['item']["$item[ref_id]"]['sug_start']))
00744 {
00745 $start = $this->__toUnix($_POST['item']["$item[ref_id]"]['sug_start']);
00746 }
00747 else
00748 {
00749 $start = $item['suggestion_start'];
00750 }
00751 $end = $item['suggestion_end'];
00752 $date = $this->__prepareDateSelect($start);
00753 $this->tpl->setVariable("SUG_START",
00754 ilUtil::makeDateSelect($item_prefix."[sug_start]",
00755 $date['y'],$date['m'],$date['d'],date('Y',time()),false));
00756
00757 $this->tpl->setVariable("NAME_DURATION_A",$item_prefix."[duration_a]");
00758 if(isset($_POST['item']["$item[ref_id]"]['duration_a']))
00759 {
00760 $this->tpl->setVariable("VAL_DURATION_A",abs($_POST['item']["$item[ref_id]"]['duration_a']));
00761 }
00762 else
00763 {
00764 $this->tpl->setVariable("VAL_DURATION_A",intval(($end-$start)/(60*60*24)));
00765 }
00766
00767 $this->tpl->setVariable("SUG_END",ilFormat::formatUnixTime($item['suggestion_end']));
00768
00769
00770 if(is_array($_POST['item']["$item[ref_id]"]['lim_end']))
00771 {
00772 $end = $this->__toUnix($_POST['item']["$item[ref_id]"]['lim_end']);
00773 }
00774 else
00775 {
00776 $end = $item['latest_end'];
00777 }
00778
00779 $date = $this->__prepareDateSelect($end);
00780 $this->tpl->setVariable("LIM_END",
00781 ilUtil::makeDateSelect($item_prefix."[lim_end]",
00782 $date['y'],$date['m'],$date['d'],date('Y',time()),false));
00783
00784 $this->tpl->setVariable("NAME_CHANGE",$item_change_prefix."[change]");
00785 $this->tpl->setVariable("NAME_ACTIVE",$item_active_prefix."[active]");
00786
00787 if(isset($_POST['item']))
00788 {
00789 $change = $_POST['item_change']["$item[ref_id]"]['change'];
00790 $active = $_POST['item_active']["$item[ref_id]"]['active'];
00791 }
00792 else
00793 {
00794 $change = $item['changeable'];
00795 $active = ($item['timing_type'] == IL_CRS_TIMINGS_PRESETTING);
00796 }
00797
00798 $this->tpl->setVariable("CHECKED_ACTIVE",$active ? 'checked="checked"' : '');
00799 $this->tpl->setVariable("CHECKED_CHANGE",$change ? 'checked="checked"' : '');
00800
00801 if(isset($this->failed["$item[ref_id]"]))
00802 {
00803 $this->tpl->setVariable("ROWCLASS",'tblrowmarked');
00804 }
00805 else
00806 {
00807 $this->tpl->setVariable("ROWCLASS",ilUtil::switchColor($counter++,'tblrow1','tblrow2'));
00808 }
00809 $this->tpl->parseCurrentBlock();
00810 }
00811
00812
00813 $this->tpl->setVariable("CHECKCLASS",ilUtil::switchColor($counter++,'tblrow1','tblrow2'));
00814 $this->tpl->setVariable("SELECT_ALL",$this->lng->txt('select_all'));
00815
00816 $this->tpl->setVariable("BTN_SAVE",$this->lng->txt('save'));
00817 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt('cancel'));
00818
00819 }
00820
00821 function __showUserAcceptanceTable()
00822 {
00823 global $ilUser;
00824
00825 include_once 'course/classes/Timings/class.ilTimingAccepted.php';
00826 $accept_obj = new ilTimingAccepted($this->course_obj->getId(),$ilUser->getId());
00827
00828 $this->tpl->setVariable("REMARK",$accept_obj->getRemark());
00829 $this->tpl->setVariable("ACCEPT_CHECKED",$accept_obj->isAccepted() ? 'checked="checked"' : '');
00830 $this->tpl->setVariable("TUTOR_CHECKED",$accept_obj->isVisible() ? 'checked="checked"' : '');
00831
00832 $this->tpl->setVariable("TIMING_ACCEPT",$this->lng->txt('timing_accept_table'));
00833 $this->tpl->setVariable("TXT_ACCEPT",$this->lng->txt('timing_user_accept'));
00834 $this->tpl->setVariable("TXT_REMARK",$this->lng->txt('timing_remark'));
00835 $this->tpl->setVariable("TXT_TUTOR",$this->lng->txt('timing_tutor_visible'));
00836 $this->tpl->setVariable("TXT_BTN_UPDATE",$this->lng->txt('save'));
00837 }
00838 function saveAcceptance()
00839 {
00840 global $ilUser;
00841
00842 include_once 'course/classes/Timings/class.ilTimingAccepted.php';
00843 $accept_obj = new ilTimingAccepted($this->course_obj->getId(),$ilUser->getId());
00844
00845 $accept_obj->setRemark(ilUtil::stripSlashes($_POST['remark']));
00846 $accept_obj->accept($_POST['accepted']);
00847 $accept_obj->setVisible($_POST['tutor']);
00848 $accept_obj->update();
00849 sendInfo($this->lng->txt('settings_saved'));
00850 $this->editUserTimings();
00851 }
00852
00853 function editUserTimings()
00854 {
00855 if($_SESSION['crs_timings_panel'][$this->course_obj->getId()])
00856 {
00857 return $this->editTimings();
00858 }
00859 global $ilAccess,$ilErr;
00860
00861 if(!$ilAccess->checkAccess('read','',$this->container_obj->getRefId()))
00862 {
00863 $ilErr->raiseError($this->lng->txt('msg_no_perm_read'),$ilErr->WARNING);
00864 }
00865 $this->tabs_gui->setSubTabActive('timings_timings');
00866
00867 $_SESSION['crs_timings_user_hidden'] = isset($_GET['show_details']) ? $_GET['show_details'] : $_SESSION['crs_timings_user_hidden'];
00868
00869 include_once 'course/classes/class.ilCourseItems.php';
00870 if(ilCourseItems::_hasChangeableTimings($this->course_obj->getRefId()))
00871 {
00872 $this->__editAdvancedUserTimings();
00873 }
00874 else
00875 {
00876 $this->__editUserTimings();
00877 }
00878 }
00879
00880 function returnToMembers()
00881 {
00882 $this->ctrl->returnToParent($this);
00883 }
00884
00885 function showUserTimings()
00886 {
00887 global $ilObjDataCache;
00888
00889 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.crs_user_timings.html','course');
00890 $this->tabs_gui->clearSubTabs();
00891 $this->tabs_gui->setTabActive('members');
00892
00893 if(!$_GET['member_id'])
00894 {
00895 sendInfo($this->lng->txt('no_checkbox'),true);
00896 $this->ctrl->returnToParent($this);
00897 }
00898
00899
00900
00901 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00902 $this->tpl->setCurrentBlock("btn_cell");
00903 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTarget($this,'returnToMembers'));
00904 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("back"));
00905 $this->tpl->parseCurrentBlock();
00906
00907 include_once 'course/classes/Timings/class.ilTimingAccepted.php';
00908 $usr_accepted = new ilTimingAccepted($this->course_obj->getId(),(int) $_GET['member_id']);
00909
00910 if($usr_accepted->isAccepted())
00911 {
00912 $this->tpl->setVariable("ACC_IMG",ilUtil::getImagePath('icon_ok.gif'));
00913 $this->tpl->setVariable("ACC_ALT",$this->lng->txt('timing_accepted'));
00914 }
00915 else
00916 {
00917 $this->tpl->setVariable("ACC_IMG",ilUtil::getImagePath('icon_not_ok.gif'));
00918 $this->tpl->setVariable("ACC_ALT",$this->lng->txt('timing_not_accepted'));
00919 }
00920 if($usr_accepted->isVisible() and strlen($usr_accepted->getRemark()))
00921 {
00922 $this->tpl->setVariable("REMARK",nl2br($usr_accepted->getRemark()));
00923 }
00924 else
00925 {
00926 $this->tpl->setVariable("REMARK",$this->lng->txt('not_available'));
00927 }
00928
00929 $this->tpl->setVariable("TIMING_ACCEPT",$this->lng->txt('timing_accept_table'));
00930 $this->tpl->setVariable("TXT_ACCEPTED",$this->lng->txt('timing_user_accepted'));
00931 $this->tpl->setVariable("TXT_REMARK",$this->lng->txt('timing_remark'));
00932
00933 $this->tpl->setVariable("HEADER_IMG",ilUtil::getImagePath('icon_usr.gif'));
00934 $this->tpl->setVariable("HEADER_ALT",$this->lng->txt('obj_usr'));
00935 $this->tpl->setVariable("TABLE_HEADER",$this->lng->txt('timings_of'));
00936 $name = ilObjUser::_lookupName($_GET['member_id']);
00937 $this->tpl->setVariable("USER_NAME",$name['lastname'].', '.$name['firstname']);
00938
00939 $this->tpl->setVariable("TXT_TITLE",$this->lng->txt('title'));
00940 $this->tpl->setVariable("TXT_START_END",$this->lng->txt('crs_timings_short_start_end'));
00941 $this->tpl->setVariable("TXT_INFO_START_END",$this->lng->txt('crs_timings_start_end_info'));
00942 $this->tpl->setVariable("TXT_CHANGED",$this->lng->txt('crs_timings_changed'));
00943 $this->tpl->setVariable("TXT_OWN_PRESETTING",$this->lng->txt('crs_timings_planed_start'));
00944 $this->tpl->setVariable("TXT_INFO_OWN_PRESETTING",$this->lng->txt('crs_timings_from_until'));
00945
00946 $this->items_obj = new ilCourseItems($this->course_obj,$this->course_obj->getRefId());
00947 $items =& $this->items_obj->getItems();
00948
00949 foreach($items as $item)
00950 {
00951 if(($item['timing_type'] == IL_CRS_TIMINGS_PRESETTING) or
00952 ilCourseItems::_hasChangeableTimings($item['ref_id']))
00953 {
00954 $this->__renderUserItem($item,0);
00955 }
00956 }
00957 }
00958
00959 function __renderUserItem($item,$level)
00960 {
00961 global $ilUser,$ilAccess;
00962
00963 include_once 'course/classes/Timings/class.ilTimingPlaned.php';
00964 include_once './Services/MetaData/classes/class.ilMDEducational.php';
00965
00966 $this->lng->loadLanguageModule('meta');
00967
00968 $usr_planed = new ilTimingPlaned($item['ref_id'],$_GET['member_id']);
00969 for($i = 0;$i < $level;$i++)
00970 {
00971 $this->tpl->touchBlock('start_indent');
00972 $this->tpl->touchBlock('end_indent');
00973 }
00974 if(strlen($item['description']))
00975 {
00976 $this->tpl->setCurrentBlock("item_description");
00977 $this->tpl->setVariable("DESC",$item['description']);
00978 $this->tpl->parseCurrentBlock();
00979 }
00980 if($tlt = ilMDEducational::_getTypicalLearningTimeSeconds($item['obj_id']))
00981 {
00982 $this->tpl->setCurrentBlock("tlt");
00983 $this->tpl->setVariable("TXT_TLT",$this->lng->txt('meta_typical_learning_time'));
00984 $this->tpl->setVariable("TLT_VAL",ilFormat::_secondsToString($tlt));
00985 $this->tpl->parseCurrentBlock();
00986 }
00987
00988 $this->tpl->setCurrentBlock("title_plain");
00989 $this->tpl->setVariable("TITLE",$item['title']);
00990 $this->tpl->parseCurrentBlock();
00991
00992 $this->tpl->setCurrentBlock("container_standard_row");
00993
00994 $this->tpl->setVariable("ROWCLASS",ilUtil::switchColor($this->counter++,'tblrow1','tblrow2'));
00995 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath('icon_'.$item['type'].'.gif'));
00996 $this->tpl->setVariable("TYPE_ALT_IMG",$this->lng->txt('obj_'.$item['type']));
00997
00998
00999 if($item['timing_type'] == IL_CRS_TIMINGS_PRESETTING)
01000 {
01001 $this->tpl->setVariable("SUG_START",ilFormat::formatUnixTime($item['suggestion_start']));
01002 $this->tpl->setVariable("SUG_END",ilFormat::formatUnixTime($item['suggestion_end']));
01003 }
01004
01005 if($item['changeable'] and $item['timing_type'] == IL_CRS_TIMINGS_PRESETTING)
01006 {
01007 if($usr_planed->getPlanedStartingTime())
01008 {
01009 $start = $usr_planed->getPlanedStartingTime();
01010 }
01011 else
01012 {
01013 $start = $item['suggestion_start'];
01014 }
01015
01016 $this->tpl->setVariable("OWN_START",ilFormat::formatUnixTime($start));
01017
01018 if($usr_planed->getPlanedEndingTime())
01019 {
01020 $end = $usr_planed->getPlanedEndingTime();
01021 }
01022 else
01023 {
01024 $end = $item['suggestion_end'];
01025 }
01026 if($start != $item['suggestion_start'] or $end != $item['suggestion_end'])
01027 {
01028 $this->tpl->setVariable("OK_IMG",ilUtil::getImagePath('icon_ok.gif'));
01029 $this->tpl->setVariable("OK_ALT",$this->lng->txt('crs_timings_changed'));
01030 }
01031 else
01032 {
01033 $this->tpl->setVariable("OK_IMG",ilUtil::getImagePath('icon_not_ok.gif'));
01034 $this->tpl->setVariable("OK_ALT",$this->lng->txt('crs_timings_not_changed'));
01035 }
01036 $this->tpl->setVariable("OWN_END",ilFormat::formatUnixTime($end));
01037
01038 }
01039
01040 $this->tpl->parseCurrentBlock();
01041
01042 $sub_items_obj = new ilCourseItems($this->course_obj,$item['ref_id'],$_GET['member_id']);
01043 foreach($sub_items_obj->getItems() as $item_data)
01044 {
01045 if(($item_data['timing_type'] == IL_CRS_TIMINGS_PRESETTING) or
01046 ilCourseItems::_hasChangeableTimings($item_data['ref_id']))
01047 {
01048 $this->__renderUserItem($item_data,$level+1);
01049 }
01050 }
01051 }
01052
01053
01054
01055 function __editAdvancedUserTimings()
01056 {
01057 include_once 'course/classes/Event/class.ilEvent.php';
01058
01059 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.crs_usr_edit_timings_adv.html','course');
01060 $this->__showTimingsPanel();
01061 $this->__showUserAcceptanceTable();
01062
01063 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01064 $this->tpl->setVariable("HEADER_IMG",ilUtil::getImagePath('icon_crs.gif'));
01065 $this->tpl->setVariable("HEADER_ALT",$this->lng->txt('obj_crs'));
01066 $this->tpl->setVariable("BLOCK_HEADER_CONTENT",$this->lng->txt('timings_usr_edit'));
01067
01068 if(!$_SESSION['crs_timings_user_hidden'])
01069 {
01070 $this->tpl->setVariable("SHOW_HIDE_TEXT",$this->lng->txt('show_details'));
01071 $this->ctrl->setParameter($this,'show_details',1);
01072 $this->tpl->setVariable("SHOW_HIDE_LINK",$this->ctrl->getLinkTarget($this,'editUserTimings'));
01073 }
01074 else
01075 {
01076 $this->tpl->setVariable("SHOW_HIDE_TEXT",$this->lng->txt('hide_details'));
01077 $this->ctrl->setParameter($this,'show_details',0);
01078 $this->tpl->setVariable("SHOW_HIDE_LINK",$this->ctrl->getLinkTarget($this,'editUserTimings'));
01079 }
01080 $this->ctrl->clearParameters($this);
01081 $this->tpl->setVariable("TXT_TITLE",$this->lng->txt('title'));
01082 $this->tpl->setVariable("TXT_START_END",$this->lng->txt('crs_timings_short_start_end'));
01083 $this->tpl->setVariable("TXT_INFO_START_END",$this->lng->txt('crs_timings_start_end_info'));
01084
01085 $this->tpl->setVariable("TXT_LIMIT",$this->lng->txt('crs_timings_short_limit_start_end'));
01086 $this->tpl->setVariable("TXT_INFO_LIMIT",$this->lng->txt('crs_timings_from_until'));
01087
01088 $this->tpl->setVariable("TXT_OWN_PRESETTING",$this->lng->txt('crs_timings_planed_start'));
01089 $this->tpl->setVariable("TXT_INFO_OWN_PRESETTING",$this->lng->txt('crs_timings_start_end_info'));
01090
01091 $this->tpl->setVariable("TXT_DURATION",$this->lng->txt('crs_timings_time_frame'));
01092 $this->tpl->setVariable("TXT_INFO_DURATION",$this->lng->txt('crs_timings_in_days'));
01093
01094 $this->tpl->setVariable("TXT_BTN_UPDATE",$this->lng->txt('save'));
01095 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt('cancel'));
01096
01097 $this->items_obj = new ilCourseItems($this->course_obj,$this->course_obj->getRefId());
01098 $items =& $this->items_obj->getItems();
01099
01100 $all_items = array_merge($this->items_obj->getFilteredItems($this->course_obj->getId()),
01101 ilEvent::_getEventsAsArray($this->course_obj->getId()));
01102 $sorted_items = $this->__sortByStart($all_items);
01103
01104 $this->counter = 0;
01105 foreach($sorted_items as $item)
01106 {
01107 switch($item['type'])
01108 {
01109 case 'event':
01110 $this->__renderEvent($item);
01111 break;
01112
01113 default:
01114 $this->__renderItem($item,0);
01115 break;
01116 }
01117 }
01118 }
01119
01120 function __editUserTimings()
01121 {
01122 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.crs_usr_edit_timings.html','course');
01123
01124 $this->__showTimingsPanel();
01125 $this->__showUserAcceptanceTable();
01126
01127 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01128 $this->tpl->setVariable("HEADER_IMG",ilUtil::getImagePath('icon_crs.gif'));
01129 $this->tpl->setVariable("HEADER_ALT",$this->lng->txt('obj_crs'));
01130
01131 if(!$_SESSION['crs_timings_user_hidden'])
01132 {
01133 $this->tpl->setVariable("SHOW_HIDE_TEXT",$this->lng->txt('show_details'));
01134 $this->ctrl->setParameter($this,'show_details',1);
01135 $this->tpl->setVariable("SHOW_HIDE_LINK",$this->ctrl->getLinkTarget($this,'editUserTimings'));
01136 }
01137 else
01138 {
01139 $this->tpl->setVariable("SHOW_HIDE_TEXT",$this->lng->txt('hide_details'));
01140 $this->ctrl->setParameter($this,'show_details',0);
01141 $this->tpl->setVariable("SHOW_HIDE_LINK",$this->ctrl->getLinkTarget($this,'editUserTimings'));
01142 }
01143 $this->ctrl->clearParameters($this);
01144
01145 $this->tpl->setVariable("BLOCK_HEADER_CONTENT",$this->lng->txt('timings_timings'));
01146 $this->tpl->setVariable("TXT_TITLE",$this->lng->txt('title'));
01147 $this->tpl->setVariable("TXT_START",$this->lng->txt('crs_timings_sug_begin'));
01148 $this->tpl->setVariable("TXT_END",$this->lng->txt('crs_timings_sug_end'));
01149
01150
01151 $this->items_obj = new ilCourseItems($this->course_obj,$this->course_obj->getRefId());
01152
01153 $all_items = array_merge($this->items_obj->getFilteredItems($this->course_obj->getId()),
01154 ilEvent::_getEventsAsArray($this->course_obj->getId()));
01155 $sorted_items = $this->__sortByStart($all_items);
01156
01157 $this->counter = 0;
01158 foreach($sorted_items as $item)
01159 {
01160 switch($item['type'])
01161 {
01162 case 'event':
01163 $this->__renderEvent($item);
01164 break;
01165
01166 default:
01167 $this->__renderItem($item,0);
01168 break;
01169 }
01170 }
01171 }
01172
01173
01174
01175 function __sortByStart($a_items)
01176 {
01177 foreach($a_items as $item)
01178 {
01179 if($item['timing_type'] == IL_CRS_TIMINGS_DEACTIVATED)
01180 {
01181 $inactive[] = $item;
01182 }
01183 else
01184 {
01185 $active[] = $item;
01186 }
01187 }
01188 $sorted_active = ilUtil::sortArray((array) $active,"start","asc");
01189 $sorted_inactive = ilUtil::sortArray((array) $inactive,'title','asc');
01190
01191 return array_merge($sorted_active,$sorted_inactive);
01192 }
01193
01194 function __renderEvent($item)
01195 {
01196 if(strlen($item['description']))
01197 {
01198 $this->tpl->setCurrentBlock("item_description");
01199 $this->tpl->setVariable("DESC",$item['description']);
01200 $this->tpl->parseCurrentBlock();
01201 }
01202
01203 $this->tpl->setCurrentBlock("title_as_link");
01204 $this->ctrl->setParameterByClass('ileventadministrationgui','event_id',$item['event_id']);
01205 $this->tpl->setVariable("TITLE_LINK",$this->ctrl->getLinkTargetByClass('ileventadministrationgui','info'));
01206 $this->tpl->setVariable("TITLE_NAME",$item['title']);
01207 $this->tpl->parseCurrentBlock();
01208
01209 $this->tpl->setVariable("SUG_START",ilFormat::formatUnixTime($item['start']));
01210 $this->tpl->setVariable("SUG_END",ilFormat::formatUnixTime($item['end']));
01211
01212 $this->tpl->setCurrentBlock("tlt");
01213 $this->tpl->setVariable("TXT_TLT",$this->lng->txt('event_date'));
01214 $this->tpl->setVariable("TLT_VAL",ilEventAppointment::_appointmentToString($item['start'],$item['end'],$item['fulltime']));
01215 $this->tpl->parseCurrentBlock();
01216
01217
01218
01219 $this->tpl->setCurrentBlock("container_standard_row");
01220 $this->tpl->setVariable("ROWCLASS",ilUtil::switchColor($this->counter++,'tblrow1','tblrow2'));
01221 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath('icon_'.$item['type'].'.gif'));
01222 $this->tpl->setVariable("TYPE_ALT_IMG",$this->lng->txt('obj_'.$item['type']));
01223 $this->tpl->parseCurrentBlock();
01224
01225 #if(!$_SESSION['crs_timings_user_hidden'])
01226 #{
01227 # return true;
01228 #}
01229 foreach($this->items_obj->getItemsByEvent($item['event_id']) as $item)
01230 {
01231 $this->__renderItem($item,1);
01232 }
01233 }
01234
01235 function __renderItem($item,$level)
01236 {
01237 global $ilUser,$ilAccess;
01238
01239 include_once 'course/classes/Timings/class.ilTimingPlaned.php';
01240 include_once './classes/class.ilLink.php';
01241 include_once './Services/MetaData/classes/class.ilMDEducational.php';
01242
01243 if(!$ilAccess->checkAccess('visible','',$item['ref_id']))
01244 {
01245 return false;
01246 }
01247
01248 $this->lng->loadLanguageModule('meta');
01249
01250 $usr_planed = new ilTimingPlaned($item['ref_id'],$ilUser->getId());
01251
01252 for($i = 0;$i < $level;$i++)
01253 {
01254 $this->tpl->touchBlock('start_indent');
01255 $this->tpl->touchBlock('end_indent');
01256 }
01257 if(strlen($item['description']))
01258 {
01259 $this->tpl->setCurrentBlock("item_description");
01260 $this->tpl->setVariable("DESC",$item['description']);
01261 $this->tpl->parseCurrentBlock();
01262 }
01263 if($tlt = ilMDEducational::_getTypicalLearningTimeSeconds($item['obj_id']))
01264 {
01265 $this->tpl->setCurrentBlock("tlt");
01266 $this->tpl->setVariable("TXT_TLT",$this->lng->txt('meta_typical_learning_time'));
01267 $this->tpl->setVariable("TLT_VAL",ilFormat::_secondsToString($tlt));
01268 $this->tpl->parseCurrentBlock();
01269 }
01270
01271 if($ilAccess->checkAccess('read','',$item['ref_id']))
01272 {
01273 $this->tpl->setCurrentBlock("title_as_link");
01274 $this->tpl->setVariable("TITLE_LINK",ilLink::_getLink($item['ref_id'],$item['type']));
01275 $this->tpl->setVariable("TITLE_NAME",$item['title']);
01276 $this->tpl->parseCurrentBlock();
01277 }
01278 else
01279 {
01280 $this->tpl->setCurrentBlock("title_plain");
01281 $this->tpl->setVariable("TITLE",$item['title']);
01282 $this->tpl->parseCurrentBlock();
01283 }
01284 $this->tpl->setCurrentBlock("container_standard_row");
01285
01286 if(isset($this->invalid["$item[ref_id]"]))
01287 {
01288 $this->tpl->setVariable("ROWCLASS",'tblrowmarked');
01289 }
01290 else
01291 {
01292 $this->tpl->setVariable("ROWCLASS",ilUtil::switchColor($this->counter++,'tblrow1','tblrow2'));
01293 }
01294 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath('icon_'.$item['type'].'.gif'));
01295 $this->tpl->setVariable("TYPE_ALT_IMG",$this->lng->txt('obj_'.$item['type']));
01296
01297
01298 if($item['timing_type'] == IL_CRS_TIMINGS_PRESETTING)
01299 {
01300 $this->tpl->setVariable("SUG_START",ilFormat::formatUnixTime($item['suggestion_start']));
01301 $this->tpl->setVariable("SUG_END",ilFormat::formatUnixTime($item['suggestion_end']));
01302 }
01303
01304 if($item['changeable'])
01305 {
01306 $item_prefix = "item[".$item['ref_id'].']';
01307
01308 if(is_array($_POST['item']["$item[ref_id]"]['own_start']))
01309 {
01310 #echo "Start post<br>";
01311 $start = $this->__toUnix($_POST['item']["$item[ref_id]"]['own_start']);
01312 }
01313 elseif($usr_planed->getPlanedStartingTime())
01314 {
01315 #echo "Own start<br>";
01316 $start = $usr_planed->getPlanedStartingTime();
01317 }
01318 else
01319 {
01320 #echo "Empfehlung start<br>";
01321 $start = $item['suggestion_start'];
01322 }
01323
01324 $date = $this->__prepareDateSelect($start);
01325 $this->tpl->setVariable("OWN_START",
01326 ilUtil::makeDateSelect($item_prefix."[own_start]",
01327 $date['y'],$date['m'],$date['d'],date('Y',time()),false));
01328
01329 if($usr_planed->getPlanedEndingTime())
01330 {
01331 #echo "Own End<br>";
01332 $end = $usr_planed->getPlanedEndingTime();
01333 }
01334 else
01335 {
01336 #echo "Empfehlung end<br>";
01337 $end = $item['suggestion_end'];
01338 }
01339 $this->tpl->setVariable("OWN_END",ilFormat::formatUnixTime($end));
01340 $this->tpl->setVariable("NAME_DURATION",$item_prefix."[duration]");
01341
01342
01343 if(isset($_POST['item']["$item[ref_id]"]['duration']))
01344 {
01345 $this->tpl->setVariable("VAL_DURATION",$_POST['item']["$item[ref_id]"]['duration']);
01346 }
01347 else
01348 {
01349 $this->tpl->setVariable("VAL_DURATION",intval(($end - $start) / (60 * 60 * 24)));
01350 }
01351 $this->tpl->setVariable("LIM_START",ilFormat::formatUnixTime($item['earliest_start']));
01352 $this->tpl->setVariable("LIM_END",ilFormat::formatUnixTime($item['latest_end']));
01353 }
01354
01355 $this->tpl->parseCurrentBlock();
01356
01357 if(!$_SESSION['crs_timings_user_hidden'])
01358 {
01359 return true;
01360 }
01361
01362 $sub_items_obj = new ilCourseItems($this->course_obj,$item['ref_id']);
01363 foreach($sub_items_obj->getItems() as $item_data)
01364 {
01365 $this->__renderItem($item_data,$level+1);
01366 }
01367 }
01368
01369 function __showTimingsPanel()
01370 {
01371 global $ilAccess;
01372
01373 if(!$ilAccess->checkAccess('write','',$this->container_obj->getRefId()))
01374 {
01375 return true;
01376 }
01377
01378 if(!$_SESSION['crs_timings_panel'][$this->course_obj->getId()])
01379 {
01380 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
01381 $this->tpl->setCurrentBlock("btn_cell");
01382 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTarget($this,'timingsOn'));
01383 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("timings_timings_on"));
01384 $this->tpl->parseCurrentBlock();
01385 }
01386 else
01387 {
01388 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
01389 $this->tpl->setCurrentBlock("btn_cell");
01390 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTarget($this,'timingsOff'));
01391 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("timings_timings_off"));
01392 $this->tpl->parseCurrentBlock();
01393 }
01394 }
01395
01396 function timingsOn()
01397 {
01398 global $ilTabs;
01399 $_SESSION['crs_timings_panel'][$this->course_obj->getId()] = 1;
01400
01401 $ilTabs->clearSubTabs();
01402 $this->__setSubTabs();
01403 $this->editTimings();
01404 }
01405
01406 function timingsOff()
01407 {
01408 global $ilTabs;
01409 $_SESSION['crs_timings_panel'][$this->course_obj->getId()] = 0;
01410
01411 $ilTabs->clearSubTabs();
01412 $this->__setSubTabs();
01413 $this->editUserTimings();
01414 }
01415
01416
01417 function updateUserTimings()
01418 {
01419 global $ilUser,$ilObjDataCache;
01420 include_once 'course/classes/Timings/class.ilTimingPlaned.php';
01421
01422
01423 $this->invalid = array();
01424 foreach($_POST['item'] as $ref_id => $data)
01425 {
01426 $tmp_planed = new ilTimingPlaned($ref_id,$ilUser->getId());
01427
01428 $tmp_planed->setPlanedStartingTime($this->__toUnix($data['own_start']));
01429 if(isset($data['duration']))
01430 {
01431 $data['own_start']['d'] += $data['duration'];
01432 $tmp_planed->setPlanedEndingTime($this->__toUnix($data['own_start'],array('h' => 23,'m' => 55)));
01433 }
01434 else
01435 {
01436 $tmp_planed->setPlanedEndingTime($this->__toUnix($data['own_start']),array('h' => 23,'m' => 55));
01437 }
01438 if(!$tmp_planed->validate())
01439 {
01440 $this->invalid[$ref_id] = $ilObjDataCache->lookupTitle($ilObjDataCache->lookupObjId($ref_id));
01441 }
01442 $all_items[] = $tmp_planed;
01443 }
01444 if(count($this->invalid))
01445 {
01446 $message = $this->lng->txt('crs_timings_update_error');
01447 $message .= ("<br />".$this->lng->txt('crs_materials').': ');
01448 $message .= (implode(',',$this->invalid));
01449 sendInfo($message);
01450 $this->editUserTimings();
01451 return false;
01452 }
01453 foreach($all_items as $new_item_obj)
01454 {
01455 $new_item_obj->update();
01456 }
01457 sendInfo($this->lng->txt('settings_saved'));
01458 $this->editUserTimings();
01459 return true;
01460
01461 }
01462
01463
01464 function &__loadFromPost(&$item)
01465 {
01466 $obj_id = $item['obj_id'];
01467
01468 if(!isset($_POST['item'][$obj_id]))
01469 {
01470 return $item;
01471 }
01472 $item['suggestion_start'] = $this->__toUnix($_POST['item'][$obj_id]['sug_start']);
01473 $item['suggestion_end'] = $this->__toUnix($_POST['item'][$obj_id]['sug_end']);
01474 $item['earliest_start'] = $this->__toUnix($_POST['item'][$obj_id]['lim_start']);
01475 $item['latest_end'] = $this->__toUnix($_POST['item'][$obj_id]['lim_end']);
01476 $item['changeable'] = $_POST['item'][$obj_id]['change'];
01477 $item['timing_type'] = $_POST['item'][$obj_id]['active'] ? IL_CRS_TIMINGS_PRESETTING : $item['timing_type'];
01478 $item['duration_a'] = $_POST['item'][$obj_id]['duration_a'];
01479 $item['duration_b'] = $_POST['item'][$obj_id]['duration_b'];
01480
01481 return $item;
01482 }
01483
01484 function updateTimings()
01485 {
01486 include_once 'course/classes/class.ilCourseItems.php';
01487
01488 global $ilAccess,$ilErr;
01489
01490 if(!$ilAccess->checkAccess('write','',$this->container_obj->getRefId()))
01491 {
01492 $ilErr->raiseError($this->lng->txt('msg_no_perm_write'),$ilErr->WARNING);
01493 }
01494 $this->failed = array();
01495
01496
01497 $_POST['item'] = is_array($_POST['item']) ? $_POST['item'] : array();
01498 $all_items = array();
01499
01500 foreach($_POST['item'] as $ref_id => $data)
01501 {
01502 $item_obj =& new ilCourseItems($this->course_obj,$this->container_obj->getRefId());
01503 $old_data = $item_obj->getItem($ref_id);
01504
01505 $item_obj->setTimingType($_POST['item_active'][$ref_id]['active'] ? IL_CRS_TIMINGS_PRESETTING : IL_CRS_TIMINGS_DEACTIVATED);
01506 $item_obj->setTimingStart($old_data['timing_start']);
01507 $item_obj->setTimingEnd($old_data['timing_end']);
01508 $item_obj->setSuggestionStart($this->__toUnix($data["sug_start"]));
01509
01510
01511 $data['sug_start']['d'] += abs($data['duration_a']);
01512 $item_obj->setSuggestionEnd($this->__toUnix($data['sug_start'],array('h' => 23,'m' => 55)));
01513
01514 $item_obj->setEarliestStart(time());
01515 $item_obj->setLatestEnd($this->__toUnix($data['lim_end'],array('h' => 23,'m' => 55)));
01516
01517 $item_obj->toggleVisible($old_data['visible']);
01518 $item_obj->toggleChangeable($_POST['item_change'][$ref_id]['change']);
01519
01520 if(!$item_obj->validateActivation())
01521 {
01522 $this->failed[$ref_id] = $old_data['title'];
01523 }
01524 $all_items[$ref_id] =& $item_obj;
01525 unset($item_obj);
01526 }
01527
01528 if(count($this->failed))
01529 {
01530 $message = $this->lng->txt('crs_timings_update_error');
01531 $message .= ("<br />".$this->lng->txt('crs_materials').': ');
01532 $message .= (implode(',',$this->failed));
01533 sendInfo($message);
01534 $this->editTimings();
01535 return false;
01536 }
01537
01538
01539 foreach($all_items as $ref_id => $item_obj_new)
01540 {
01541 $item_obj_new->update($ref_id);
01542 }
01543 sendInfo($this->lng->txt('settings_saved'));
01544 $this->editTimings();
01545 return false;
01546 }
01547
01548
01549
01550 function __getItemHTML($cont_data,$a_show_path = false)
01551 {
01552 include_once './classes/class.ilObjectListGUIFactory.php';
01553
01554
01555 $activation = '';
01556 if($cont_data['timing_type'] != IL_CRS_TIMINGS_DEACTIVATED)
01557 {
01558 $long = $cont_data['timing_type'] == IL_CRS_TIMINGS_ACTIVATION;
01559
01560 $activation = ilFormat::formatUnixTime($cont_data['start'],$long).' - '.
01561 ilFormat::formatUnixTime($cont_data['end'],$long);
01562 }
01563
01564 if (!is_object ($this->list_gui[$cont_data["type"]]))
01565 {
01566 $item_list_gui =& ilObjectListGUIFactory::_getListGUIByType($cont_data["type"]);
01567
01568 $item_list_gui->setContainerObject($this->container_gui);
01569
01570 $item_list_gui->enableSubscribe($this->course_obj->getAboStatus());
01571
01572 $this->list_gui[$cont_data["type"]] =& $item_list_gui;
01573 }
01574 else
01575 {
01576 $item_list_gui =& $this->list_gui[$cont_data["type"]];
01577 }
01578
01579
01580 if (!$this->container_gui->isActiveAdministrationPanel())
01581 {
01582 $item_list_gui->enableDelete(false);
01583 $item_list_gui->enableLink(false);
01584 $item_list_gui->enableCut(false);
01585 }
01586
01587
01588 if ($activation != "")
01589 {
01590 $item_list_gui->addCustomProperty($this->lng->txt($cont_data['activation_info']), $activation,
01591 false, true);
01592 }
01593
01594 if($a_show_path and $this->is_tutor)
01595 {
01596 $item_list_gui->addCustomProperty($this->lng->txt('path'),
01597 $this->__buildPath($cont_data['ref_id']),
01598 false,
01599 true);
01600 }
01601
01602
01603 if($this->is_tutor)
01604 {
01605 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"ref_id",
01606 $this->container_obj->getRefId());
01607 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"item_id",
01608 $cont_data['child']);
01609
01610 $item_list_gui->addCustomCommand($this->ctrl->getLinkTargetByClass('ilCourseItemAdministrationGUI',
01611 'edit'),
01612 'activation');
01613 }
01614
01615 $html = $item_list_gui->getListItemHTML($cont_data['ref_id'],
01616 $cont_data['obj_id'], $cont_data['title'], $cont_data['description']);
01617
01618 $this->container_gui->determineAdminCommands($cont_data['ref_id'],
01619 $item_list_gui->adminCommandsIncluded());
01620
01621 return $html;
01622 }
01623
01624 function __getOptions($cont_data,$num)
01625 {
01626 if($this->is_tutor)
01627 {
01628 $images = array();
01629 if($this->course_obj->getOrderType() == $this->course_obj->SORT_MANUAL)
01630 {
01631 if($num != 0)
01632 {
01633 $tmp_array["gif"] = ilUtil::getImagePath("a_up.gif");
01634 $tmp_array["lng"] = $this->lng->txt("crs_move_up");
01635
01636 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"ref_id",
01637 $this->container_obj->getRefId());
01638 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"item_id",
01639 $cont_data['child']);
01640 $tmp_array['lnk'] = $this->ctrl->getLinkTargetByClass('ilcourseitemadministrationgui','moveUp');
01641 $tmp_array["tar"] = "";
01642
01643 $images[] = $tmp_array;
01644 }
01645 if($num != count($this->cont_arr) - 1)
01646 {
01647 $tmp_array["gif"] = ilUtil::getImagePath("a_down.gif");
01648 $tmp_array["lng"] = $this->lng->txt("crs_move_down");
01649 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"ref_id",
01650 $this->container_obj->getRefId());
01651 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"item_id",
01652 $cont_data['child']);
01653 $tmp_array['lnk'] = $this->ctrl->getLinkTargetByClass('ilcourseitemadministrationgui','moveDown');
01654
01655 $images[] = $tmp_array;
01656 }
01657 }
01658
01659 }
01660 return $images ? $images : array();
01661 }
01662
01663
01664 function __showMaterial(&$tpl,$cont_data,$num)
01665 {
01666 include_once './classes/class.ilObjectListGUIFactory.php';
01667
01668
01669 $activation = '';
01670 if($cont_data['timing_type'] == IL_CRS_TIMINGS_ACTIVATION)
01671 {
01672 $activation = ilFormat::formatUnixTime($cont_data['start'],true).' - '.
01673 ilFormat::formatUnixTime($cont_data['end'],true);
01674 }
01675
01676
01677 if (!is_object ($this->list_gui[$cont_data["type"]]))
01678 {
01679 $item_list_gui =& ilObjectListGUIFactory::_getListGUIByType($cont_data["type"]);
01680
01681 $item_list_gui->setContainerObject($this->container_gui);
01682
01683 $item_list_gui->enableSubscribe($this->course_obj->getAboStatus());
01684
01685 $this->list_gui[$cont_data["type"]] =& $item_list_gui;
01686 }
01687 else
01688 {
01689 $item_list_gui =& $this->list_gui[$cont_data["type"]];
01690 }
01691
01692
01693 if (!$this->container_gui->isActiveAdministrationPanel())
01694 {
01695 $item_list_gui->enableDelete(false);
01696 $item_list_gui->enableLink(false);
01697 $item_list_gui->enableCut(false);
01698 }
01699
01700
01701 if ($activation != "")
01702 {
01703 $item_list_gui->addCustomProperty($this->lng->txt($cont_data['activation_info']), $activation,
01704 false, true);
01705 }
01706
01707 if($this->is_tutor)
01708 {
01709 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"ref_id",
01710 $this->container_obj->getRefId());
01711 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"item_id",
01712 $cont_data['child']);
01713
01714 $item_list_gui->addCustomCommand($this->ctrl->getLinkTargetByClass('ilCourseItemAdministrationGUI',
01715 'edit'),
01716 'activation');
01717 }
01718
01719 $html = $item_list_gui->getListItemHTML($cont_data['ref_id'],
01720 $cont_data['obj_id'], $cont_data['title'], $cont_data['description']);
01721
01722 $this->container_gui->determineAdminCommands($cont_data['ref_id'],
01723 $item_list_gui->adminCommandsIncluded());
01724
01725 if(strlen($html))
01726 {
01727 $tpl->setVariable("ITEM_HTML", $html);
01728 }
01729
01730
01731 if($this->is_tutor)
01732 {
01733 $images = array();
01734 if($this->course_obj->getOrderType() == $this->course_obj->SORT_MANUAL)
01735 {
01736 if($num != 0)
01737 {
01738 $tmp_array["gif"] = ilUtil::getImagePath("a_up.gif");
01739 $tmp_array["lng"] = $this->lng->txt("crs_move_up");
01740
01741 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"ref_id",
01742 $this->container_obj->getRefId());
01743 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"item_id",
01744 $cont_data['child']);
01745 $tmp_array['lnk'] = $this->ctrl->getLinkTargetByClass('ilcourseitemadministrationgui','moveUp');
01746 $tmp_array["tar"] = "";
01747
01748 $images[] = $tmp_array;
01749 }
01750 if($num != count($this->cont_arr) - 1)
01751 {
01752 $tmp_array["gif"] = ilUtil::getImagePath("a_down.gif");
01753 $tmp_array["lng"] = $this->lng->txt("crs_move_down");
01754 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"ref_id",
01755 $this->container_obj->getRefId());
01756 $this->ctrl->setParameterByClass('ilcourseitemadministrationgui',"item_id",
01757 $cont_data['child']);
01758 $tmp_array['lnk'] = $this->ctrl->getLinkTargetByClass('ilcourseitemadministrationgui','moveDown');
01759
01760 $images[] = $tmp_array;
01761 }
01762 }
01763
01764 foreach($images as $key => $image)
01765 {
01766 $tpl->setCurrentBlock("img");
01767 $tpl->setVariable("IMG_TYPE",$image["gif"]);
01768 $tpl->setVariable("IMG_ALT",$image["lng"]);
01769 $tpl->setVariable("IMG_LINK",$image["lnk"]);
01770 $tpl->setVariable("IMG_TARGET",$image["tar"]);
01771 $tpl->parseCurrentBlock();
01772 }
01773 unset($images);
01774
01775 $tpl->setCurrentBlock("options");
01776 $tpl->setVariable("OPT_ROWCOL", ilUtil::switchColor($num,"tblrow1","tblrow2"));
01777 $tpl->parseCurrentBlock();
01778 }
01779
01780 if(strlen($html))
01781 {
01782 if ($this->container_gui->isActiveAdministrationPanel())
01783 {
01784 $tpl->setCurrentBlock("block_row_check");
01785 $tpl->setVariable("ITEM_ID", $cont_data['ref_id']);
01786 $tpl->parseCurrentBlock();
01787
01788 }
01789
01790
01791 $tpl->setVariable("ROWCOL", ilUtil::switchColor($num,"tblrow1","tblrow2"));
01792 $tpl->setVariable("TYPE_IMG", ilUtil::getImagePath("icon_".$cont_data["type"].".gif"));
01793 $tpl->setVariable("ALT_IMG", $this->lng->txt("obj_".$cont_data["type"]));
01794 $tpl->setCurrentBlock("tbl_content");
01795 $tpl->parseCurrentBlock();
01796
01797 return ++$num;
01798 }
01799 return $num;
01800 }
01801
01802 function __showFeedback()
01803 {
01804 if(!$this->is_tutor && $this->container_obj->getType() == 'crs')
01805 {
01806 include_once('Services/Feedback/classes/class.ilFeedbackGUI.php');
01807 $feedbackGUI = new ilFeedbackGUI();
01808 $feedbackHTML = $feedbackGUI->getCRSFeedbackListHTML();
01809
01810 if(strlen($feedbackHTML))
01811 {
01812 $this->tpl->setCurrentBlock("cont_page_content");
01813 $this->tpl->setVariable("CONTAINER_PAGE_CONTENT",$feedbackHTML);
01814 $this->tpl->parseCurrentBlock();
01815 }
01816 }
01817 return true;
01818 }
01819
01820 function __setSubTabs()
01821 {
01822 global $ilAccess;
01823
01824 if($this->container_obj->getType() != 'crs')
01825 {
01826 return true;
01827 }
01828 if(!$ilAccess->checkAccess('write','',
01829 $this->course_obj->getRefId(),'crs',$this->course_obj->getId()))
01830 {
01831 $this->is_tutor = false;
01832
01833 if($this->course_obj->enabledObjectiveView())
01834 {
01835 return false;
01836 }
01837 }
01838 else
01839 {
01840 $this->is_tutor = true;
01841 }
01842
01843 if($this->course_obj->enabledObjectiveView())
01844 {
01845
01846 $this->tabs_gui->addSubTabTarget('learners_view',
01847 $this->ctrl->getLinkTargetByClass('ilcourseobjectivepresentationgui','view'));
01848 }
01849 if(!$_SESSION['crs_timings_panel'][$this->course_obj->getId()])
01850 {
01851 $this->tabs_gui->addSubTabTarget('crs_content',
01852 $this->ctrl->getLinkTarget($this,'view'));
01853 }
01854 include_once 'course/classes/class.ilCourseItems.php';
01855 if(!$this->course_obj->enabledObjectiveView() and $this->course_obj->getViewMode() == IL_CRS_VIEW_TIMING)
01856 {
01857 $this->tabs_gui->addSubTabTarget('timings_timings',
01858 $this->ctrl->getLinkTarget($this,'editUserTimings'));
01859 }
01860
01861
01862 if($this->is_tutor)
01863 {
01864 $this->tabs_gui->addSubTabTarget('crs_archives',
01865 $this->ctrl->getLinkTargetByClass('ilcoursearchivesgui','view'));
01866 }
01867
01868 return true;
01869 }
01870
01871 function __initCourseObject()
01872 {
01873 global $tree;
01874
01875 if($this->container_obj->getType() == 'crs')
01876 {
01877
01878 $this->course_obj =& $this->container_obj;
01879 }
01880 else
01881 {
01882 $course_ref_id = $tree->checkForParentType($this->container_obj->getRefId(),'crs');
01883 $this->course_obj =& ilObjectFactory::getInstanceByRefId($course_ref_id);
01884 }
01885 return true;
01886 }
01887
01888 function __toUnix($date,$time = array())
01889 {
01890 return mktime($time['h'],$time['m'],0,$date['m'],$date['d'],$date['y']);
01891 }
01892
01893 function __prepareDateSelect($a_unix_time)
01894 {
01895 return array('y' => date('Y',$a_unix_time),
01896 'm' => date('m',$a_unix_time),
01897 'd' => date('d',$a_unix_time));
01898 }
01899
01900 function __prepareTimeSelect($a_unix_time)
01901 {
01902 return array('h' => date('G',$a_unix_time),
01903 'm' => date('i',$a_unix_time),
01904 's' => date('s',$a_unix_time));
01905 }
01906
01907
01908 function __buildPath($a_ref_id)
01909 {
01910 global $tree;
01911
01912 $path_arr = $tree->getPathFull($a_ref_id,$this->course_obj->getRefId());
01913 $counter = 0;
01914 foreach($path_arr as $data)
01915 {
01916 if($counter++)
01917 {
01918 $path .= " -> ";
01919 }
01920 $path .= $data['title'];
01921 }
01922
01923 return $path;
01924 }
01925
01926 }
01927 ?>