ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
class.ilMarkSchemaTableGUI.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
27 {
29 
30  protected bool $is_editable = true;
31 
32  public function __construct(ilMarkSchemaGUI $parent, string $cmd, ilMarkSchemaAware $object = null)
33  {
34  $this->object = $object;
35  $this->is_editable = $this->object->canEditMarks();
36 
37  $this->setId('mark_schema_gui_' . $this->object->getMarkSchemaForeignId());
38  parent::__construct($parent, $cmd);
39 
40  $this->setFormAction($this->ctrl->getFormAction($this->getParentObject(), $cmd));
41  $this->setFormName('form_' . $this->getId());
42 
43  $this->setRowTemplate('tpl.il_as_tst_mark_schema_row.html', 'Modules/Test');
44 
45  $this->setNoEntriesText($this->lng->txt('tst_no_marks_defined'));
46 
47  if ($this->object->canEditMarks()) {
48  $this->addCommandButton('saveMarks', $this->lng->txt('save'));
49  $this->addMultiCommand('deleteMarkSteps', $this->lng->txt('delete'));
50 
51  $this->setSelectAllCheckbox('marks[]');
52  } else {
53  $this->disable('select_all');
54  }
55 
56  $this->setLimit(PHP_INT_MAX);
57 
58  $this->initColumns();
59  $this->initData();
60 
61  $this->initJS($this->main_tpl);
62  }
63 
64  protected function initColumns(): void
65  {
66  $this->addColumn('', '', '1', true);
67  $this->addColumn($this->lng->txt('tst_mark_short_form'), '');
68  $this->addColumn($this->lng->txt('tst_mark_official_form'), '');
69  $this->addColumn($this->lng->txt('tst_mark_minimum_level'), '');
70  $this->addColumn($this->lng->txt('tst_mark_passed'), '', '1');
71  }
72 
73  protected function initData(): void
74  {
75  $this->object->getMarkSchema()->sort();
76 
77  $data = [];
78 
79  $marks = $this->object->getMarkSchema()->getMarkSteps();
80  foreach ($marks as $key => $value) {
81  $data[] = [
82  'mark_id' => $key,
83  'mark_short' => $value->getShortName(),
84  'mark_official' => $value->getOfficialName(),
85  'mark_percentage' => $value->getMinimumLevel(),
86  'mark_passed' => $value->getPassed()
87  ];
88  }
89 
90  $this->setData($data);
91  }
92 
94  {
95  $tpl->addOnloadCode("
96  let form = document.querySelector('form[name=\"{$this->getFormName()}\"]');
97  let button = form.querySelector('input[name=\"cmd[saveMarks]\"]');
98  if (form && button) {
99  form.addEventListener('keydown', function (e) {
100  if (e.key === 'Enter') {
101  e.preventDefault();
102  form.requestSubmit(button);
103  }
104  })
105  }
106  ");
107  }
108 
112  public function fillRow(array $a_set): void
113  {
114  $short_name = new ilTextInputGUI('', 'mark_short_' . $a_set['mark_id']);
115  $short_name->setValue($a_set['mark_short']);
116  $short_name->setDisabled(!$this->is_editable);
117  $short_name->setMaxLength(15);
118  $short_name->setSize(10);
119 
120  $official_name = new ilTextInputGUI('', 'mark_official_' . $a_set['mark_id']);
121  $official_name->setSize(20);
122  $official_name->setDisabled(!$this->object->canEditMarks());
123  $official_name->setMaxLength(50);
124  $official_name->setValue($a_set['mark_official']);
125 
126  $percentage = new ilNumberInputGUI('', 'mark_percentage_' . $a_set['mark_id']);
127  $percentage->allowDecimals(true);
128  $percentage->setValue((string) $a_set['mark_percentage']);
129  $percentage->setSize(10);
130  $percentage->setDisabled(!$this->is_editable);
131  $percentage->setMinValue(0);
132  $percentage->setMaxValue(100);
133 
134  $this->tpl->setVariable('VAL_MARK_ID', $a_set['mark_id']);
135  $this->tpl->setVariable(
136  'VAL_CHECKBOX',
137  ilLegacyFormElementsUtil::formCheckbox(false, 'marks[]', (string) $a_set['mark_id'], !$this->is_editable)
138  );
139  $this->tpl->setVariable('VAL_SHORT_NAME', $short_name->render());
140  $this->tpl->setVariable('VAL_OFFICIAL_NAME', $official_name->render());
141  $this->tpl->setVariable('VAL_PERCENTAGE', $percentage->render());
142  $this->tpl->setVariable(
143  'VAL_PASSED_CHECKBOX',
145  (bool) $a_set['mark_passed'],
146  'passed_' . $a_set['mark_id'],
147  '1',
148  !$this->is_editable
149  )
150  );
151  }
152 }
setNoEntriesText(string $a_text)
setData(array $a_data)
__construct(ilMarkSchemaGUI $parent, string $cmd, ilMarkSchemaAware $object=null)
setFormAction(string $a_form_action, bool $a_multipart=false)
addCommandButton(string $a_cmd, string $a_text, string $a_onclick='', string $a_id="", string $a_class="")
setSelectAllCheckbox(string $a_select_all_checkbox, bool $a_select_all_on_top=false)
setFormName(string $a_name="")
setId(string $a_val)
__construct(VocabulariesInterface $vocabularies)
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
string $key
Consumer key/client ID value.
Definition: System.php:193
static formCheckbox(bool $checked, string $varname, string $value, bool $disabled=false)
setLimit(int $a_limit=0, int $a_default_limit=0)
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
disable(string $a_module_name)
addMultiCommand(string $a_cmd, string $a_text)
initJS(ilGlobalTemplateInterface $tpl)