ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilCourseObjectiveQuestionAssignmentTableGUI.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 
24 include_once('./Modules/Course/classes/class.ilCourseObjectiveQuestion.php');
25 include_once('./Services/Table/classes/class.ilTable2GUI.php');
26 // begin-patch lok
27 include_once './Modules/Course/classes/Objectives/class.ilLOSettings.php';
28 // end-patch lok
29 
39 {
40  // begin-patch lok
41  private $settings = null;
42  // end-patch lok
43 
44  private $mode = 0;
45  private $objective = null;
46  private $objective_lm = null;
47 
48  private $objective_id = 0;
49  private $course_obj;
50 
58  public function __construct($a_parent_obj, $a_course_obj, $a_objective_id, $a_mode)
59  {
60  global $DIC;
61 
62  $lng = $DIC['lng'];
63  $ilCtrl = $DIC['ilCtrl'];
64 
65  $this->objective_id = $a_objective_id;
66  $this->course_obj = $a_course_obj;
67 
68  // begin-patch lok
69  $this->settings = ilLOSettings::getInstanceByObjId($this->course_obj->getId());
70  // end-patch lok
71 
72  $this->lng = $lng;
73  $this->lng->loadLanguageModule('crs');
74  $this->ctrl = $ilCtrl;
75 
76  parent::__construct($a_parent_obj, 'materialAssignment');
77  $this->setFormName('assignments');
78  $this->addColumn($this->lng->txt('type'), 'type', "20px");
79  $this->addColumn($this->lng->txt('title'), 'title', '');
80 
81  $this->setFormAction($this->ctrl->getFormAction($a_parent_obj));
82  $this->setRowTemplate("tpl.crs_objective_list_questions_row.html", "Modules/Course");
83  $this->disable('sort');
84  $this->disable('header');
85  $this->disable('numinfo');
86  $this->disable('select_all');
87 
88  #$this->setDefaultOrderField('title');
89  $this->setLimit(200);
90 
91  $this->mode = $a_mode;
92  switch ($a_mode) {
94  $this->addCommandButton('updateSelfAssessmentAssignment', $this->lng->txt('crs_wiz_next'));
95  $this->addCommandButton('materialAssignment', $this->lng->txt('crs_wiz_back'));
96  break;
97 
99  $this->addCommandButton('updateFinalTestAssignment', $this->lng->txt('crs_wiz_next'));
100  $this->addCommandButton('selfAssessmentAssignment', $this->lng->txt('crs_wiz_back'));
101  break;
102  }
103 
104  $this->initQuestionAssignments();
105  }
106 
107  // begin-patch lok
112  public function getSettings()
113  {
114  return $this->settings;
115  }
116  // end-patch lok
117 
125  protected function fillRow($a_set)
126  {
127  foreach ($a_set['sub'] as $sub_data) {
128  if ($a_set['random']) {
129  break;
130  }
131 
132 
133  if ($sub_data['description']) {
134  $this->tpl->setVariable('QST_DESCRIPTION', $sub_data['description']);
135  }
136  if ($sub_data['qst_txt']) {
137  $txt = $sub_data['qst_txt'];
138  if ($sub_data['qst_points']) {
139  $this->lng->loadLanguageModule('assessment');
140  $txt .= (' (' . $sub_data['qst_points'] . ' ' . $this->lng->txt('points') . ')');
141  }
142 
143  $this->tpl->setVariable('QST_DESCRIPTION', $txt);
144  }
145  $this->tpl->setCurrentBlock('qst');
146  $this->tpl->setVariable('QST_TITLE', $sub_data['title']);
147  $this->tpl->setVariable('QST_ID', $a_set['id'] . '_' . $sub_data['id']);
148 
149  switch ($this->mode) {
151  if ($this->objective_qst_obj->isSelfAssessmentQuestion($sub_data['id'])) {
152  $this->tpl->setVariable('QST_CHECKED', 'checked="checked"');
153  }
154  break;
155 
157  if ($this->objective_qst_obj->isFinalTestQuestion($sub_data['id'])) {
158  $this->tpl->setVariable('QST_CHECKED', 'checked="checked"');
159  }
160  break;
161  }
162  $this->tpl->parseCurrentBlock();
163  }
164  if (count($a_set['sub']) and !$a_set['random']) {
165  $this->tpl->setVariable('TXT_QUESTIONS', $this->lng->txt('objs_qst'));
166  }
167  if ($a_set['random']) {
168  $this->tpl->setVariable('VAL_WARN', $this->lng->txt('crs_objective_random_warn'));
169  }
170 
171  $this->tpl->setVariable('VAL_ID', $a_set['id']);
172 
173  $this->tpl->setVariable('ROW_TYPE_IMG', ilObject::_getIcon($a_set['obj_id'], "tiny", $a_set['type']));
174  $this->tpl->setVariable('ROW_TYPE_ALT', $this->lng->txt('obj_' . $a_set['type']));
175 
176  $this->tpl->setVariable('VAL_TITLE', $a_set['title']);
177  if (strlen($a_set['description'])) {
178  $this->tpl->setVariable('VAL_DESC', $a_set['description']);
179  }
180  }
181 
189  public function parse($a_assignable)
190  {
191  global $DIC;
192 
193  $objDefinition = $DIC['objDefinition'];
194 
195  // begin-patch lok
196  $a_assignable = $this->getTestNode();
197  // end-patch lok
198  $tests = array();
199 
200  foreach ($a_assignable as $node) {
201  $tmp_data = array();
202  $subobjects = array();
203 
204  if (!$tmp_tst = ilObjectFactory::getInstanceByRefId((int) $node['ref_id'], false)) {
205  continue;
206  }
207 
208  include_once './Modules/Test/classes/class.ilObjTest.php';
209  $tmp_data['random'] = ilObjTest::_lookupRandomTest($node['obj_id']);
210  $tmp_data['random'] = false;
211 
212  foreach ($qst = $this->sortQuestions($tmp_tst->getAllQuestions()) as $question_data) {
213  $tmp_question = ilObjTest::_instanciateQuestion($question_data['question_id']);
214  #$sub['qst_txt'] = $tmp_question->_getQuestionText($question_data['question_id']);
215  $sub['qst_txt'] = '';
216  $sub['qst_points'] = assQuestion::_getMaximumPoints($question_data['question_id']);
217 
218  $sub['title'] = $tmp_question->getTitle();
219  $sub['description'] = $tmp_question->getComment();
220  $sub['id'] = $question_data['question_id'];
221 
222  $subobjects[] = $sub;
223  }
224  $tmp_data['title'] = $node['title'];
225  $tmp_data['description'] = $node['description'];
226  $tmp_data['type'] = $node['type'];
227  $tmp_data['id'] = $node['child'];
228  $tmp_data['obj_id'] = $node['obj_id'];
229  $tmp_data['sub'] = $subobjects;
230 
231  $tests[] = $tmp_data;
232  }
233 
234  $this->setData($tests);
235  }
236  // begin-patch lok
237  protected function getTestNode()
238  {
240  $tst_ref_id = $this->getSettings()->getInitialTest();
241  if ($tst_ref_id) {
242  return array($GLOBALS['DIC']['tree']->getNodeData($tst_ref_id));
243  }
244  }
245  if ($this->mode == ilCourseObjectiveQuestion::TYPE_FINAL_TEST) {
246  $tst_ref_id = $this->getSettings()->getQualifiedTest();
247  if ($tst_ref_id) {
248  return array($GLOBALS['DIC']['tree']->getNodeData($tst_ref_id));
249  }
250  }
251  return array();
252  }
253  // end-patch lok
254 
261  protected function initQuestionAssignments()
262  {
263  include_once './Modules/Course/classes/class.ilCourseObjectiveQuestion.php';
264  $this->objective_qst_obj = new ilCourseObjectiveQuestion($this->objective_id);
265 
266  return true;
267  }
268 
276  protected function sortQuestions($a_qst_ids)
277  {
278  return ilUtil::sortArray($a_qst_ids, 'title', 'asc');
279  }
280 }
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static getInstanceByObjId($a_obj_id)
get singleton instance
settings()
Definition: settings.php:2
global $DIC
Definition: saml.php:7
static _lookupRandomTest($a_obj_id)
Returns the fact wether the test with passed obj id is a random questions test or not...
static _getMaximumPoints($question_id)
Returns the maximum points, a learner can reach answering the question.
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
global $ilCtrl
Definition: ilias.php:18
Class ilTable2GUI.
$tests
Definition: bench.php:104
$txt
Definition: error.php:11
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
disable($a_module_name)
diesables particular modules of table
setFormName($a_formname="")
Set Form name.
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.
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
TableGUI for question assignments of course objectives.
class ilcourseobjectiveQuestion
__construct($a_parent_obj, $a_course_obj, $a_objective_id, $a_mode)
Constructor.
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
setLimit($a_limit=0, $a_default_limit=0)