00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00037 class ilCourseItemAdministrationGUI
00038 {
00039 var $container_obj;
00040 var $tpl;
00041 var $ctrl;
00042 var $lng;
00043
00048 function ilCourseItemAdministrationGUI(&$container_obj,$a_item_id)
00049 {
00050 global $tpl,$ilCtrl,$lng,$ilObjDataCache,$ilErr,$ilTabs;
00051
00052 $this->tpl =& $tpl;
00053 $this->ctrl =& $ilCtrl;
00054 $this->lng =& $lng;
00055 $this->lng->loadLanguageModule('crs');
00056 $this->err =& $ilErr;
00057 $this->tabs_gui =& $ilTabs;
00058
00059 $this->container_obj =& $container_obj;
00060
00061 $this->item_id = $a_item_id;
00062 $this->ctrl->saveParameter($this,'item_id');
00063
00064 $this->__initItem();
00065 }
00066
00067 function &executeCommand()
00068 {
00069 global $ilTabs;
00070
00071 $this->__setTabs();
00072
00073 $cmd = $this->ctrl->getCmd();
00074
00075
00076 if(!$this->__checkItemId())
00077 {
00078 sendInfo($this->lng->txt("crs_no_item_id_given"),true);
00079 $this->ctrl->returnToParent($this);
00080 }
00081
00082 switch($this->ctrl->getNextClass($this))
00083 {
00084
00085 case 'ilconditionhandlerinterface':
00086
00087
00088 include_once './classes/class.ilConditionHandlerInterface.php';
00089 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
00090 $new_gui =& new ilConditionHandlerInterface($this,(int) $_GET['item_id']);
00091 $this->ctrl->forwardCommand($new_gui);
00092 $this->tabs_gui->setTabActive('preconditions');
00093 break;
00094
00095 default:
00096 $this->tabs_gui->setTabActive('timings');
00097 if(!$cmd)
00098 {
00099 $cmd = 'edit';
00100 }
00101 $this->$cmd();
00102 $this->tabs_gui->setTabActive('timings');
00103 break;
00104 }
00105 }
00106
00107 function getItemId()
00108 {
00109 return $this->item_id;
00110 }
00111
00112 function cancel()
00113 {
00114 $this->ctrl->returnToParent($this);
00115 }
00116
00117 function edit()
00118 {
00119 global $ilErr,$ilAccess,$ilObjDataCache;
00120
00121 if(!$ilAccess->checkAccess('write','',$this->container_obj->getRefId()))
00122 {
00123 $ilErr->raiseError($this->lng->txt('permission_denied'),$ilErr->MESSAGE);
00124 }
00125
00126 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_edit_item.html","course");
00127 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00128 $item_data = $this->items_obj->getItem($this->getItemId());
00129 $title = $ilObjDataCache->lookupTitle($item_data['obj_id']);
00130
00131 if(isset($_POST['cmd']))
00132 {
00133 $timing_type = $_POST['timing_type'];
00134 $visible = $_POST['visible'];
00135 $changeable = $_POST['changeable'];
00136 $timing_start = $this->__toUnix($_POST['timing_start'],$_POST['timing_start_time']);
00137 $timing_end = $this->__toUnix($_POST['timing_end'],$_POST['timing_end_time']);
00138 $suggestion_start = $this->__toUnix($_POST['sug_start']);
00139 $suggestion_end = $this->__toUnix($_POST['sug_end']);
00140 $earliest_start = $this->__toUnix($_POST['early_start']);
00141 $latest_end = $this->__toUnix($_POST['late_end']);
00142 }
00143 else
00144 {
00145 $timing_type = $item_data['timing_type'];
00146 $visible = $item_data['visible'];
00147 $changeable = $item_data['changeable'];
00148 $timing_start = $item_data['timing_start'];
00149 $timing_end = $item_data['timing_end'];
00150 $suggestion_start = $item_data['suggestion_start'];
00151 $suggestion_end = $item_data['suggestion_end'];
00152 $earliest_start = $item_data['earliest_start'];
00153 $latest_end = $item_data['latest_end'];
00154 }
00155
00156
00157 $this->tpl->setVariable("ALT_IMG",$this->lng->txt("obj_".$ilObjDataCache->lookupType($item_data['obj_id'])));
00158 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath("icon_".$ilObjDataCache->lookupType($item_data['obj_id']).".gif"));
00159 $this->tpl->setVariable("TITLE",$ilObjDataCache->lookupTitle($item_data['obj_id']));
00160 $this->tpl->setVariable("EDIT_TIMINGS",$this->lng->txt('crs_edit_timings'));
00161 $this->tpl->setVariable("TXT_TIMINGS",$this->lng->txt('crs_timings_disabled'));
00162 $this->tpl->setVariable("INFO_DEACTIVATED",$this->lng->txt('crs_timings_disabled_info'));
00163 $this->tpl->setVariable("TXT_BEGIN",$this->lng->txt('crs_timings_start'));
00164 $this->tpl->setVariable("TXT_END",$this->lng->txt('crs_timings_END'));
00165 $this->tpl->setVariable("TXT_ACTIVATION_ENABLED",$this->lng->txt('crs_timings_availability_enabled'));
00166 $this->tpl->setVariable("TXT_PRESETTING",$this->lng->txt('crs_timings_presetting_tbl'));
00167 $this->tpl->setVariable("TXT_SUG_BEGIN",$this->lng->txt('crs_timings_sug_begin'));
00168 $this->tpl->setVariable("TXT_SUG_END",$this->lng->txt('crs_suggestion_end'));
00169 $this->tpl->setVariable("TXT_EARLY_BEGIN",$this->lng->txt('crs_timings_early_begin'));
00170 $this->tpl->setVariable("TXT_LATE_END",$this->lng->txt('crs_timings_late_end'));
00171 $this->tpl->setVariable("TXT_TIME",$this->lng->txt('time'));
00172
00173
00174
00175
00176 $this->tpl->setVariable("TXT_AVAILABILITY",$this->lng->txt('crs_timings_availability_tbl'));
00177 $this->tpl->setVariable("TXT_TIMINGS_DEACTIVATED",$this->lng->txt('crs_timings_deactivated'));
00178 $this->tpl->setVariable("RADIO_DEACTIVATE",ilUtil::formRadioButton($timing_type == IL_CRS_TIMINGS_DEACTIVATED,
00179 'timing_type',IL_CRS_TIMINGS_DEACTIVATED));
00180
00181
00182 $this->tpl->setVariable("RADIO_ACTIVATION",ilUtil::formRadioButton($timing_type == IL_CRS_TIMINGS_ACTIVATION,
00183 'timing_type',IL_CRS_TIMINGS_ACTIVATION));
00184 $this->tpl->setVariable("TXT_TIMINGS_ACTIVATION",$this->lng->txt('crs_timings_availability'));
00185 $this->tpl->setVariable("INFO_AVAILABILITY",$this->lng->txt('crs_item_availability_info'));
00186
00187 $this->tpl->setVariable("CHECK_VISIBILITY",ilUtil::formCheckbox($visible,
00188 'visible',1));
00189 $this->tpl->setVariable("TXT_VISIBILITY",$this->lng->txt('crs_timings_visibility'));
00190
00191
00192 $this->tpl->setVariable("RADIO_TIMINGS",ilUtil::formRadioButton($timing_type == IL_CRS_TIMINGS_PRESETTING,
00193 'timing_type',IL_CRS_TIMINGS_PRESETTING));
00194 $this->tpl->setVariable("TXT_TIMINGS_PRESETTING",$this->lng->txt('crs_timings_presetting'));
00195 $this->tpl->setVariable("INFO_PRESETTING",$this->lng->txt('crs_item_presetting_info'));
00196
00197 $this->tpl->setVariable("CHECK_CHANGE",ilUtil::formCheckbox($changeable,'changeable',1));
00198 $this->tpl->setVariable("TXT_CHANGE",$this->lng->txt('crs_timings_changeable'));
00199
00200
00201 $this->tpl->setVariable("TXT_START",$this->lng->txt('crs_timings_start'));
00202
00203 $date = $this->__prepareDateSelect($timing_start);
00204 $this->tpl->setVariable("START_DATE_SELECT",
00205 ilUtil::makeDateSelect('timing_start',$date['y'],$date['m'],$date['d'],date('Y',time())));
00206
00207 $date = $this->__prepareTimeSelect($timing_start);
00208 $this->tpl->setVariable("START_TIME_SELECT",
00209 ilUtil::makeTimeSelect('timing_start_time',true,$date['h'],$date['m'],0,false));
00210
00211
00212 $date = $this->__prepareDateSelect($timing_end);
00213 $this->tpl->setVariable("END_DATE_SELECT",
00214 ilUtil::makeDateSelect('timing_end',$date['y'],$date['m'],$date['d'],date('Y',time())));
00215
00216 $date = $this->__prepareTimeSelect($timing_end);
00217 $this->tpl->setVariable("END_TIME_SELECT",
00218 ilUtil::makeTimeSelect('timing_end_time',true,$date['h'],$date['m'],0,false));
00219
00220
00221 $this->tpl->setVariable("TXT_END",$this->lng->txt('crs_timings_end'));
00222
00223
00224 $date = $this->__prepareDateSelect($suggestion_start);
00225 $this->tpl->setVariable("SUG_START_SELECT",
00226 ilUtil::makeDateSelect('sug_start',$date['y'],$date['m'],$date['d'],date('Y',time())));
00227
00228 $date = $this->__prepareDateSelect($suggestion_end);
00229 $this->tpl->setVariable("SUG_END_SELECT",
00230 ilUtil::makeDateSelect('sug_end',$date['y'],$date['m'],$date['d'],date('Y',time())));
00231
00232
00233 $date = $this->__prepareDateSelect($earliest_start);
00234 $this->tpl->setVariable("EARLY_SELECT",
00235 ilUtil::makeDateSelect('early_start',$date['y'],$date['m'],$date['d'],date('Y',time())));
00236
00237 $date = $this->__prepareDateSelect($latest_end);
00238 $this->tpl->setVariable("LATE_SELECT",
00239 ilUtil::makeDateSelect('late_end',$date['y'],$date['m'],$date['d'],date('Y',time())));
00240
00241 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
00242 $this->tpl->setVariable("TXT_SAVE",$this->lng->txt("save"));
00243 }
00244
00245 function update()
00246 {
00247 global $ilErr,$ilAccess,$ilObjDataCache;
00248
00249 if(!$ilAccess->checkAccess('write','',$this->container_obj->getRefId()))
00250 {
00251 $ilErr->raiseError($this->lng->txt('permission_denied'),$ilErr->MESSAGE);
00252 }
00253
00254 $this->items_obj->setTimingType($_POST['timing_type']);
00255 $this->items_obj->setTimingStart($this->__toUnix($_POST['timing_start'],$_POST['timing_start_time']));
00256 $this->items_obj->setTimingEnd($this->__toUnix($_POST['timing_end'],$_POST['timing_end_time']));
00257 $this->items_obj->setSuggestionStart($this->__toUnix($_POST["sug_start"]));
00258 $this->items_obj->setSuggestionEnd($this->__toUnix($_POST["sug_end"],array('h' => 23,'m' => 55)));
00259 $this->items_obj->setEarliestStart($this->__toUnix($_POST['early_start']));
00260 $this->items_obj->setLatestEnd($this->__toUnix($_POST['late_end'],array('h' => 23,'m' => 55)));
00261 $this->items_obj->toggleVisible($_POST['visible']);
00262 $this->items_obj->toggleChangeable($_POST['changeable']);
00263
00264 if(!$this->items_obj->validateActivation())
00265 {
00266 sendInfo($ilErr->getMessage());
00267 $this->edit();
00268
00269 return true;
00270 }
00271 $this->items_obj->update($this->getItemId());
00272 sendInfo($this->lng->txt('settings_saved'));
00273 $this->edit();
00274 #$this->ctrl->returnToParent($this);
00275
00276 return true;
00277 }
00278
00279 function moveUp()
00280 {
00281 global $ilErr,$ilAccess,$ilObjDataCache;
00282
00283 if(!$ilAccess->checkAccess('write','',$this->container_obj->getRefId()))
00284 {
00285 $ilErr->raiseError($this->lng->txt('permission_denied'),$ilErr->MESSAGE);
00286 }
00287
00288 $this->items_obj->moveUp((int) $this->getItemId());
00289 sendInfo($this->lng->txt("crs_moved_item"),true);
00290
00291 $this->ctrl->returnToParent($this);
00292 return true;
00293 }
00294
00295 function moveDown()
00296 {
00297 global $ilErr,$ilAccess,$ilObjDataCache;
00298
00299 if(!$ilAccess->checkAccess('write','',$this->container_obj->getRefId()))
00300 {
00301 $ilErr->raiseError($this->lng->txt('permission_denied'),$ilErr->MESSAGE);
00302 }
00303
00304 $this->items_obj->moveDown((int) $this->getItemId());
00305 sendInfo($this->lng->txt("crs_moved_item"),true);
00306
00307 $this->ctrl->returnToParent($this);
00308 return true;
00309 }
00310
00311
00312 function __checkItemId()
00313 {
00314 global $tree;
00315
00316 if(!$this->getItemId())
00317 {
00318 return false;
00319 }
00320
00321 if(!$tree->checkForParentType($this->getItemId(),'crs'))
00322 {
00323 return false;
00324 }
00325 return true;
00326 }
00327
00328 function __initItem()
00329 {
00330 global $ilObjDataCache,$tree;
00331
00332 include_once "./course/classes/class.ilCourseItems.php";
00333
00334 if(!is_object($this->items_obj))
00335 {
00336 if($ilObjDataCache->lookupType($this->container_obj->getId()) == 'crs')
00337 {
00338 $this->items_obj =& new ilCourseItems($this->container_obj,$this->container_obj->getRefId());
00339 }
00340 else
00341 {
00342
00343 $crs_ref_id = $tree->checkForParentType($this->container_obj->getRefId(),'crs');
00344 $crs_obj = ilObjectFactory::getInstanceByRefId($crs_ref_id);
00345
00346 $this->items_obj =& new ilCourseItems($crs_obj,$this->container_obj->getRefId());
00347 }
00348 }
00349 return true;
00350 }
00351
00352 function __toUnix($date,$time = array())
00353 {
00354 return mktime($time['h'],$time['m'],0,$date['m'],$date['d'],$date['y']);
00355 }
00356
00357 function __prepareDateSelect($a_unix_time)
00358 {
00359 return array('y' => date('Y',$a_unix_time),
00360 'm' => date('m',$a_unix_time),
00361 'd' => date('d',$a_unix_time));
00362 }
00363
00364 function __prepareTimeSelect($a_unix_time)
00365 {
00366 return array('h' => date('G',$a_unix_time),
00367 'm' => date('i',$a_unix_time),
00368 's' => date('s',$a_unix_time));
00369 }
00370
00371 function __setTabs()
00372 {
00373 global $rbacsystem,$ilUser;
00374
00375 $this->tabs_gui->clearTargets();
00376
00377 $this->tabs_gui->setBackTarget($this->lng->txt('back_to_'.$this->container_obj->getType().'_content'),
00378 'repository.php?ref_id='.$this->container_obj->getRefId());
00379 $this->tabs_gui->addTarget("timings",
00380 $this->ctrl->getLinkTarget($this,'edit'),
00381 "edit", get_class($this));
00382 $this->ctrl->setParameterByClass('ilconditionhandlerinterface','item_id',(int) $_GET['item_id']);
00383 $this->tabs_gui->addTarget("preconditions",
00384 $this->ctrl->getLinkTargetByClass('ilConditionHandlerInterface','listConditions'),
00385 "", "ilConditionHandlerInterface");
00386 return true;
00387 }
00388
00389 }
00390 ?>