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