ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilLPCollectionSettingsTableGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once './Services/Table/classes/class.ilTable2GUI.php';
5 require_once('./Services/Repository/classes/class.ilObjectPlugin.php');
6 
14 {
15  private $node_id;
16  private $mode;
17 
23  public function __construct($a_parent_obj, $a_parent_cmd = "", $a_node_id, $a_mode)
24  {
25  parent::__construct($a_parent_obj, $a_parent_cmd);
26  $this->setId('lpobjs_' . $this->getNode());
27 
28  $this->setShowRowsSelector(false);
29 
30  $this->node_id = $a_node_id;
31  $this->mode = $a_mode;
32  }
33 
38  public function getNode()
39  {
40  return $this->node_id;
41  }
42 
43  public function getMode()
44  {
45  return $this->mode;
46  }
47 
51  public function parse(ilLPCollection $a_collection)
52  {
53  $this->setData($a_collection->getTableGUIData($this->getNode()));
54  $this->initTable();
55 
56  // grouping actions
59  $this->addMultiCommand('releaseMaterials', $this->lng->txt('trac_release_materials'));
60 
61  foreach ($this->row_data as $item) {
62  if ($item["grouped"]) {
63  $this->addCommandButton('saveObligatoryMaterials', $this->lng->txt('trac_group_materials_save'));
64  break;
65  }
66  }
67  }
68  }
69 
74  protected function fillRow($a_set)
75  {
76  global $DIC;
77 
78  $objDefinition = $DIC['objDefinition'];
79  $ilAccess = $DIC['ilAccess'];
80 
81  include_once './Services/Link/classes/class.ilLink.php';
82 
83  $this->tpl->setCurrentBlock('item_row');
84  $this->tpl->setVariable('ITEM_ID', $a_set['id']);
85  $this->tpl->setVariable('COLL_TITLE', $a_set['title']);
86  $this->tpl->setVariable('COLL_DESC', $a_set['description']);
87 
88  if ($objDefinition->isPluginTypeName($a_set["type"])) {
89  $alt = ilObjectPlugin::lookupTxtById($a_set['type'], "obj_" . $a_set['type']);
90  } else {
91  $alt = $this->lng->txt('obj_' . $a_set['type']);
92  }
93  $this->tpl->setVariable('ALT_IMG', $alt);
94  $this->tpl->setVariable(
95  'TYPE_IMG',
96  ilObject::_getIcon(
97  $a_set['obj_id'],
98  'tiny',
99  $a_set['type']
100  )
101  );
102 
105  if ($a_set['ref_id']) {
106  $this->tpl->setVariable('COLL_LINK', ilLink::_getLink($a_set['ref_id'], $a_set['type']));
107  $this->tpl->setVariable('COLL_FRAME', ilFrameTargetInfo::_getFrame('MainContent', $a_set['type']));
108 
109  include_once './Services/Tree/classes/class.ilPathGUI.php';
110  $path = new ilPathGUI();
111  $this->tpl->setVariable('COLL_PATH', $this->lng->txt('path') . ': ' . $path->getPath($this->getNode(), $a_set['ref_id']));
112 
113  $mode_suffix = '';
114  if ($a_set['grouped'] ||
115  $a_set['group_item']) {
116  // #14941
117  $mode_suffix = '_INLINE';
118 
119  if (!$a_set['group_item']) {
120  $this->tpl->setVariable("COLL_MODE", "");
121  }
122  }
123  include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php';
124  if (ilLearningProgressAccess::checkPermission('edit_learning_progress', $a_set['ref_id'])) {
125  $lp_settings_link = ilLink::_getLink($a_set['ref_id'], $a_set['type'], array('gotolp' => 1));
126  $a_set["mode"] = '<a href="' . $lp_settings_link . '">' . $a_set['mode'] . '</a>'; // :TODO: il_ItemAlertProperty?
127  }
128 
129  $mode = $a_set['mode_id'];
131  $this->tpl->setVariable("COLL_MODE" . $mode_suffix, $a_set['mode']);
132  } else {
133  $this->tpl->setVariable("COLL_MODE" . $mode_suffix, "");
134  $this->tpl->setVariable("COLL_MODE_DEACTIVATED" . $mode_suffix, $a_set['mode']);
135  }
136  if ($a_set["anonymized"]) {
137  $this->tpl->setVariable("ANONYMIZED" . $mode_suffix, $this->lng->txt('trac_anonymized_info_short'));
138  }
139 
140  if ($mode_suffix) {
141  $this->tpl->setVariable("COLL_MODE_LABEL", $this->lng->txt("trac_mode"));
142  }
143  }
144  } else {
145  $this->tpl->setVariable('COLL_LINK', $a_set['url']);
146 
148  // handle tlt settings
149  $this->tpl->setCurrentBlock("tlt");
150  $this->tpl->setVariable("TXT_MONTH", $this->lng->txt('md_months'));
151  $this->tpl->setVariable("TXT_DAYS", $this->lng->txt('md_days'));
152  $this->tpl->setVariable("TXT_TIME", $this->lng->txt('md_time'));
153  $this->tpl->setVariable("TLT_HINT", '(hh:mm)');
154 
155  // seconds to units
156  $mon = floor($a_set["tlt"] / (60 * 60 * 24 * 30));
157  $tlt = $a_set["tlt"] % (60 * 60 * 24 * 30);
158  $day = floor($tlt / (60 * 60 * 24));
159  $tlt = $tlt % (60 * 60 * 24);
160  $hr = floor($tlt / (60 * 60));
161  $tlt = $tlt % (60 * 60);
162  $min = floor($tlt / 60);
163 
164  $options = array();
165  for ($i = 0;$i <= 24;$i++) {
166  $options[$i] = sprintf('%02d', $i);
167  }
168  $this->tpl->setVariable(
169  "SEL_MONTHS",
170  ilUtil::formSelect($mon, 'tlt[' . $a_set['id'] . '][mo]', $options, false, true)
171  );
172 
173  for ($i = 0;$i <= 31;$i++) {
174  $options[$i] = sprintf('%02d', $i);
175  }
176  $this->tpl->setVariable(
177  "SEL_DAYS",
178  ilUtil::formSelect($day, 'tlt[' . $a_set['id'] . '][d]', $options, false, true)
179  );
180 
181  $this->tpl->setVariable("SEL_TLT", ilUtil::makeTimeSelect(
182  'tlt[' . $a_set['id'] . ']',
183  true,
184  $hr,
185  $min,
186  null,
187  false
188  ));
189 
190  $this->tpl->parseCurrentBlock();
191  }
192  }
193 
194  // Assigned ?
195  $this->tpl->setVariable(
196  "ASSIGNED_IMG_OK",
197  $a_set['status']
198  ? ilUtil::getImagePath('icon_ok.svg')
199  : ilUtil::getImagePath('icon_not_ok.svg')
200  );
201  $this->tpl->setVariable(
202  "ASSIGNED_STATUS",
203  $a_set['status']
204  ? $this->lng->txt('trac_assigned')
205  : $this->lng->txt('trac_not_assigned')
206  );
207  $this->tpl->parseCurrentBlock();
208 
209 
210  // Parse grouped items
211  foreach ((array) $a_set['grouped'] as $item) {
212  $item['group_item'] = true;
213  $this->fillRow($item);
214  }
215 
216  // show num obligatory info
217  if (
218  is_array($a_set) &&
219  array_key_exists('grouped', $a_set) &&
220  count($a_set['grouped'])
221  ) {
222  $this->tpl->setCurrentBlock('num_passed_items');
223  $this->tpl->setVariable('MIN_PASSED_TXT', $this->lng->txt('trac_min_passed'));
224  $this->tpl->setVariable('NUM_OBLIGATORY', $a_set['num_obligatory']);
225  $this->tpl->setVariable('GRP_ID', $a_set['grouping_id']);
226  $this->tpl->parseCurrentBlock();
227  }
228  }
229 
230  protected function initTable()
231  {
232  global $DIC;
233 
234  $ilCtrl = $DIC['ilCtrl'];
235 
236  $this->setFormAction($ilCtrl->getFormAction($this->getParentObject()));
237  switch ($this->getMode()) {
240  $this->setRowTemplate('tpl.lp_collection_row.html', 'Services/Tracking');
241  $this->setTitle($this->lng->txt('trac_lp_determination'));
242  $this->setDescription($this->lng->txt('trac_lp_determination_info_crs'));
243  break;
244 
246  $this->setRowTemplate('tpl.lp_collection_row.html', 'Services/Tracking');
247  $this->setTitle($this->lng->txt('trac_lp_determination_tutor'));
248  $this->setDescription($this->lng->txt('trac_lp_determination_info_crs_tutor'));
249  break;
250 
252  $this->setRowTemplate('tpl.lp_collection_scorm_row.html', 'Services/Tracking');
253  $this->setTitle($this->lng->txt('trac_lp_determination'));
254  $this->setDescription($this->lng->txt('trac_lp_determination_info_sco'));
255  break;
256 
258  $this->setRowTemplate('tpl.lp_collection_subitem_row.html', 'Services/Tracking');
259  $this->setTitle($this->lng->txt('trac_lp_determination'));
260  $this->setDescription($this->lng->txt('trac_lp_determination_info_crs'));
261  $this->lng->loadLanguageModule("meta");
262 
263  $this->addCommandButton('updateTLT', $this->lng->txt('save'));
264  break;
265 
267  $this->setRowTemplate('tpl.lp_collection_subitem_row.html', 'Services/Tracking');
268  $this->setTitle($this->lng->txt('trac_lp_determination'));
269  $this->setDescription($this->lng->txt('trac_lp_determination_info_mob'));
270  break;
271  }
272 
273  $this->addColumn('', '', '1px');
274  $this->addColumn($this->lng->txt('item'), 'title', '50%');
275 
276  if ($this->getMode() != ilLPObjSettings::LP_MODE_SCORM &&
280  $this->addColumn($this->lng->txt('trac_mode'), 'mode');
281  } elseif ($this->getMode() == ilLPObjSettings::LP_MODE_COLLECTION_TLT) {
282  $this->addColumn($this->lng->txt('meta_typical_learning_time'), 'tlt');
283  }
284 
286  $this->addMultiCommand('assign', $this->lng->txt('trac_collection_assign'));
287  $this->addMultiCommand('deassign', $this->lng->txt('trac_collection_deassign'));
288  $this->addColumn($this->lng->txt('trac_determines_learning_progress'), 'status');
289  } else {
290  $this->addMultiCommand('assign', $this->lng->txt('trac_manual_display'));
291  $this->addMultiCommand('deassign', $this->lng->txt('trac_manual_no_display'));
292  $this->addColumn($this->lng->txt('trac_manual_is_displayed'), 'status');
293  }
294 
295  $this->enable('select_all');
296  $this->setSelectAllCheckbox('item_ids');
297 
299  $this->addMultiCommand('groupMaterials', $this->lng->txt('trac_group_materials'));
300  }
301  }
302 }
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
Creates a path for a start and endnode.
setDescription($a_val)
Set description.
$path
Definition: aliased.php:25
static lookupTxtById($plugin_id, $lang_var)
global $DIC
Definition: saml.php:7
parse(ilLPCollection $a_collection)
Read and parse items.
static checkPermission($a_permission, $a_ref_id, $a_user_id=null)
wrapper for rbac access checks
setId($a_val)
Set id.
static makeTimeSelect($prefix, $short=true, $hour="", $minute="", $second="", $a_use_default=true, $a_further_options=array())
Creates a combination of HTML selects for time inputs.
global $ilCtrl
Definition: ilias.php:18
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
getNode()
Get node id of current learning progress item.
Class ilTable2GUI.
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.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static _lookupObjId($a_id)
addMultiCommand($a_cmd, $a_text)
Add Command button.
enable($a_module_name)
enables particular modules of table
setRowTemplate($a_template, $a_template_dir="")
Set row template.
LP collection base class.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
static _getFrame($a_class, $a_type='')
Get content frame name.
static formSelect( $selected, $varname, $options, $multiple=false, $direct_text=false, $size="0", $style_class="", $attribs="", $disabled=false)
Builds a select form field with options and shows the selected option first.
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.
$i
Definition: disco.tpl.php:19
__construct($a_parent_obj, $a_parent_cmd="", $a_node_id, $a_mode)
Constructor.