ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilWebResourceEditableLinkTableGUI.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 include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
6 include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
7 include_once './Services/Form/classes/class.ilFormPropertyGUI.php';
8 include_once './Services/Form/classes/class.ilLinkInputGUI.php';
9 
19 {
20  protected $web_res = null;
21  protected $invalid = array();
22 
26  public function __construct($a_parent_obj, $a_parent_cmd)
27  {
28  global $DIC;
29 
30  $lng = $DIC['lng'];
31  $ilAccess = $DIC['ilAccess'];
32  $ilCtrl = $DIC['ilCtrl'];
33 
34  parent::__construct($a_parent_obj, $a_parent_cmd);
35 
36  // Initialize
37  $this->web_res = new ilLinkResourceItems($this->getParentObject()->object->getId());
38 
39 
40  $this->setTitle($lng->txt('webr_edit_links'));
41 
42  $this->addColumn('', '', '1px');
43  $this->addColumn($this->lng->txt('title'), 'title', '25%');
44  $this->addColumn($this->lng->txt('target'), 'target', '25%');
45  $this->addColumn($this->lng->txt('valid'), 'valid', '10px');
46  $this->addColumn($this->lng->txt('webr_active'), 'active', '10px');
47  $this->addColumn($this->lng->txt('webr_disable_check'), 'disable_check', '10px');
48  #$this->addColumn('','','10px');
49 
50  // TODO: Dynamic fields
51 
52  // TODO: sorting
53  $this->setEnableHeader(true);
54  $this->setFormAction($ilCtrl->getFormAction($this->getParentObject()));
55  $this->setRowTemplate("tpl.webr_editable_link_row.html", 'Modules/WebResource');
56  $this->setEnableTitle(true);
57  $this->setEnableNumInfo(true);
58  $this->setSelectAllCheckbox('link_ids');
59 
60  $this->addMultiCommand('confirmDeleteLink', $this->lng->txt('delete'));
61  $this->addCommandButton('updateLinks', $this->lng->txt('save'));
62  }
63 
69  public function setInvalidLinks($a_links)
70  {
71  $this->invalid = $a_links;
72  }
73 
78  public function getInvalidLinks()
79  {
80  return $this->invalid ? $this->invalid : array();
81  }
82 
88  public function parseSelectedLinks($a_link_ids)
89  {
90  $rows = array();
91  foreach ($a_link_ids as $link_id) {
92  $link = $this->getWebResourceItems()->getItem($link_id);
93 
94  $tmp['id'] = $link['link_id'];
95  $tmp['title'] = $link['title'];
96  $tmp['description'] = $link['description'];
97  $tmp['target'] = $link['target'];
98  $tmp['link_id'] = $link['link_id'];
99  $tmp['active'] = $link['active'];
100  $tmp['disable_check'] = $link['disable_check'];
101  $tmp['valid'] = $link['valid'];
102  $tmp['last_check'] = $link['last_check'];
103  $tmp['params'] = array();
104 
105  $rows[] = $tmp;
106  }
107  $this->setData($rows);
108  }
109 
110  public function updateFromPost()
111  {
112  $rows = array();
113  foreach ($this->getData() as $link) {
114  $link_id = $link['id'];
115 
116  $tmp = $link;
117  $tmp['title'] = $_POST['links'][$link_id]['title'];
118  $tmp['description'] = $_POST['links'][$link_id]['desc'];
119  $tmp['target'] = $_POST['links'][$link_id]['tar'];
120  $tmp['valid'] = $_POST['links'][$link_id]['vali'];
121  $tmp['disable_check'] = $_POST['links'][$link_id]['che'];
122  $tmp['active'] = $_POST['links'][$link_id]['act'];
123  $tmp['value'] = $_POST['links'][$link_id]['val'];
124  $tmp['name'] = $_POST['links'][$link_id]['nam'];
125  $tmp['params'] = array();
126 
127  // var_dump($_POST, $link_id);
128 
129  // var_dump($_POST['tar_'.$link_id.'_ajax_type']);
130  // var_dump($_POST['tar_'.$link_id.'_ajax_id']);
131 
132  $rows[] = $tmp;
133  }
134  $this->setData($rows);
135  }
136 
137 
142  public function parse()
143  {
144  $rows = array();
145 
146  $items = $this->getWebResourceItems()->sortItems(
147  $this->getWebResourceItems()->getAllItems()
148  );
149 
150  foreach ($items as $link) {
151  $tmp['id'] = $link['link_id'];
152  $tmp['title'] = $link['title'];
153  $tmp['description'] = $link['description'];
154  $tmp['target'] = $link['target'];
155  $tmp['link_id'] = $link['link_id'];
156  $tmp['active'] = $link['active'];
157  $tmp['disable_check'] = $link['disable_check'];
158  $tmp['valid'] = $link['valid'];
159  $tmp['last_check'] = $link['last_check'];
160  $tmp['internal'] = $link['internal'];
161 
162  $tmp['params'] = ilParameterAppender::_getParams($link['link_id']);
163 
164  $rows[] = $tmp;
165  }
166  $this->setData($rows);
167  }
168 
172  protected function fillRow($a_set)
173  {
174  global $DIC;
175 
176  $ilCtrl = $DIC['ilCtrl'];
177  $lng = $DIC['lng'];
178 
179  if (!$a_set['internal']) {
180  $this->tpl->setCurrentBlock('external');
181  $this->tpl->setVariable('VAL_ID', $a_set['id']);
182  $this->tpl->setVariable('VAL_TARGET', ilUtil::prepareFormOutput($a_set['target']));
183  $this->tpl->parseCurrentBlock();
184  } else {
185  $ilCtrl->setParameterByClass('ilinternallinkgui', 'postvar', 'tar_' . $a_set['id']);
186  $trigger_link = array(get_class($this->parent_obj), 'ilinternallinkgui');
187  $trigger_link = $ilCtrl->getLinkTargetByClass($trigger_link, '', false, true, false);
188  $ilCtrl->setParameterByClass('ilinternallinkgui', 'postvar', '');
189 
190  $this->tpl->setCurrentBlock('internal');
191  $this->tpl->setVariable('VAL_ID', $a_set['id']);
192  $this->tpl->setVariable('VAL_TRIGGER_INTERNAL', $trigger_link);
193  $this->tpl->setVariable('TXT_TRIGGER_INTERNAL', $this->lng->txt('edit'));
194 
195  // info about current link
196  if ($a_set['target']) {
197  $parts = explode('|', $a_set['target']);
198 
199  $this->tpl->setVariable('VAL_INTERNAL_TYPE', $parts[0]);
200  $this->tpl->setVariable('VAL_INTERNAL_ID', $parts[1]);
201 
202  $parts = ilLinkInputGUI::getTranslatedValue($a_set['target']);
203 
204  $this->tpl->setVariable('TXT_TRIGGER_INFO', $parts['type'] . ' "' .
205  $parts['name'] . '"');
206  }
207 
208  $this->tpl->parseCurrentBlock();
209  }
210 
211  $this->tpl->setVariable('TXT_LAST_CHECK', $this->lng->txt('webr_last_check_table'));
212  $this->tpl->setVariable(
213  'LAST_CHECK',
214  $a_set['last_check'] ?
215  ilDatePresentation::formatDate(new ilDateTime($a_set['last_check'], IL_CAL_UNIX)) :
216  $this->lng->txt('no_date')
217  );
218 
219  // Valid
220  $this->tpl->setVariable(
221  'VAL_VALID',
222  ilUtil::formCheckbox($a_set['valid'], 'links[' . $a_set['id'] . '][vali]', 1)
223  );
224 
225  // Active
226  $this->tpl->setVariable(
227  'VAL_ACTIVE',
228  ilUtil::formCheckbox($a_set['active'], 'links[' . $a_set['id'] . '][act]', 1)
229  );
230 
231  // Valid
232  $this->tpl->setVariable(
233  'VAL_CHECK',
234  ilUtil::formCheckbox($a_set['disable_check'], 'links[' . $a_set['id'] . '][che]', 1)
235  );
236 
237  // Dynamic parameters
238  foreach ($a_set['params'] as $param_id => $param) {
239  $this->tpl->setCurrentBlock('dyn_del_row');
240  $this->tpl->setVariable('TXT_DYN_DEL', $this->lng->txt('delete'));
241  $ilCtrl->setParameterByClass(get_class($this->getParentObject()), 'param_id', $param_id);
242  $this->tpl->setVariable('DYN_DEL_LINK', $ilCtrl->getLinkTarget($this->getParentObject(), 'deleteParameter'));
243  $this->tpl->setVariable('VAL_DYN', ilParameterAppender::parameterToInfo($param['name'], $param['value']));
244  $this->tpl->parseCurrentBlock();
245  }
246  if ($a_set['params']) {
247  $this->tpl->setCurrentBlock('dyn_del_rows');
248  $this->tpl->setVariable('TXT_EXISTING', $this->lng->txt('links_existing_params'));
249  $this->tpl->parseCurrentBlock();
250  }
251 
253  $this->tpl->setCurrentBlock('dyn_add');
254  $this->tpl->setVariable('TXT_DYN_ADD', $this->lng->txt('links_add_param'));
255 
256  $this->tpl->setVariable('TXT_DYN_NAME', $this->lng->txt('links_name'));
257  $this->tpl->setVariable('TXT_DYN_VALUE', $this->lng->txt('links_value'));
258  $this->tpl->setVariable('VAL_DYN_NAME', $a_set['name']);
259  $this->tpl->setVariable('DYN_ID', $a_set['id']);
260  $this->tpl->setVariable(
261  'SEL_DYN_VAL',
263  $a_set['value'] ? $a_set['value'] : 0,
264  'links[' . $a_set['id'] . '][val]',
266  false,
267  true
268  )
269  );
270  $this->tpl->parseCurrentBlock();
271  }
272 
273  if (in_array($a_set['id'], $this->getInvalidLinks())) {
274  $this->tpl->setVariable('CSS_ROW', 'warn');
275  }
276 
277  // Check
278  $this->tpl->setVariable('VAL_ID', $a_set['id']);
279  $this->tpl->setVariable(
280  'VAL_CHECKBOX',
281  ilUtil::formCheckbox(false, 'link_ids[]', $a_set['id'])
282  );
283 
284  // Column title
285  $this->tpl->setVariable('TXT_TITLE', $this->lng->txt('title'));
286  $this->tpl->setVariable('VAL_TITLE', ilUtil::prepareFormOutput($a_set['title']));
287  $this->tpl->setVariable('TXT_DESC', $this->lng->txt('description'));
288  $this->tpl->setVariable('VAL_DESC', ilUtil::prepareFormOutput($a_set['description']));
289 
290  // Column Target
291  $this->tpl->setVariable('TXT_TARGET', $this->lng->txt('target'));
292  }
293 
298  protected function getWebResourceItems()
299  {
300  return $this->web_res;
301  }
302 }
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
static getTranslatedValue($a_value)
setEnableNumInfo($a_val)
Set enable num info.
static _getOptionSelect()
Get options as array.
__construct($a_parent_obj, $a_parent_cmd)
Constructor.
const IL_CAL_UNIX
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
getParentObject()
Get parent object.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
static parameterToInfo($a_name, $a_value)
Get info text describing an existing dynamic link.
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.
$param
Definition: xapitoken.php:29
global $DIC
Definition: goto.php:24
addMultiCommand($a_cmd, $a_text)
Add Command button.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
$rows
Definition: xhr_table.php:10
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
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.
__construct(Container $dic, ilPlugin $plugin)
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.
Class ilLinkResourceItems.
setEnableHeader($a_enableheader)
Set Enable Header.
setEnableTitle($a_enabletitle)
Set Enable Title.
static _getParams($a_link_id)
Get dynamic parameter definitions.
static _isEnabled()
Check if dynamic parameters are enabled.
$_POST["username"]
static formCheckbox($checked, $varname, $value, $disabled=false)
??? public