• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

Modules/Course/classes/class.ilCourseContentGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
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();                          // forwarding moved to getCenterColumnHTML()
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                                 // forward if archives enabled and not tutor
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                                 // forward to objective presentation
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                                         //$this->__forwardToObjectivePresentation();
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                 // edit timings if panel is on
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                         // Tmp fix for tests
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                         // CONTINUE LINK
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                         // add to desktop link
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                         // Description
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                 // Feedback
00455                 $this->__showFeedBack();
00456 
00457                 // Event
00458                 $this->__showEvents();
00459 
00460                 // course materials
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                 // Allow movement of blocks for tutors
00486                 if ($this->is_tutor &&
00487                         $this->container_gui->isActiveAdministrationPanel())
00488                 {
00489                         $column_gui->setEnableMovement(true);
00490                 }
00491                 
00492                 // Configure Settings, if administration panel is on
00493                 if ($this->is_tutor)
00494                 {
00495                         $column_gui->setBlockProperty("news", "settings", true);
00496                         //$column_gui->setBlockProperty("news", "public_notifications_option", true);
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                 // this gets us the subitems we need in setColumnSettings()
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                         //if ($column_gui->getScreenMode() != IL_SCREEN_SIDE)
00526                         if (ilColumnGUI::getScreenMode() != IL_SCREEN_SIDE)
00527                         {
00528                                 // right column wants center
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                                 // left column wants center
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                                         //return $this->__forwardToObjectivePresentation();
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         // PRIVATE
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                         // Info
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                                 // Edit
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                                 // Delete
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                                          /* Disabled: no manual sort
00643                                          foreach($this->__getOptions($cont_data,$num) as $key => $image)
00644                                          {
00645                                                  $tpl->setCurrentBlock("img");
00646                                                  $tpl->setVariable("IMG_TYPE",$image["gif"]);
00647                                                  $tpl->setVariable("IMG_ALT",$image["lng"]);
00648                                                  $tpl->setVariable("IMG_LINK",$image["lnk"]);
00649                                                  $tpl->setVariable("IMG_TARGET",$image["tar"]);
00650                                                  $tpl->parseCurrentBlock();
00651                                          }
00652 
00653                                          $tpl->setCurrentBlock("options");
00654                                          $tpl->setVariable("OPT_ROWCOL", ilUtil::switchColor($num,"tblrow1","tblrow2"));
00655                                          $tpl->parseCurrentBlock();
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                                          // change row color
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                 // create table
00699                 include_once "./Services/Table/classes/class.ilTableGUI.php";
00700                 $tbl = new ilTableGUI();
00701                 $tbl->setStyle('table','il_ContainerBlock');
00702 
00703                 // title & header columns
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                 // footer
00729                 $tbl->disable("footer");
00730                 $tbl->disable('sort');
00731                 $tbl->disable("form");
00732 
00733                 // render table
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                 // NO ITEMS FOUND
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                 // show course materials
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                 // render table content data
00771                 // counter for rowcolor change
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                                 // change row color
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                                 // increment counter
00813                         }
00814                         $num++;
00815                 }
00816 
00817                 // create table
00818                 include_once "./Services/Table/classes/class.ilTableGUI.php";
00819                 $tbl = new ilTableGUI();
00820                 $tbl->setStyle('table','il_ContainerBlock');
00821 
00822                 // title & header columns
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                 // footer
00849                 $tbl->disable("footer");
00850                 $tbl->disable('sort');
00851                 $tbl->disable("form");
00852 
00853                 // render table
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                         // Suggested
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                         // Limit
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                 // Select all
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                 // Back button
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                         // Duration
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                 // Validate
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                 // Validate
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                         // add duration
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                 // No do update 
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                 // ACTIVATION
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                 // get item list gui object
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                         // Enable/disable subscription depending on course settings
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                 // show administration command buttons (or not)
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                 // add activation custom property
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                 // ACTIVATION
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                 // get item list gui object
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                         // Enable/disable subscription depending on course settings
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                 // show administration command buttons (or not)
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                 // add activation custom property
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                 // OPTIONS
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                 } // END write perm
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                                 //$nbsp = false;
01989                         }
01990 
01991                         // change row color
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                         // increment counter
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                         // No further tabs if objective view or archives
02035                         if($this->course_obj->enabledObjectiveView())
02036                         {
02037                                 return false;
02038                         }
02039                 }
02040                 else
02041                 {
02042                         $this->is_tutor = true;
02043                 }
02044 
02045                 // These subtabs should also work, if the command is called directly in
02046                 // ilObjCourseGUI, so please use ...ByClass methods.
02047                 // (see ilObjCourseGUI->executeCommand: case "ilcolumngui")
02048                 
02049                 if($this->course_obj->enabledObjectiveView())
02050                 {
02051                         // Objective gui
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                         // Container is course
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 } // END class.ilCourseContentGUI
02134 ?>

Generated on Fri Dec 13 2013 17:56:49 for ILIAS Release_3_9_x_branch .rev 46835 by  doxygen 1.7.1