ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilLOTestAssignmentTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4
5include_once './Modules/Course/classes/Objectives/class.ilLOSettings.php';
6include_once './Services/Table/classes/class.ilTable2GUI.php';
7include_once './Modules/Course/exceptions/class.ilLOInvalidConfiguationException.php';
8
18{
21
22 private $test_type = 0;
24 private $settings = null;
25 private $container_id = 0;
26
27
34 public function __construct($a_parent_obj, $a_parent_cmd, $a_container_id, $a_test_type, $a_assignment_type = self::TYPE_SINGLE_ASSIGNMENTS)
35 {
36 $this->test_type = $a_test_type;
37 $this->assignment_type = $a_assignment_type;
38 $this->container_id = $a_container_id;
39
40 $this->setId('obj_loc_' . $a_container_id);
41 parent::__construct($a_parent_obj, $a_parent_cmd);
42
43 $this->settings = ilLOSettings::getInstanceByObjId($a_container_id);
44 $this->initTitle();
45 $this->setTopCommands(false);
46 }
47
48 public function initTitle()
49 {
50 switch ($this->test_type) {
52 if ($this->getAssignmentType() == self::TYPE_SINGLE_ASSIGNMENTS) {
53 if ($this->getSettings()->isInitialTestQualifying()) {
54 $this->setTitle($this->lng->txt('crs_loc_settings_tbl_its_q_all'));
55 } else {
56 $this->setTitle($this->lng->txt('crs_loc_settings_tbl_its_nq_all'));
57 }
58 } else {
59 if ($this->getSettings()->isInitialTestQualifying()) {
60 $this->setTitle($this->lng->txt('crs_loc_settings_tbl_it_q'));
61 } else {
62 $this->setTitle($this->lng->txt('crs_loc_settings_tbl_it_nq'));
63 }
64 }
65 break;
66
67
69 if ($this->getAssignmentType() == self::TYPE_SINGLE_ASSIGNMENTS) {
70 $this->setTitle($this->lng->txt('crs_loc_settings_tbl_qts_all'));
71 } else {
72 $this->setTitle($this->lng->txt('crs_loc_settings_tbl_qt'));
73 }
74 break;
75 }
76 }
77
82 public function getSettings()
83 {
84 return $this->settings;
85 }
86
87 public function getAssignmentType()
88 {
90 }
91
95 public function init()
96 {
97 $this->addColumn('', '', '20px');
98 $this->addColumn($this->lng->txt('title'), 'title');
99
100 if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
101 $this->addColumn($this->lng->txt('crs_objectives'), 'objective');
102 }
103
104 $this->addColumn($this->lng->txt('crs_loc_tbl_tst_type'), 'ttype');
105 $this->addColumn($this->lng->txt('crs_loc_tbl_tst_qst_qpl'), 'qstqpl');
106
107
108 $this->setRowTemplate("tpl.crs_loc_tst_row.html", "Modules/Course");
109 $this->setFormAction($GLOBALS['DIC']['ilCtrl']->getFormAction($this->getParentObject()));
110
111 if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
112 $this->addMultiCommand('confirmDeleteTests', $this->lng->txt('crs_loc_delete_assignment'));
113 $this->setDefaultOrderField('objective');
114 $this->setDefaultOrderDirection('asc');
115 } else {
116 $this->addMultiCommand('confirmDeleteTest', $this->lng->txt('crs_loc_delete_assignment'));
117 $this->setDefaultOrderField('title');
118 $this->setDefaultOrderDirection('asc');
119 }
120 }
121
126 public function fillRow($set)
127 {
128 global $DIC;
129
130 $ilCtrl = $DIC['ilCtrl'];
131
132 if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
133 $this->tpl->setVariable('VAL_ID', $set['assignment_id']);
134 } else {
135 $this->tpl->setVariable('VAL_ID', $set['ref_id']);
136 }
137 $this->tpl->setVariable('VAL_TITLE', $set['title']);
138 include_once './Services/Link/classes/class.ilLink.php';
139
140 $ilCtrl->setParameterByClass('ilobjtestgui', 'ref_id', $set['ref_id']);
141 $ilCtrl->setParameterByClass('ilobjtestgui', 'cmd', 'questionsTabGateway');
142 $this->tpl->setVariable(
143 'TITLE_LINK',
144 $ilCtrl->getLinkTargetByClass('ilobjtestgui')
145 );
146
147 if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
148 $this->tpl->setCurrentBlock('objectives');
149 $this->tpl->setVariable('VAL_OBJECTIVE', (string) $set['objective']);
150 $this->tpl->parseCurrentBlock();
151 }
152
153
154
155 #$this->tpl->setVariable('TITLE_LINK',ilLink::_getLink($set['ref_id']));
156 if (strlen($set['description'])) {
157 $this->tpl->setVariable('VAL_DESC', $set['description']);
158 }
159
160 switch ($set['ttype']) {
162 $type = $this->lng->txt('tst_question_set_type_fixed');
163 break;
164
166 $type = $this->lng->txt('tst_question_set_type_random');
167 break;
168 }
169
170 $this->tpl->setVariable('VAL_TTYPE', $type);
171 $this->tpl->setVariable('VAL_QST_QPL', $set['qst_info']);
172
173 if (isset($set['qpls']) && is_array($set['qpls']) && count($set['qpls']) > 0) {
174 foreach ($set['qpls'] as $title) {
175 $this->tpl->setCurrentBlock('qpl');
176 $this->tpl->setVariable('MAT_TITLE', $title);
177 $this->tpl->parseCurrentBlock();
178 }
179 $this->tpl->touchBlock('ul_begin');
180 $this->tpl->touchBlock('ul_end');
181 }
182 }
183
184 public function parseMultipleAssignments()
185 {
186 include_once './Modules/Course/classes/Objectives/class.ilLOTestAssignments.php';
187 $assignments = ilLOTestAssignments::getInstance($this->container_id);
188
189 $available = $assignments->getAssignmentsByType($this->test_type);
190 $data = array();
191 foreach ($available as $assignment) {
192 try {
193 $tmp = $this->doParse($assignment->getTestRefId(), $assignment->getObjectiveId());
195 $assignment->delete();
196 continue;
197 }
198 if ($tmp) {
199 // add assignment id
200 $tmp['assignment_id'] = $assignment->getAssignmentId();
201 $data[] = $tmp;
202 }
203 }
204
205 $this->setData($data);
206 }
207
213 public function parse($a_tst_ref_id)
214 {
215 $this->setData(array($this->doParse($a_tst_ref_id)));
216 return true;
217 }
218
223 protected function doParse($a_tst_ref_id, $a_objective_id = 0)
224 {
225 include_once './Modules/Test/classes/class.ilObjTest.php';
226 $tst = ilObjectFactory::getInstanceByRefId($a_tst_ref_id, false);
227
228 if (!$tst instanceof ilObjTest) {
229 throw new ilLOInvalidConfigurationException('No valid test given');
230 }
231 $tst_data['ref_id'] = $tst->getRefId();
232 $tst_data['title'] = $tst->getTitle();
233 $tst_data['description'] = $tst->getLongDescription();
234 $tst_data['ttype'] = $tst->getQuestionSetType();
235
236
237 if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
238 include_once './Modules/Course/classes/class.ilCourseObjective.php';
239 $tst_data['objective'] = ilCourseObjective::lookupObjectiveTitle($a_objective_id);
240 }
241
242 switch ($tst->getQuestionSetType()) {
244 $tst_data['qst_info'] = $this->lng->txt('crs_loc_tst_num_qst');
245 $tst_data['qst_info'] .= (' ' . count($tst->getAllQuestions()));
246 break;
247
248 default:
249 // get available assiged question pools
250 include_once './Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionFactory.php';
251 include_once './Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionList.php';
252
254 $GLOBALS['DIC']['ilDB'],
255 $tst,
257 $GLOBALS['DIC']['ilDB'],
258 $tst
259 )
260 );
261
262 $list->loadDefinitions();
263
264 // tax translations
265 include_once './Modules/Test/classes/class.ilTestTaxonomyFilterLabelTranslater.php';
266 $translater = new ilTestTaxonomyFilterLabelTranslater($GLOBALS['DIC']['ilDB']);
267 $translater->loadLabels($list);
268
269 $tst_data['qst_info'] = $this->lng->txt('crs_loc_tst_qpls');
270 $num = 0;
271 foreach ($list as $definition) {
273 $title = $definition->getPoolTitle();
274 // fau: taxFilter/typeFilter - get title for extended filter conditions
275 $filterTitle = array();
276 $filterTitle[] = $translater->getTaxonomyFilterLabel($definition->getMappedTaxonomyFilter());
277 $filterTitle[] = $translater->getTypeFilterLabel($definition->getTypeFilter());
278 if (!empty($filterTitle)) {
279 $title .= ' -> ' . implode(' / ', $filterTitle);
280 }
281 #$tax_id = $definition->getMappedFilterTaxId();
282 #if($tax_id)
283 #{
284 # $title .= (' -> '. $translater->getTaxonomyTreeLabel($tax_id));
285 #}
286 #$tax_node = $definition->getMappedFilterTaxNodeId();
287 #if($tax_node)
288 #{
289 # $title .= (' -> ' .$translater->getTaxonomyNodeLabel($tax_node));
290 #}
291 // fau.
292 $tst_data['qpls'][] = $title;
293 ++$num;
294 }
295 if (!$num) {
296 $tst_data['qst_info'] .= (' ' . (int) 0);
297 }
298 break;
299 }
300 return $tst_data;
301 }
302}
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
An exception for terminatinating execution or to throw for unit testing.
static lookupObjectiveTitle($a_objective_id, $a_add_description=false)
Class ilLOInvalidConfigurationException.
static getInstanceByObjId($a_obj_id)
get singleton instance
Class ilLOTestAssignmentTableGUI.
__construct($a_parent_obj, $a_parent_cmd, $a_container_id, $a_test_type, $a_assignment_type=self::TYPE_SINGLE_ASSIGNMENTS)
Constructor.
parse($a_tst_ref_id)
Parse single test assignment.
static getInstance($a_container_id)
Get instance by container id.
const QUESTION_SET_TYPE_RANDOM
type setting value for random question set
const QUESTION_SET_TYPE_FIXED
type setting value for fixed question set
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
Class ilTable2GUI.
setTopCommands($a_val)
Set top commands (display command buttons on top of table, too)
getParentObject()
Get parent object.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
getFormAction()
Get Form action parameter.
setData($a_data)
set table data @access public
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
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.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
global $DIC
Definition: goto.php:24
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$type
settings()
Definition: settings.php:2