ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilTestQuestionsTableGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once('./Services/Table/classes/class.ilTable2GUI.php');
5 require_once 'Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php';
6 
17 {
18  protected $writeAccess = false;
19  protected $totalPoints = 0;
20  protected $totalWorkingTime = '00:00:00';
21  protected $checked_move = false;
22  protected $total = 0;
23  protected $position = 0;
24 
29 
33  protected $optionalColumns = array();
34 
42  public function __construct($a_parent_obj, $a_parent_cmd, $a_write_access = false, $a_checked_move = false, $a_total = 0)
43  {
44  $this->setId('tst_qst_lst_' . $a_parent_obj->object->getRefId());
45 
46  parent::__construct($a_parent_obj, $a_parent_cmd);
47 
48  global $lng, $ilCtrl;
49 
50  $this->lng = $lng;
51  $this->ctrl = $ilCtrl;
52  $this->total = $a_total;
53 
54  $this->setWriteAccess($a_write_access);
55  $this->setCheckedMove($a_checked_move);
56 
57  $this->setFormName('questionbrowser');
58  $this->setStyle('table', 'fullwidth');
59  $this->addColumn('', 'f', '1%', true);
60  $this->addColumn('', 'f', '1%');
61  $this->visibleOptionalColumns = (array) $this->getSelectedColumns();
62  $this->optionalColumns = (array) $this->getSelectableColumns();
63  if (isset($this->visibleOptionalColumns['qid'])) {
64  $this->addColumn($this->optionalColumns['qid']['txt'], 'qid', '');
65  }
66  $this->addColumn($this->lng->txt("tst_question_title"), 'title', '');
67  //$this->addColumn($this->lng->txt("tst_sequence"),'sequence', '');
68  if ($a_parent_obj->object->areObligationsEnabled()) {
69  $this->addColumn($this->lng->txt("obligatory"), 'obligatory', '');
70  }
71  if (isset($this->visibleOptionalColumns['description'])) {
72  $this->addColumn($this->optionalColumns['description']['txt'], 'description', '');
73  }
74  $this->addColumn($this->lng->txt("tst_question_type"), 'type', '');
75  $this->addColumn($this->lng->txt("points"), '', '');
76  if (isset($this->visibleOptionalColumns['author'])) {
77  $this->addColumn($this->optionalColumns['author']['txt'], 'author', '');
78  }
79  if (isset($this->visibleOptionalColumns['working_time'])) {
80  $this->addColumn($this->optionalColumns['working_time']['txt'], 'working_time', '');
81  }
82  $this->addColumn($this->lng->txt("qpl"), 'qpl', '');
83 
84  $this->setSelectAllCheckbox('q_id');
85 
86  $this->setExternalSegmentation(true);
87 
88  if ($this->getWriteAccess() && !$this->getTotal()) {
89  $this->addMultiCommand('removeQuestions', $this->lng->txt('remove_question'));
90  $this->addMultiCommand('moveQuestions', $this->lng->txt('move'));
91  if ($this->checked_move) {
92  $this->addMultiCommand('insertQuestionsBefore', $this->lng->txt('insert_before'));
93  $this->addMultiCommand('insertQuestionsAfter', $this->lng->txt('insert_after'));
94  }
95  //$this->addMultiCommand('copyToQuestionpool', $this->lng->txt('copy_to_questionpool'));
96  $this->addMultiCommand('copyQuestion', $this->lng->txt('copy'));
97  $this->addMultiCommand('copyAndLinkToQuestionpool', $this->lng->txt('copy_and_link_to_questionpool'));
98  }
99 
100 
101  $this->setRowTemplate("tpl.il_as_tst_questions_row.html", "Modules/Test");
102 
103  $this->setFormAction($this->ctrl->getFormAction($a_parent_obj, $a_parent_cmd));
104 
105  if ($a_parent_obj->object->areObligationsEnabled()) {
106  $this->addCommandButton('saveOrderAndObligations', $this->lng->txt('saveOrderAndObligations'));
107  } else {
108  $this->addCommandButton('saveOrderAndObligations', $this->lng->txt('saveOrder'));
109  }
110 
111  $this->disable('sort');
112  $this->enable('header');
113  $this->enable('select_all');
114  }
115 
119  public function getSelectableColumns()
120  {
121  $cols = array(
122  'qid' => array('txt' => $this->lng->txt('question_id'), 'default' => true),
123  'description' => array('txt' => $this->lng->txt('description'), 'default' => false),
124  'author' => array('txt' => $this->lng->txt('author'), 'default' => false),
125  'working_time'=> array('txt' => $this->lng->txt('working_time'), 'default' => false)
126  );
127 
128  return $cols;
129  }
130 
131  public function fillHeader()
132  {
133  foreach ($this->column as $key => $column) {
134  if (strcmp($column['text'], $this->lng->txt("points")) == 0) {
135  $this->column[$key]['text'] = $this->lng->txt("points") . "&nbsp;(" . $this->totalPoints . ")";
136  } elseif (strcmp($column['text'], $this->lng->txt("working_time")) == 0) {
137  $this->column[$key]['text'] = $this->lng->txt("working_time") . "&nbsp;(" . $this->totalWorkingTime . ")";
138  }
139  }
140  parent::fillHeader();
141  }
142 
150  public function fillRow($data)
151  {
152  global $ilUser,$ilAccess;
153 
154  $q_id = $data["question_id"];
155 
156  $this->tpl->setVariable("QUESTION_ID", $q_id);
157  if (isset($this->visibleOptionalColumns['qid'])) {
158  $this->tpl->setVariable("QUESTION_ID_PRESENTATION", $q_id);
159  }
160  if ($this->getWriteAccess() && !$this->getTotal() && $data["obj_fi"] > 0) {
161  if (!$data['complete']) {
162  $this->tpl->setVariable("IMAGE_WARNING", ilUtil::getImagePath("icon_alert.svg"));
163  $this->tpl->setVariable("ALT_WARNING", $this->lng->txt("warning_question_not_complete"));
164  $this->tpl->setVariable("TITLE_WARNING", $this->lng->txt("warning_question_not_complete"));
165  }
166 
167 
168  $qpl_ref_id = current(ilObject::_getAllReferences($data["obj_fi"]));
169  $this->tpl->setVariable("QUESTION_TITLE", "<a href=\"" . $this->ctrl->getLinkTarget($this->getParentObject(), "questions") . "&eqid=$q_id&eqpl=$qpl_ref_id" . "\">" . $data["title"] . "</a>");
170 
171  // obligatory checkbox (when obligation is possible)
172  if ($data["obligationPossible"]) {
173  $CHECKED = $data["obligatory"] ? "checked=\"checked\" " : "";
174  $OBLIGATORY = "<input type=\"checkbox\" name=\"obligatory[$q_id]\" value=\"1\" $CHECKED/>";
175  } else {
176  $OBLIGATORY = "";
177  }
178  } else {
179  global $lng;
180 
181  $this->tpl->setVariable("QUESTION_TITLE", $data["title"]);
182 
183  // obligatory icon
184  if ($data["obligatory"]) {
185  require_once 'Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php';
186  $OBLIGATORY = ilGlyphGUI::get(ilGlyphGUI::EXCLAMATION, $lng->txt('question_obligatory'));
187  } else {
188  $OBLIGATORY = '';
189  }
190  }
191 
192  if ($this->parent_obj->object->areObligationsEnabled()) {
193  $this->tpl->setVariable("QUESTION_OBLIGATORY", $OBLIGATORY);
194  }
195 
196  $this->tpl->setVariable("QUESTION_SEQUENCE", $this->lng->txt("tst_sequence"));
197 
198  if ($this->getWriteAccess() && !$this->getTotal()) {
199  if ($data["sequence"] != 1) {
200  $this->tpl->setVariable("BUTTON_UP", "<a href=\"" . $this->ctrl->getLinkTarget($this->getParentObject(), "questions") . "&up=" . $data["question_id"] . "\">" . ilGlyphGUI::get(ilGlyphGUI::UP, $this->lng->txt('up')) . "</a>");
201  }
202  if ($data["sequence"] != count($this->getData())) {
203  $this->tpl->setVariable("BUTTON_DOWN", "<a href=\"" . $this->ctrl->getLinkTarget($this->getParentObject(), "questions") . "&down=" . $data["question_id"] . "\">" . ilGlyphGUI::get(ilGlyphGUI::DOWN, $this->lng->txt('down')) . "</a>");
204  }
205  }
206 
207  if (isset($this->visibleOptionalColumns['description'])) {
208  if ($data["description"]) {
209  $this->tpl->setVariable("QUESTION_COMMENT", $data["description"] ? $data["description"] : '&nbsp;');
210  } else {
211  $this->tpl->touchBlock('question_comment_block');
212  }
213  }
214  include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
215  $this->tpl->setVariable("QUESTION_TYPE", assQuestion::_getQuestionTypeName($data["type_tag"]));
216  $this->tpl->setVariable("QUESTION_POINTS", $data["points"]);
217  $this->totalPoints += $data["points"];
218  $this->totalWorkingTime = assQuestion::sumTimesInISO8601FormatH_i_s_Extended($this->totalWorkingTime, $data['working_time']);
219  if (isset($this->visibleOptionalColumns['author'])) {
220  $this->tpl->setVariable("QUESTION_AUTHOR", $data["author"]);
221  }
222  if (isset($this->visibleOptionalColumns['working_time'])) {
223  $this->tpl->setVariable("QUESTION_WORKING_TIME", $data["working_time"]);
224  }
225  if (ilObject::_lookupType($data["orig_obj_fi"]) == 'qpl') {
226  $this->tpl->setVariable("QUESTION_POOL", ilObject::_lookupTitle($data["orig_obj_fi"]));
227  } else {
228  $this->tpl->setVariable("QUESTION_POOL", $this->lng->txt('tst_question_not_from_pool_info'));
229  }
230 
231 
232  $this->position += 10;
233  $field = "<input type=\"text\" name=\"order[q_" . $data["question_id"] .
234  "]\" value=\"" . $this->position . "\" maxlength=\"3\" size=\"3\" />";
235  $this->tpl->setVariable("QUESTION_POSITION", $field);
236  }
237 
238  public function setWriteAccess($value)
239  {
240  $this->writeAccess = $value;
241  }
242 
243  public function getWriteAccess()
244  {
245  return $this->writeAccess;
246  }
247 
248  public function setCheckedMove($value)
249  {
250  $this->checked_move = $value;
251  }
252 
253  public function getCheckedMove()
254  {
255  return $this->checked_move;
256  }
257 
258  public function setTotal($value)
259  {
260  $this->total = $value;
261  }
262 
263  public function getTotal()
264  {
265  return $this->total;
266  }
267 }
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
static sumTimesInISO8601FormatH_i_s_Extended($time1, $time2)
setStyle($a_element, $a_style)
__construct($a_parent_obj, $a_parent_cmd, $a_write_access=false, $a_checked_move=false, $a_total=0)
Constructor.
setExternalSegmentation($a_val)
Set external segmentation.
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
static get($a_glyph, $a_text="")
Get glyph html.
static _lookupTitle($a_id)
lookup object title
setId($a_val)
Set id.
static _getAllReferences($a_id)
get all reference ids of object
global $ilCtrl
Definition: ilias.php:18
Class ilTable2GUI.
$column
Definition: 39dropdown.php:62
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
addMultiCommand($a_cmd, $a_text)
Add Command button.
enable($a_module_name)
enables particular modules of table
$ilUser
Definition: imgupload.php:18
getSelectedColumns()
Get selected columns.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
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.
Set thin black border outline around column
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
$key
Definition: croninfo.php:18
$cols
Definition: xhr_table.php:11