ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilCourseObjectivesTableGUI.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24include_once('./Services/Table/classes/class.ilTable2GUI.php');
25include_once './Modules/Course/classes/class.ilCourseObjective.php';
26include_once('./Modules/Course/classes/class.ilCourseObjectiveMaterials.php');
27include_once('./Modules/Course/classes/class.ilCourseObjectiveQuestion.php');
28include_once './Modules/Course/classes/Objectives/class.ilLOUtils.php';
29
30// begin-patch lok
31include_once './Modules/Course/classes/Objectives/class.ilLOSettings.php';
32// end-patch lok
33
42{
43 protected $course_obj = null;
44
45 // begin-patch lok
46 protected $settings = NULL;
47 // end-patch lok
48
56 public function __construct($a_parent_obj,$a_course_obj)
57 {
58 global $lng,$ilCtrl;
59
60 $this->course_obj = $a_course_obj;
61
62 // begin-patch lok
63 $this->settings = ilLOSettings::getInstanceByObjId($this->course_obj->getId());
64 // end-patch lok
65
66 $this->lng = $lng;
67 $this->lng->loadLanguageModule('crs');
68 $this->ctrl = $ilCtrl;
69
70 parent::__construct($a_parent_obj,'listObjectives');
71 $this->setFormName('objectives');
72 $this->addColumn('','f',"1px");
73 $this->addColumn($this->lng->txt('position'),'position','10em');
74 $this->addColumn($this->lng->txt('title'),'title','20%');
75 $this->addColumn($this->lng->txt('crs_objective_assigned_materials'),'materials');
76 // begin-patch lok
77 if($this->getSettings()->worksWithInitialTest())
78 {
79 $this->addColumn($this->lng->txt('crs_objective_self_assessment'),'self');
80 }
81 // end-patch lok
82 if($this->getSettings()->getQualifyingTestType() == ilLOSettings::TYPE_QUALIFYING_SELECTED)
83 {
84 $this->addColumn($this->lng->txt('crs_objective_tbl_col_final_tsts'),'final');
85 }
86 else
87 {
88 $this->addColumn($this->lng->txt('crs_objective_final_test'),'final');
89 }
90 $this->addColumn($this->lng->txt(''),'5em');
91
92 $this->setFormAction($this->ctrl->getFormAction($a_parent_obj));
93 $this->setRowTemplate("tpl.crs_objectives_table_row.html","Modules/Course");
94 $this->disable('sort');
95 $this->enable('header');
96 $this->disable('numinfo');
97 $this->enable('select_all');
98 // begin-patch lok
99 $this->setSelectAllCheckbox('objective');
100 // end-patch lok
101 $this->setLimit(200);
102
103 // begin-patch lo
104 $this->addMultiCommand('activateObjectives', $this->lng->txt('set_online'));
105 $this->addMultiCommand('deactivateObjectives', $this->lng->txt('set_offline'));
106 $this->addMultiCommand('askDeleteObjectives',$this->lng->txt('delete'));
107 // end-patch lok
108 $this->addCommandButton('saveSorting',$this->lng->txt('sorting_save'));
109 // $this->addCommandButton('create',$this->lng->txt('crs_add_objective'));
110 }
111
112 // begin-patch lok
117 public function getSettings()
118 {
119 return $this->settings;
120 }
121 // end-patch lok
122
123
131 protected function fillRow($a_set)
132 {
133 $GLOBALS['ilLog']->write(__METHOD__.': '.print_r($a_set,TRUE));
134
135 $this->tpl->setVariable('VAL_ID',$a_set['id']);
136 $this->tpl->setVariable('VAL_POSITION',$a_set['position']);
137
138 // begin-patch lok
139 if($a_set['online'])
140 {
141 $this->tpl->setVariable('VAL_ONOFFLINE',$this->lng->txt('online'));
142 $this->tpl->setVariable('ONOFFLINE_CLASS','smallgreen');
143 }
144 else
145 {
146 $this->tpl->setVariable('VAL_ONOFFLINE',$this->lng->txt('offline'));
147 $this->tpl->setVariable('ONOFFLINE_CLASS','smallred');
148 }
149
150 if($a_set['passes'])
151 {
152 $this->tpl->setVariable('PASSES_TXT',$this->lng->txt('crs_loc_passes_info'));
153 $this->tpl->setVariable('PASSES_VAL',$a_set['passes']);
154 }
155
156
157 // begin-patch lok
158 $this->ctrl->setParameterByClass('ilcourseobjectivesgui','objective_id',$a_set['id']);
159 $this->tpl->setVariable('VAL_TITLE_LINKED',$this->ctrl->getLinkTargetByClass('ilcourseobjectivesgui','edit'));
160 // end-patch lok
161
162 $this->tpl->setVariable('VAL_TITLE',$a_set['title']);
163 if(strlen($a_set['description']))
164 {
165 $this->tpl->setVariable('VAL_DESC',$a_set['description']);
166 }
167
168 // materials
169 foreach($a_set['materials'] as $ref_id => $data)
170 {
171 if($data['items'])
172 {
173 $this->tpl->touchBlock('ul_begin');
174 foreach($data['items'] as $pg_st)
175 {
176 $this->tpl->setCurrentBlock('st_pg');
177 $this->tpl->setVariable('MAT_IMG',ilObject::_getIcon($pg_st['obj_id'],"tiny", $pg_st['type']));
178 $this->tpl->setVariable('MAT_ALT',$this->lng->txt('obj_'.$pg_st['type']));
179 include_once('Modules/LearningModule/classes/class.ilLMObject.php');
180 $title = ilLMObject::_lookupTitle($pg_st['obj_id']);
181 $this->tpl->setVariable('MAT_TITLE',$title);
182 $this->tpl->parseCurrentBlock();
183 }
184 $this->tpl->touchBlock('ul_end');
185 }
186 else
187 {
188 $this->tpl->touchBlock('new_line');
189 }
190 $this->tpl->setCurrentBlock('mat_row');
191 $this->tpl->setVariable('LM_IMG',ilObject::_getIcon($data['obj_id'],"tiny", $data['type']));
192 $this->tpl->setVariable('LM_ALT',$this->lng->txt('obj_'.$data['type']));
193
194 if($data['type'] == 'catr' or $data['type'] == 'crsr')
195 {
196 include_once './Services/ContainerReference/classes/class.ilContainerReference.php';
197 $this->tpl->setVariable(
198 'LM_TITLE',
200 );
201 }
202 else
203 {
204 $this->tpl->setVariable('LM_TITLE',ilObject::_lookupTitle($data['obj_id']));
205 }
206 $this->tpl->parseCurrentBlock();
207 }
208
209 // self assessment
210 // begin-patch lok
211 if($this->getSettings()->worksWithInitialTest())
212 {
213 if($this->getSettings()->hasSeparateInitialTests())
214 {
215 if($a_set['initial'])
216 {
217 include_once './Services/Link/classes/class.ilLink.php';
218 $obj_id = ilObject::_lookupObjId($a_set['initial']);
219 $this->tpl->setCurrentBlock('initial_test_per_objective');
220 $this->tpl->setVariable('IT_IMG', ilObject::_getIcon($obj_id, 'tiny'));
221 $this->tpl->setVariable('IT_ALT', $this->lng->txt('obj_tst'));
222 $this->tpl->setVariable('IT_TITLE',ilObject::_lookupTitle($obj_id));
223 $this->tpl->setVariable('IT_TITLE_LINK', ilLink::_getLink($a_set['initial']));
224
225 include_once './Services/Link/classes/class.ilLink.php';
226 $this->ctrl->setParameterByClass('ilobjtestgui','ref_id',$a_set['initial']);
227 $this->ctrl->setParameterByClass('ilobjtestgui','cmd','questionsTabGateway');
228 $this->tpl->setVariable(
229 'IT_TITLE_LINK',
230 $this->ctrl->getLinkTargetByClass('ilobjtestgui')
231 );
232
233 $this->tpl->parseCurrentBlock();
234 }
235 else
236 {
237 $this->tpl->touchBlock('initial_test_per_objective');
238 }
239 }
240 else
241 {
242 foreach($a_set['self'] as $test)
243 {
244 // begin-patch lok
245 foreach((array) $test['questions'] as $question)
246 {
247 $this->tpl->setCurrentBlock('self_qst_row');
248 $this->tpl->setVariable('SELF_QST_TITLE',$question['title']);
249 $this->tpl->parseCurrentBlock();
250 }
251 // end-patch lok
252 }
253 // begin-patch lok
254 if(!count($a_set['self']))
255 {
256 $this->tpl->touchBlock('self_qst_row');
257 }
258 }
259
260 // end-patch lok
261 }
262 // end-patch lok
263
264 // final test questions
265 if($this->getSettings()->getQualifyingTestType() == ilLOSettings::TYPE_QUALIFYING_SELECTED)
266 {
267 if($a_set['final'])
268 {
269 $obj_id = ilObject::_lookupObjId($a_set['final']);
270 $this->tpl->setCurrentBlock('final_test_per_objective');
271 $this->tpl->setVariable('FT_IMG', ilObject::_getIcon($obj_id, 'tiny'));
272 $this->tpl->setVariable('FT_ALT', $this->lng->txt('obj_tst'));
273 $this->tpl->setVariable('FT_TITLE',ilObject::_lookupTitle($obj_id));
274
275 include_once './Services/Link/classes/class.ilLink.php';
276 $this->ctrl->setParameterByClass('ilobjtestgui','ref_id',$a_set['final']);
277 $this->ctrl->setParameterByClass('ilobjtestgui','cmd','questionsTabGateway');
278 $this->tpl->setVariable(
279 'FT_TITLE_LINK',
280 $this->ctrl->getLinkTargetByClass('ilobjtestgui')
281 );
282
283
284 $this->tpl->parseCurrentBlock();
285 }
286 else
287 {
288 $this->tpl->touchBlock('final_test_per_objective');
289 }
290 }
291 else
292 {
293 foreach((array) $a_set['final'] as $test)
294 {
295 foreach((array) $test['questions'] as $question)
296 {
297 $this->tpl->setCurrentBlock('final_qst_row');
298 $this->tpl->setVariable('FINAL_QST_TITLE',$question['title']);
299 $this->tpl->parseCurrentBlock();
300 }
301 // begin-patch lok
302 #$this->tpl->setCurrentBlock('final_test_row');
303 #$this->tpl->setVariable('FINAL_TST_IMG',ilUtil::getImagePath('icon_tst_s.png'));
304 #$this->tpl->setVariable('FINAL_TST_ALT',$this->lng->txt('obj_tst'));
305 #$this->tpl->setVariable('FINAL_TST_TITLE',ilObject::_lookupTitle($test['obj_id']));
306 #$this->tpl->parseCurrentBlock();
307 // end-patch lok
308 }
309 }
310
311 // begin-patch lok
312 // Edit Link
313 #$this->ctrl->setParameterByClass(get_class($this->getParentObject()),'objective_id',$a_set['id']);
314 $this->ctrl->setParameterByClass('ilcourseobjectivesgui','objective_id',$a_set['id']);
315 #$this->tpl->setVariable('EDIT_LINK',$this->ctrl->getLinkTargetByClass(get_class($this->getParentObject()),'edit'));
316 $this->tpl->setVariable('EDIT_LINK',$this->ctrl->getLinkTargetByClass('ilcourseobjectivesgui','edit'));
317 // end-patch lok
318 $this->tpl->setVariable('TXT_EDIT',$this->lng->txt('edit'));
319
320 include_once("./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
321 $alist = new ilAdvancedSelectionListGUI();
322 $alist->setId($a_set['id']);
323 $alist->setListTitle($this->lng->txt("actions"));
324
325 $alist->addItem(
326 $this->lng->txt('edit'),
327 '',
328 $this->ctrl->getLinkTargetByClass('ilcourseobjectivesgui', 'edit')
329 );
330 // materials
331 $alist->addItem(
332 $this->lng->txt('crs_objective_action_materials'),
333 '',
334 $this->ctrl->getLinkTargetByClass('ilcourseobjectivesgui', 'materialAssignment')
335 );
336 // itest
337 if($this->getSettings()->worksWithInitialTest() && !$this->getSettings()->hasSeparateInitialTests())
338 {
339 $alist->addItem(
340 $this->lng->txt('crs_objective_action_itest'),
341 '',
342 $this->ctrl->getLinkTargetByClass('ilcourseobjectivesgui', 'selfAssessmentAssignment')
343 );
344 }
345 // qtest
346 if($this->getSettings()->hasSeparateQualifiedTests())
347 {
348 #$alist->addItem(
349 # $this->lng->txt('crs_objective_action_qtest_sep'),
350 # '',
351 # $this->ctrl->getLinkTargetByClass('ilcourseobjectivesgui', 'finalSeparatedTestAssignment')
352 #);
353 }
354 else
355 {
356 $alist->addItem(
357 $this->lng->txt('crs_objective_action_qtest'),
358 '',
359 $this->ctrl->getLinkTargetByClass('ilcourseobjectivesgui', 'finalTestAssignment')
360 );
361
362 }
363
364 $this->ctrl->setParameterByClass('illopagegui','objective_id',$a_set['id']);
365 $alist->addItem(
366 $this->lng->txt('edit_page'),
367 '',
368 $this->ctrl->getLinkTargetByClass('illopagegui', 'edit')
369 );
370
371
372 $this->tpl->setVariable('VAL_ACTIONS',$alist->getHTML());
373
374 // end-patch lok
375 }
376
377
384 public function parse($a_objective_ids)
385 {
386 $position = 1;
387 foreach($a_objective_ids as $objective_id)
388 {
389 $objective = new ilCourseObjective($this->course_obj,$objective_id);
390
391 $objective_data['id'] = $objective_id;
392 $objective_data['position'] = sprintf("%.1f",$position++) * 10;
393 $objective_data['title'] = $objective->getTitle();
394 $objective_data['description'] = $objective->getDescription();
395
396 // begin-patch lok
397 $objective_data['online'] = $objective->isActive();
398 $objective_data['passes'] = $objective->getPasses();
399 // end-patch lok
400
401 // assigned materials
402 $materials = array();
403 $ass_materials = new ilCourseObjectiveMaterials($objective_id);
404 foreach($ass_materials->getMaterials() as $material)
405 {
406 $materials[$material['ref_id']]['obj_id'] = $obj_id = ilObject::_lookupObjId($material['ref_id']);
407 $materials[$material['ref_id']]['type'] = ilObject::_lookupType($obj_id);
408
409 switch($material['type'])
410 {
411 case 'pg':
412 case 'st':
413 $materials[$material['ref_id']]['items'][] = $material;
414 break;
415 default:
416
417 }
418
419
420 }
421 $objective_data['materials'] = $materials;
422 $question_obj = new ilCourseObjectiveQuestion($objective_id);
423
424 // self assessment questions
425 // begin-patch lok
426 if($this->getSettings()->worksWithInitialTest())
427 {
428 if($this->getSettings()->hasSeparateInitialTests())
429 {
430 include_once './Modules/Course/classes/Objectives/class.ilLOTestAssignments.php';
431 $assignments = ilLOTestAssignments::getInstance($this->course_obj->getId());
432 $assignment = $assignments->getAssignmentByObjective($objective_id, ilLOSettings::TYPE_TEST_INITIAL);
433
434 $objective_data['initial'] = 0;
435 if($assignment instanceof ilLOTestAssignment)
436 {
437 $test_id = $assignment->getTestRefId();
438
439 include_once './Services/Object/classes/class.ilObjectFactory.php';
440 $factory = new ilObjectFactory();
441 $test_candidate = $factory->getInstanceByRefId($test_id,FALSE);
442 if($test_candidate instanceof ilObjTest)
443 {
444 $objective_data['initial'] = $test_id;
445 }
446 }
447 }
448 elseif(ilLOUtils::lookupRandomTest(ilObject::_lookupObjId($this->getSettings()->getInitialTest())))
449 {
450 $test = array();
451 include_once './Modules/Course/classes/Objectives/class.ilLORandomTestQuestionPools.php';
453 $this->course_obj->getId(),
454 $objective_id,
456 );
457 $test['obj_id'] = ilObject::_lookupObjId($this->getSettings()->getInitialTest());
458 $qst = ilLOUtils::lookupQplBySequence($this->getSettings()->getInitialTest(), $rnd->getQplSequence());
459 if($qst)
460 {
461 $test['questions'][] = array('title' => $qst);
462 }
463 $objective_data['self'] = array($test);
464 }
465 else
466 {
467 $tests = array();
468 foreach($question_obj->getSelfAssessmentTests() as $test)
469 {
470 $questions = array();
471 foreach($question_obj->getQuestionsOfTest($test['obj_id']) as $qst)
472 {
473 $questions[] = $qst;
474 }
475 $tmp_test = $test;
476 $tmp_test['questions'] = $questions;
477
478 $tests[] = $tmp_test;
479 }
480 $objective_data['self'] = $tests;
481 }
482 }
483 // end-patch lok
484
485 // final test questions
486 // begin-patch lok
487 // single test assignments
488 if($this->getSettings()->getQualifyingTestType() == ilLOSettings::TYPE_QUALIFYING_SELECTED)
489 {
490 include_once './Modules/Course/classes/Objectives/class.ilLOTestAssignments.php';
491 $assignments = ilLOTestAssignments::getInstance($this->course_obj->getId());
492 $assignment = $assignments->getAssignmentByObjective($objective_id, ilLOSettings::TYPE_TEST_QUALIFIED);
493
494 $objective_data['final'] = 0;
495 if($assignment instanceof ilLOTestAssignment)
496 {
497 $test_id = $assignment->getTestRefId();
498
499 include_once './Services/Object/classes/class.ilObjectFactory.php';
500 $factory = new ilObjectFactory();
501 $test_candidate = $factory->getInstanceByRefId($test_id,FALSE);
502 if($test_candidate instanceof ilObjTest)
503 {
504 $objective_data['final'] = $test_id;
505 }
506 }
507 }
508 elseif($this->getSettings()->getQualifiedTest())
509 {
510 if(ilLOUtils::lookupRandomTest(ilObject::_lookupObjId($this->getSettings()->getQualifiedTest())))
511 {
512 $test = array();
513 include_once './Modules/Course/classes/Objectives/class.ilLORandomTestQuestionPools.php';
515 $this->course_obj->getId(),
516 $objective_id,
518 );
519 $test['obj_id'] = ilObject::_lookupObjId($this->getSettings()->getQualifiedTest());
520 $qst = ilLOUtils::lookupQplBySequence($this->getSettings()->getQualifiedTest(), $rnd->getQplSequence());
521 if($qst)
522 {
523 $test['questions'][] = array('title' => $qst);
524 }
525 $objective_data['final'] = array($test);
526 }
527 else
528 {
529 $tests = array();
530 foreach($question_obj->getFinalTests() as $test)
531 {
532 $questions = array();
533 foreach($question_obj->getQuestionsOfTest($test['obj_id']) as $qst)
534 {
535 $questions[] = $qst;
536 }
537 $tmp_test = $test;
538 $tmp_test['questions'] = $questions;
539
540 $tests[] = $tmp_test;
541 }
542 $objective_data['final'] = $tests;
543 }
544
545 }
546 // end-patch lok
547 $objectives[] = (array) $objective_data;
548 }
549 $this->setData($objectives ? $objectives : array());
550 }
551
552}
553?>
$test
Definition: Utf8Test.php:85
User interface class for advanced drop-down selection lists.
static _lookupTargetTitle($a_obj_id)
Lookup target title.
class ilCourseObjectiveMaterials
class ilcourseobjectiveQuestion
class ilcourseobjective
__construct($a_parent_obj, $a_course_obj)
Constructor.
static _lookupTitle($a_obj_id)
Lookup title.
const TYPE_QUALIFYING_SELECTED
static getInstanceByObjId($a_obj_id)
get singleton instance
Settings for LO courses.
static getInstance($a_container_id)
Get instance by container id.
static lookupRandomTest($a_test_obj_id)
Check if test is a random test.
static lookupQplBySequence($a_test_ref_id, $a_sequence_id)
Lookup assigned qpl name (including taxonomy) by sequence.
Class ilObjectFactory.
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
static _getIcon($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
static _lookupType($a_id, $a_reference=false)
lookup object type
Class ilTable2GUI.
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setData($a_data)
set table data @access public
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setLimit($a_limit=0, $a_default_limit=0)
set max.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setFormName($a_formname)
Set Form name.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
disable($a_module_name)
diesables particular modules of table
enable($a_module_name)
enables particular modules of table
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40
$ref_id
Definition: sahs_server.php:39