ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilQuestionBrowserTableGUI.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 'Modules/TestQuestionPool/classes/class.ilAssQuestionPreviewGUI.php';
6 require_once 'Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php';
7 
19 {
20  protected $editable = true;
21  protected $writeAccess = false;
22  protected $totalPoints = 0;
23  protected $totalWorkingTime = '00:00:00';
24  protected $confirmdelete;
25 
26  protected $taxIds = array();
27 
31  protected $questionCommentingEnabled = false;
32 
40  public function __construct($a_parent_obj, $a_parent_cmd, $a_write_access = false, $confirmdelete = false, $taxIds = array(), $enableCommenting = false)
41  {
42  $this->setQuestionCommentingEnabled($enableCommenting);
43 
44  // Bugfix: #0019539
45  if ($confirmdelete) {
46  $this->setId("qpl_confirm_del_" . $a_parent_obj->object->getRefId());
47  } else {
48  $this->setId("qpl_qst_brows_" . $a_parent_obj->object->getRefId());
49  }
50 
51  parent::__construct($a_parent_obj, $a_parent_cmd);
52 
53  global $DIC;
54  $lng = $DIC['lng'];
55  $ilCtrl = $DIC['ilCtrl'];
56 
57  $this->lng = $lng;
58  $this->ctrl = $ilCtrl;
59 
60  $this->confirmdelete = $confirmdelete;
61  $this->setWriteAccess($a_write_access);
62  $this->taxIds = $taxIds;
63 
64  $qplSetting = new ilSetting("qpl");
65 
66  $this->setFormName('questionbrowser');
67  $this->setStyle('table', 'fullwidth');
68  if (!$confirmdelete) {
69  $this->addColumn('', '', '1%');
70  $this->addColumn($this->lng->txt("title"), 'title', '');
71  foreach ($this->getSelectedColumns() as $c) {
72  if (strcmp($c, 'description') == 0) {
73  $this->addColumn($this->lng->txt("description"), 'description', '');
74  }
75  if (strcmp($c, 'type') == 0) {
76  $this->addColumn($this->lng->txt("question_type"), 'ttype', '');
77  }
78  // According to mantis #12713
79  if (strcmp($c, 'points') == 0) {
80  $this->addColumn($this->lng->txt("points"), 'points', '', false, 'ilCenterForced');
81  }
82  if (strcmp($c, 'statistics') == 0) {
83  $this->addColumn($this->lng->txt('statistics'), '', '');
84  }
85  if (strcmp($c, 'author') == 0) {
86  $this->addColumn($this->lng->txt("author"), 'author', '');
87  }
88  if ($this->isQuestionCommentingEnabled() && $c == 'comments') {
89  $this->addColumn($this->lng->txt("ass_comments"), 'comments', '');
90  }
91  if (strcmp($c, 'created') == 0) {
92  $this->addColumn($this->lng->txt("create_date"), 'created', '');
93  }
94  if (strcmp($c, 'tstamp') == 0) {
95  $this->addColumn($this->lng->txt("last_update"), 'tstamp', '');
96  }
97  if (strcmp($c, 'working_time') == 0) {
98  $this->addColumn($this->lng->txt("working_time"), 'working_time', '');
99  }
100  }
101  $this->addColumn($this->lng->txt('actions'), '');
102  $this->setSelectAllCheckbox('q_id');
103  } else {
104  $this->addColumn($this->lng->txt("title"), 'title', '');
105  foreach ($this->getSelectedColumns() as $c) {
106  if (strcmp($c, 'description') == 0) {
107  $this->addColumn($this->lng->txt("description"), 'description', '');
108  }
109  if (strcmp($c, 'type') == 0) {
110  $this->addColumn($this->lng->txt("question_type"), 'ttype', '');
111  }
112  }
113  }
114 
115  if ($this->getWriteAccess()) {
116  if ($confirmdelete) {
117  $this->addCommandButton('confirmDeleteQuestions', $this->lng->txt('confirm'));
118  $this->addCommandButton('cancelDeleteQuestions', $this->lng->txt('cancel'));
119  } else {
120  $this->addMultiCommand('copy', $this->lng->txt('copy'));
121  $this->addMultiCommand('move', $this->lng->txt('move'));
122  $this->addMultiCommand('exportQuestion', $this->lng->txt('export'));
123  $this->addMultiCommand('deleteQuestions', $this->lng->txt('delete'));
124  }
125  }
126 
127  $this->setRowTemplate("tpl.il_as_qpl_questionbrowser_row.html", "Modules/TestQuestionPool");
128 
129  $this->setFormAction($this->ctrl->getFormAction($a_parent_obj, $a_parent_cmd));
130  $this->setDefaultOrderField("title");
131  $this->setDefaultOrderDirection("asc");
132 
133  $this->setShowRowsSelector(true);
134 
135  if ($confirmdelete) {
136  $this->disable('sort');
137  $this->disable('select_all');
138  } else {
139  $this->enable('sort');
140  $this->enable('header');
141  $this->enable('select_all');
142  $this->setFilterCommand('filterQuestionBrowser');
143  $this->setResetCommand('resetQuestionBrowser');
144  $this->initFilter();
145  }
146 
147  if ($this->isQuestionCommentingEnabled()) {
148  global $DIC; /* @var ILIAS\DI\Container $DIC */
149 
150  $notesUrl = $this->ctrl->getLinkTargetByClass(
151  array("ilcommonactiondispatchergui", "ilnotegui"),
152  "",
153  "",
154  true,
155  false
156  );
157 
158  ilNoteGUI::initJavascript($notesUrl, IL_NOTE_PUBLIC, $DIC->ui()->mainTemplate());
159  }
160  }
161 
165  public function isQuestionCommentingEnabled() : bool
166  {
168  }
169 
174  {
175  $this->questionCommentingEnabled = $questionCommentingEnabled;
176  }
177 
178  protected function isCommentsColumnSelected()
179  {
180  return in_array('comments', $this->getSelectedColumns());
181  }
182 
183  public function setQuestionData($questionData)
184  {
185  if ($this->isQuestionCommentingEnabled() && ($this->isCommentsColumnSelected() || $this->filter['commented'])) {
186  foreach ($questionData as $key => $data) {
187  $numComments = count(ilNote::_getNotesOfObject(
188  $this->parent_obj->object->getId(),
189  $data['question_id'],
190  'quest',
192  ));
193 
194  if ($this->filter['commented'] && !$numComments) {
195  unset($questionData[$key]);
196  continue;
197  }
198 
199  $questionData[$key]['comments'] = $numComments;
200  }
201  }
202 
203  $this->setData($questionData);
204  }
205 
206  public function getSelectableColumns()
207  {
208  global $DIC;
209  $lng = $DIC['lng'];
210  $cols["description"] = array(
211  "txt" => $lng->txt("description"),
212  "default" => true
213  );
214  $cols["type"] = array(
215  "txt" => $lng->txt("question_type"),
216  "default" => true
217  );
218  if (!$this->confirmdelete) {
219  $cols["points"] = array(
220  "txt" => $lng->txt("points"),
221  "default" => true
222  );
223  $cols["statistics"] = array(
224  "txt" => $lng->txt("statistics"),
225  "default" => true
226  );
227  $cols["author"] = array(
228  "txt" => $lng->txt("author"),
229  "default" => true
230  );
231  if ($this->isQuestionCommentingEnabled()) {
232  $cols["comments"] = array(
233  "txt" => $lng->txt("comments"),
234  "default" => true
235  );
236  }
237  $cols["created"] = array(
238  "txt" => $lng->txt("create_date"),
239  "default" => true
240  );
241  $cols["tstamp"] = array(
242  "txt" => $lng->txt("last_update"),
243  "default" => true
244  );
245  $cols["working_time"] = array(
246  "txt" => $lng->txt("working_time"),
247  "default" => true
248  );
249  }
250  return $cols;
251  }
252 
256  public function initFilter()
257  {
258  global $DIC;
259  $lng = $DIC['lng'];
260  $rbacreview = $DIC['rbacreview'];
261  $ilUser = $DIC['ilUser'];
262 
263  // title
264  include_once("./Services/Form/classes/class.ilTextInputGUI.php");
265  $ti = new ilTextInputGUI($lng->txt("title"), "title");
266  $ti->setMaxLength(64);
267  $ti->setValidationRegexp('/^[^%]+$/is');
268  $ti->setSize(20);
269  $this->addFilterItem($ti);
270  $ti->readFromSession();
271  $this->filter["title"] = $ti->getValue();
272 
273  // description
274  $ti = new ilTextInputGUI($lng->txt("description"), "description");
275  $ti->setMaxLength(64);
276  $ti->setSize(20);
277  $ti->setValidationRegexp('/^[^%]+$/is');
278  $this->addFilterItem($ti);
279  $ti->readFromSession();
280  $this->filter["description"] = $ti->getValue();
281 
282  if (!$this->confirmdelete) {
283  // author
284  $ti = new ilTextInputGUI($lng->txt("author"), "author");
285  $ti->setMaxLength(64);
286  $ti->setSize(20);
287  $ti->setValidationRegexp('/^[^%]+$/is');
288  $this->addFilterItem($ti);
289  $ti->readFromSession();
290  $this->filter["author"] = $ti->getValue();
291  }
292  // questiontype
293  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
294  include_once("./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php");
296  $options = array();
297  $options[""] = $lng->txt('filter_all_question_types');
298  foreach ($types as $translation => $row) {
299  $options[$row['type_tag']] = $translation;
300  }
301 
302  $si = new ilSelectInputGUI($this->lng->txt("question_type"), "type");
303  $si->setOptions($options);
304  $this->addFilterItem($si);
305  $si->readFromSession();
306  $this->filter["type"] = $si->getValue();
307 
308  if ($this->parent_obj->object->getShowTaxonomies()) {
309  require_once 'Services/Taxonomy/classes/class.ilTaxSelectInputGUI.php';
310 
311  foreach ($this->taxIds as $taxId) {
312  if ($taxId == $this->parent_obj->object->getNavTaxonomyId()) {
313  continue;
314  }
315 
316  $postvar = "tax_$taxId";
317 
318  $inp = new ilTaxSelectInputGUI($taxId, $postvar, true);
319  $this->addFilterItem($inp);
320  $inp->readFromSession();
321  $this->filter[$postvar] = $inp->getValue();
322  }
323  }
324 
325  // comments
326  if ($this->isQuestionCommentingEnabled()) {
327  $comments = new ilCheckboxInputGUI($lng->txt('ass_commented_questions_only'), 'commented');
328  $this->addFilterItem($comments);
329  $comments->readFromSession();
330  $this->filter['commented'] = $comments->getChecked();
331  }
332  }
333 
334  public function fillHeader()
335  {
336  foreach ($this->column as $key => $column) {
337  if (strcmp($column['text'], $this->lng->txt("points")) == 0) {
338  $this->column[$key]['text'] = $this->lng->txt("points") . "&nbsp;(" . $this->totalPoints . ")";
339  } elseif (strcmp($column['text'], $this->lng->txt("working_time")) == 0) {
340  $this->column[$key]['text'] = $this->lng->txt("working_time") . "&nbsp;(" . $this->totalWorkingTime . ")";
341  }
342  }
343  parent::fillHeader();
344  }
345 
353  public function fillRow($data)
354  {
355  global $DIC;
356  $ilUser = $DIC['ilUser'];
357  $ilAccess = $DIC['ilAccess'];
358  include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
359  include_once "./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
360  $class = strtolower(assQuestionGUI::_getGUIClassNameForId($data["question_id"]));
361  $this->ctrl->setParameterByClass("ilAssQuestionPageGUI", "q_id", $data["question_id"]);
362  $this->ctrl->setParameterByClass("ilAssQuestionPreviewGUI", "q_id", $data["question_id"]);
363  $this->ctrl->setParameterByClass($class, "q_id", $data["question_id"]);
364  $points = 0;
365 
366  $actions = new ilAdvancedSelectionListGUI();
367  $actions->setId('qst' . $data["question_id"]);
368  $actions->setListTitle($this->lng->txt('actions'));
369 
370  if (!$this->confirmdelete) {
371  $this->tpl->setCurrentBlock('checkbox');
372  $this->tpl->setVariable('CB_QUESTION_ID', $data["question_id"]);
373  $this->tpl->parseCurrentBlock();
374 
375  if ($data["complete"] == 0) {
376  $this->tpl->setCurrentBlock("qpl_warning");
377  $this->tpl->setVariable("IMAGE_WARNING", ilUtil::getImagePath("icon_alert.svg"));
378  $this->tpl->setVariable("ALT_WARNING", $this->lng->txt("warning_question_not_complete"));
379  $this->tpl->setVariable("TITLE_WARNING", $this->lng->txt("warning_question_not_complete"));
380  $this->tpl->parseCurrentBlock();
381  } else {
382  $points = $data["points"];
383  $this->totalWorkingTime = assQuestion::sumTimesInISO8601FormatH_i_s_Extended($this->totalWorkingTime, $data['working_time']);
384  }
385  $this->totalPoints += $points;
386 
387  foreach ($this->getSelectedColumns() as $c) {
388  if (strcmp($c, 'points') == 0) {
389  $this->tpl->setCurrentBlock('points');
390  $this->tpl->setVariable("QUESTION_POINTS", $points);
391  $this->tpl->parseCurrentBlock();
392  }
393  if (strcmp($c, 'statistics') == 0) {
394  $this->tpl->setCurrentBlock('statistics');
395  $this->tpl->setVariable("LINK_ASSESSMENT", $this->ctrl->getLinkTargetByClass($class, "assessment"));
396  $this->tpl->setVariable("TXT_ASSESSMENT", $this->lng->txt("statistics"));
397  include_once "./Services/Utilities/classes/class.ilUtil.php";
398  $this->tpl->setVariable("IMG_ASSESSMENT", ilUtil::getImagePath("assessment.gif", "Modules/TestQuestionPool"));
399  $this->tpl->parseCurrentBlock();
400  }
401  if (strcmp($c, 'author') == 0) {
402  $this->tpl->setCurrentBlock('author');
403  $this->tpl->setVariable("QUESTION_AUTHOR", $data["author"]);
404  $this->tpl->parseCurrentBlock();
405  }
406  if ($c == 'comments' && $this->isQuestionCommentingEnabled()) {
407  $this->tpl->setCurrentBlock('comments');
408  $this->tpl->setVariable("COMMENTS", $this->getCommentsHtml($data));
409  $this->tpl->parseCurrentBlock();
410  }
411  if (strcmp($c, 'created') == 0) {
412  $this->tpl->setCurrentBlock('created');
413  $this->tpl->setVariable('QUESTION_CREATED', ilDatePresentation::formatDate(new ilDateTime($data['created'], IL_CAL_UNIX)));
414  $this->tpl->parseCurrentBlock();
415  }
416  if (strcmp($c, 'tstamp') == 0) {
417  $this->tpl->setCurrentBlock('updated');
418  $this->tpl->setVariable('QUESTION_UPDATED', ilDatePresentation::formatDate(new ilDateTime($data['tstamp'], IL_CAL_UNIX)));
419  $this->tpl->parseCurrentBlock();
420  }
421  if (strcmp($c, 'working_time') == 0) {
422  $this->tpl->setCurrentBlock('working_time');
423  $this->tpl->setVariable('WORKING_TIME', $data["working_time"]);
424  $this->tpl->parseCurrentBlock();
425  }
426  }
427 
428  $actions->addItem($this->lng->txt('preview'), '', $this->ctrl->getLinkTargetByClass('ilAssQuestionPreviewGUI', ilAssQuestionPreviewGUI::CMD_SHOW));
429  if ($this->getEditable()) {
430  $editHref = $this->ctrl->getLinkTargetByClass($data['type_tag'] . 'GUI', 'editQuestion');
431  $actions->addItem($this->lng->txt('edit_question'), '', $editHref);
432 
433  $editPageHref = $this->ctrl->getLinkTargetByClass('ilAssQuestionPageGUI', 'edit');
434  $actions->addItem($this->lng->txt('edit_page'), '', $editPageHref);
435  }
436 
437  if ($this->getWriteAccess()) {
438  $this->ctrl->setParameter($this->parent_obj, 'q_id', $data['question_id']);
439  $moveHref = $this->ctrl->getLinkTarget($this->parent_obj, 'move');
440  $this->ctrl->setParameter($this->parent_obj, 'q_id', null);
441  $actions->addItem($this->lng->txt('move'), '', $moveHref);
442 
443  $this->ctrl->setParameter($this->parent_obj, 'q_id', $data['question_id']);
444  $copyHref = $this->ctrl->getLinkTarget($this->parent_obj, 'copy');
445  $this->ctrl->setParameter($this->parent_obj, 'q_id', null);
446  $actions->addItem($this->lng->txt('copy'), '', $copyHref);
447 
448  $this->ctrl->setParameter($this->parent_obj, 'q_id', $data['question_id']);
449  $deleteHref = $this->ctrl->getLinkTarget($this->parent_obj, 'deleteQuestions');
450  $this->ctrl->setParameter($this->parent_obj, 'q_id', null);
451  $actions->addItem($this->lng->txt('delete'), '', $deleteHref);
452  }
453 
454  if ($this->getEditable()) {
455  require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionFeedbackEditingGUI.php';
456  $this->ctrl->setParameterByClass('ilAssQuestionFeedbackEditingGUI', 'q_id', $data['question_id']);
457  $feedbackHref = $this->ctrl->getLinkTargetByClass('ilAssQuestionFeedbackEditingGUI', ilAssQuestionFeedbackEditingGUI::CMD_SHOW);
458  $this->ctrl->setParameterByClass('ilAssQuestionFeedbackEditingGUI', 'q_id', null);
459  $actions->addItem($this->lng->txt('tst_feedback'), '', $feedbackHref);
460 
461  $this->ctrl->setParameterByClass('ilAssQuestionHintsGUI', 'q_id', $data['question_id']);
462  $hintsHref = $this->ctrl->getLinkTargetByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_SHOW_LIST);
463  $this->ctrl->setParameterByClass('ilAssQuestionHintsGUI', 'q_id', null);
464  $actions->addItem($this->lng->txt('tst_question_hints_tab'), '', $hintsHref);
465  }
466 
467  if ($this->isQuestionCommentingEnabled()) {
468  $actions->addItem(
469  $this->lng->txt('ass_comments'),
470  'comments',
471  '',
472  '',
473  '',
474  '',
475  '',
476  '',
477  $this->getCommentsAjaxLink($data['question_id'])
478  );
479  }
480  } else {
481  $this->tpl->setCurrentBlock('hidden');
482  $this->tpl->setVariable('HIDDEN_QUESTION_ID', $data["question_id"]);
483  $this->tpl->parseCurrentBlock();
484  }
485 
486  foreach ($this->getSelectedColumns() as $c) {
487  if (strcmp($c, 'description') == 0) {
488  $this->tpl->setCurrentBlock('description');
489  $this->tpl->setVariable("QUESTION_COMMENT", (strlen($data["description"])) ? $data["description"] : "&nbsp;");
490  $this->tpl->parseCurrentBlock();
491  }
492  if (strcmp($c, 'type') == 0) {
493  $this->tpl->setCurrentBlock('type');
494  $this->tpl->setVariable("QUESTION_TYPE", assQuestion::_getQuestionTypeName($data["type_tag"]));
495  $this->tpl->parseCurrentBlock();
496  }
497  }
498  $this->tpl->setVariable('QUESTION_ID', $data["question_id"]);
499  if (!$this->confirmdelete) {
500  $this->tpl->setVariable('QUESTION_HREF_LINKED', $this->ctrl->getLinkTargetByClass('ilAssQuestionPreviewGUI', ilAssQuestionPreviewGUI::CMD_SHOW));
501  $this->tpl->setVariable('QUESTION_TITLE_LINKED', $data['title']);
502  $this->tpl->setVariable('ACTIONS', $actions->getHTML());
503  } else {
504  $this->tpl->setVariable('QUESTION_ID_UNLINKED', $data['question_id']);
505  $this->tpl->setVariable('QUESTION_TITLE_UNLINKED', $data['title']);
506  }
507  }
508 
509  public function setEditable($value)
510  {
511  $this->editable = $value;
512  }
513 
514  public function getEditable()
515  {
516  return $this->editable;
517  }
518 
519  public function setWriteAccess($value)
520  {
521  $this->writeAccess = $value;
522  }
523 
524  public function getWriteAccess()
525  {
526  return $this->writeAccess;
527  }
528 
533  public function numericOrdering($column)
534  {
535  if (in_array($column, array('points', 'created', 'tstamp', 'comments'))) {
536  return true;
537  }
538 
539  return false;
540  }
541 
542  protected function getCommentsHtml($qData)
543  {
544  if (!$qData['comments']) {
545  return '';
546  }
547 
548  $ajaxLink = $this->getCommentsAjaxLink($qData['question_id']);
549 
550  return "<a class='comment' href='#' onclick=\"return " . $ajaxLink . "\">
551  <img src='" . ilUtil::getImagePath("comment_unlabeled.svg")
552  . "' alt='{$qData['comments']}'><span class='ilHActProp'>{$qData['comments']}</span></a>";
553  }
554 
555  protected function getCommentsAjaxLink($questionId)
556  {
557  $ajax_hash = ilCommonActionDispatcherGUI::buildAjaxHash(1, $_GET['ref_id'], 'quest', $this->parent_obj->object->getId(), 'quest', $questionId);
558  return ilNoteGUI::getListCommentsJSCall($ajax_hash, '');
559  }
560 }
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
static sumTimesInISO8601FormatH_i_s_Extended($time1, $time2)
Select taxonomy nodes input GUI.
This class represents a selection list property in a property form.
setStyle($a_element, $a_style)
static _getGUIClassNameForId($a_q_id)
global $DIC
Definition: saml.php:7
$_GET["client_id"]
static initJavascript($a_ajax_url, $a_type=IL_NOTE_PRIVATE, ilTemplate $a_main_tpl=null)
Init javascript.
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
This class represents a checkbox property in a property form.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
static _getNotesOfObject( $a_rep_obj_id, $a_obj_id, $a_obj_type, $a_type=IL_NOTE_PRIVATE, $a_incl_sub=false, $a_filter="", $a_all_public="y", $a_repository_mode=true, $a_sort_ascending=false, $a_news_id=0)
get all notes related to a specific object
const IL_CAL_UNIX
__construct($a_parent_obj, $a_parent_cmd, $a_write_access=false, $confirmdelete=false, $taxIds=array(), $enableCommenting=false)
Constructor.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
const CMD_SHOW_LIST
command constants
setId($a_val)
Set id.
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
Class ilTable2GUI.
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
setSelectAllCheckbox($a_select_all_checkbox, $a_select_all_on_top=false)
Set the name of the checkbox that should be toggled with a select all button.
const IL_NOTE_PUBLIC
Definition: class.ilNote.php:6
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
This class represents a text property in a property form.
Date and time handling
$ilUser
Definition: imgupload.php:18
getSelectedColumns()
Get selected columns.
setMaxLength($a_maxlength)
Set Max Length.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
static buildAjaxHash( $a_node_type, $a_node_id, $a_obj_type, $a_obj_id, $a_sub_type=null, $a_sub_id=null, $a_news_id=0)
Build ajax hash.
static getListCommentsJSCall($a_hash, $a_update_code=null)
Get list comments js call.
setQuestionCommentingEnabled(bool $questionCommentingEnabled)
$row
User interface class for advanced drop-down selection lists.
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.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
$key
Definition: croninfo.php:18
$cols
Definition: xhr_table.php:11
static _getQuestionTypes($all_tags=false, $fixOrder=false, $withDeprecatedTypes=true)
setFilterCommand($a_val, $a_caption=null)
Set filter command.