ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjLinkResourceGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 require_once "./Services/Object/classes/class.ilObject2GUI.php";
6 include_once('./Modules/WebResource/classes/class.ilParameterAppender.php');
7 require_once 'Services/LinkChecker/interfaces/interface.ilLinkCheckerGUIRowHandling.php';
8 
23 {
24  const VIEW_MODE_VIEW = 1;
25  const VIEW_MODE_MANAGE = 2;
26  const VIEW_MODE_SORT = 3;
27 
28  const LINK_MOD_CREATE = 1;
29  const LINK_MOD_EDIT = 2;
30  const LINK_MOD_ADD = 3;
31 
32  function getType()
33  {
34  return "webr";
35  }
36 
37  public function executeCommand()
38  {
39  global $ilCtrl, $ilTabs, $ilErr, $ilAccess;
40 
41 
42  //if($this->ctrl->getTargetScript() == 'link_resources.php')
43  if($_GET["baseClass"] == 'ilLinkResourceHandlerGUI')
44  {
45  $_GET['view_mode'] = isset($_GET['switch_mode']) ? $_GET['switch_mode'] : $_GET['view_mode'];
46  $ilCtrl->saveParameter($this, 'view_mode');
47  $this->__prepareOutput();
48  }
49 
50  $this->lng->loadLanguageModule("webr");
51 
52  $next_class = $this->ctrl->getNextClass($this);
53  $cmd = $this->ctrl->getCmd();
54 
55  switch($next_class)
56  {
57  case "ilinfoscreengui":
58  $this->prepareOutput();
59  $this->infoScreenForward(); // forwards command
60  break;
61 
62  case 'ilmdeditorgui':
63  if(!$ilAccess->checkAccess('write','',$this->object->getRefId()))
64  {
65  $ilErr->raiseError($this->lng->txt('permission_denied'),$ilErr->WARNING);
66  }
67 
68  $this->prepareOutput();
69  $ilTabs->activateTab('id_meta_data');
70  include_once 'Services/MetaData/classes/class.ilMDEditorGUI.php';
71  $md_gui =& new ilMDEditorGUI($this->object->getId(), 0, $this->object->getType());
72  $md_gui->addObserver($this->object,'MDUpdateListener','General');
73  $this->ctrl->forwardCommand($md_gui);
74  break;
75 
76  case 'ilpermissiongui':
77  $this->prepareOutput();
78  $ilTabs->activateTab('id_permissions');
79  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
80  $perm_gui =& new ilPermissionGUI($this);
81  $ret =& $this->ctrl->forwardCommand($perm_gui);
82  break;
83 
84  case 'ilobjectcopygui':
85  $this->prepareOutput();
86  include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
87  $cp = new ilObjectCopyGUI($this);
88  $cp->setType('webr');
89  $this->ctrl->forwardCommand($cp);
90  break;
91 
92  case 'ilexportgui':
93  $this->prepareOutput();
94  $this->tabs_gui->setTabActive('export');
95  include_once './Services/Export/classes/class.ilExportGUI.php';
96  $exp = new ilExportGUI($this);
97  $exp->addFormat('xml');
98  $this->ctrl->forwardCommand($exp);
99  break;
100 
101  case "ilcommonactiondispatchergui":
102  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
104  $this->ctrl->forwardCommand($gui);
105  break;
106 
107  case "ilpropertyformgui":
108  include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
109  $this->initFormLink(self::LINK_MOD_EDIT);
110  $this->ctrl->forwardCommand($this->form);
111  break;
112 
113  case "ilinternallinkgui":
114  $this->lng->loadLanguageModule("content");
115  require_once("./Services/Link/classes/class.ilInternalLinkGUI.php");
116  $link_gui = new ilInternalLinkGUI("RepositoryItem", 0);
117  $link_gui->filterLinkType("PageObject");
118  $link_gui->filterLinkType("GlossaryItem");
119  $link_gui->filterLinkType("RepositoryItem");
120  $link_gui->setFilterWhiteList(true);
121  $link_gui->setMode("asynch");
122  $ilCtrl->forwardCommand($link_gui);
123  break;
124 
125  default:
126  if(!$cmd)
127  {
128  $this->ctrl->setCmd("view");
129  }
131  }
132 
133  if(!$this->getCreationMode())
134  {
135  // Fill meta header tags
136  include_once('Services/MetaData/classes/class.ilMDUtils.php');
137  ilMDUtils::_fillHTMLMetaTags($this->object->getId(),$this->object->getId(),'webr');
138 
139  $this->addHeaderAction();
140  }
141  return true;
142  }
143 
144  protected function initCreateForm($a_new_type)
145  {
146  $this->initFormLink(self::LINK_MOD_CREATE);
147  return $this->form;
148  }
149 
154  public function save()
155  {
156  global $ilCtrl;
157 
158  $this->initFormLink(self::LINK_MOD_CREATE);
159  if($this->checkLinkInput(self::LINK_MOD_CREATE,0,0))
160  {
161  // Save new object
162  $_POST['title'] = $_POST['tit'];
163  $_POST['desc'] = $_POST['des'];
164  parent::save();
165  }
166  else
167  {
168  // Data incomplete or invalid
169  ilUtil::sendFailure($this->lng->txt('err_check_input'));
170  $this->form->setValuesByPost();
171  $this->tpl->setContent($this->form->getHTML());
172  }
173  }
174 
175  protected function afterSave(ilObject $a_new_object)
176  {
177  // Save link
178  $this->link->setLinkResourceId($a_new_object->getId());
179  $link_id = $this->link->add();
180  $this->link->updateValid(true);
181 
182  ilUtil::sendSuccess($this->lng->txt('webr_link_added'));
183 
184  // personal workspace
185  if($this->id_type == self::WORKSPACE_NODE_ID)
186  {
187  $this->ctrl->redirect($this, "editLinks");
188  }
189  // repository
190  else
191  {
192  ilUtil::redirect("ilias.php?baseClass=ilLinkResourceHandlerGUI&ref_id=".
193  $a_new_object->getRefId()."&cmd=switchViewMode&switch_mode=2");
194  }
195  }
196 
202  protected function settings()
203  {
204  global $ilTabs;
205 
206  $this->checkPermission('write');
207  $ilTabs->activateTab('id_settings');
208 
209  $this->initFormSettings();
210  $this->tpl->setContent($this->form->getHTML());
211  }
212 
217  protected function saveSettings()
218  {
219  global $ilTabs;
220 
221  $this->checkPermission('write');
222  $ilTabs->activateTab('id_settings');
223 
224  $this->initFormSettings();
225  if($this->form->checkInput())
226  {
227  $this->object->setTitle($this->form->getInput('tit'));
228  $this->object->setDescription($this->form->getInput('des'));
229  $this->object->update();
230 
231  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
232  $sort = new ilContainerSortingSettings($this->object->getId());
233  $sort->setSortMode($this->form->getInput('sor'));
234  $sort->update();
235 
236  ilUtil::sendSuccess($this->lng->txt('settings_saved'),true);
237  $this->ctrl->redirect($this,'settings');
238  }
239 
240  $this->form->setValuesByPost();
241  ilUtil::sendFailure($this->lng->txt('err_check_input'));
242  $this->tpl->setContent($this->form->getHTML());
243  }
244 
245 
250  protected function initFormSettings()
251  {
252  include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
253  $this->form = new ilPropertyFormGUI();
254  $this->form->setFormAction($this->ctrl->getFormAction($this,'saveSettings'));
255  $this->form->setTitle($this->lng->txt('webr_edit_settings'));
256 
257  // Title
258  $tit = new ilTextInputGUI($this->lng->txt('webr_list_title'),'tit');
259  $tit->setValue($this->object->getTitle());
260  $tit->setRequired(true);
261  $tit->setSize(40);
262  $tit->setMaxLength(127);
263  $this->form->addItem($tit);
264 
265  // Description
266  $des = new ilTextAreaInputGUI($this->lng->txt('webr_list_desc'),'des');
267  $des->setValue($this->object->getDescription());
268  $des->setCols(40);
269  $des->setRows(3);
270  $this->form->addItem($des);
271 
272  // Sorting
273  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
274  include_once './Services/Container/classes/class.ilContainer.php';
275 
276  $sor = new ilRadioGroupInputGUI($this->lng->txt('webr_sorting'),'sor');
277  $sor->setRequired(true);
278  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
279  $sor->setValue(ilContainerSortingSettings::_lookupSortMode($this->object->getId()));
280 
281  $opt = new ilRadioOption(
282  $this->lng->txt('webr_sort_title'),
284  );
285  $sor->addOption($opt);
286 
287  $opm = new ilRadioOption(
288  $this->lng->txt('webr_sort_manual'),
290  );
291  $sor->addOption($opm);
292  $this->form->addItem($sor);
293 
294  $this->form->addCommandButton('saveSettings', $this->lng->txt('save'));
295  $this->form->addCommandButton('view', $this->lng->txt('cancel'));
296  }
297 
298 
303  public function editLink()
304  {
305  global $ilCtrl;
306 
307  $this->checkPermission('write');
308  $this->activateTabs('content','id_content_view');
309 
310  if(!(int) $_GET['link_id'])
311  {
312  ilUtil::sendFailure($this->lng->txt('select_one'),true);
313  $ilCtrl->redirect($this,'view');
314  }
315 
316  $this->initFormLink(self::LINK_MOD_EDIT);
317  $this->setValuesFromLink((int) $_GET['link_id']);
318  $this->tpl->setContent($this->form->getHTML());
319  }
320 
325  public function updateLink()
326  {
327  global $ilCtrl;
328 
329  $this->initFormLink(self::LINK_MOD_EDIT);
330  if($this->checkLinkInput(self::LINK_MOD_EDIT,$this->object->getId(),(int) $_REQUEST['link_id']))
331  {
332  $this->link->setLinkId((int) $_REQUEST['link_id']);
333  $this->link->update();
334  if(ilParameterAppender::_isEnabled() and is_object($this->dynamic))
335  {
336  $this->dynamic->add((int) $_REQUEST['link_id']);
337  }
338 
339  if($this->isContainerMetaDataRequired())
340  {
341  $this->object->setTitle($this->form->getInput('tit'));
342  $this->object->setDescription($this->form->getInput('des'));
343  $this->object->update();
344  }
345 
346  ilUtil::sendSuccess($this->lng->txt('settings_saved'),true);
347  $ilCtrl->redirect($this,'view');
348  }
349  ilUtil::sendFailure($this->lng->txt('err_check_input'));
350  $this->form->setValuesByPost();
351  $this->tpl->setContent($this->form->getHTML());
352  }
353 
358  public function addLink()
359  {
360  $this->checkPermission('write');
361  $this->activateTabs('content','id_content_view');
362 
363  $this->initFormLink(self::LINK_MOD_ADD);
364  $this->tpl->setContent($this->form->getHTML());
365  }
366 
371  public function saveAddLink()
372  {
373  global $ilCtrl;
374 
375  $this->checkPermission('write');
376 
377  $this->initFormLink(self::LINK_MOD_ADD);
378  if($this->checkLinkInput(self::LINK_MOD_ADD,$this->object->getId(),0))
379  {
380  if($this->isContainerMetaDataRequired())
381  {
382  // Save list data
383  $this->object->setTitle($this->form->getInput('lti'));
384  $this->object->setDescription($this->form->getInput('tde'));
385  $this->object->update();
386  }
387 
388  // Save Link
389  $link_id = $this->link->add();
390  $this->link->updateValid(true);
391 
392  // Dynamic parameters
393  if(ilParameterAppender::_isEnabled() and is_object($this->dynamic))
394  {
395  $this->dynamic->add($link_id);
396  }
397  ilUtil::sendSuccess($this->lng->txt('webr_link_added'),true);
398  $ilCtrl->redirect($this,'view');
399  }
400  // Error handling
401  ilUtil::sendFailure($this->lng->txt('err_check_input'));
402  $this->form->setValuesByPost();
403 
404  $this->activateTabs('content','id_content_view');
405  $this->tpl->setContent($this->form->getHTML());
406  }
407 
412  protected function deleteParameter()
413  {
414  global $ilCtrl;
415 
416  $this->checkPermission('write');
417 
418  $this->ctrl->setParameter($this,'link_id',(int) $_GET['link_id']);
419 
420  if(!isset($_GET['param_id']))
421  {
422  ilUtil::sendFailure($this->lng->txt('select_one'),TRUE);
423  $ilCtrl->redirect($this,'view');
424  }
425 
426  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
427  $param = new ilParameterAppender($this->object->getId());
428  $param->delete((int) $_GET['param_id']);
429 
430  ilUtil::sendSuccess($this->lng->txt('links_parameter_deleted'),true);
431  $ilCtrl->redirect($this,'editLinks');
432  }
433 
434  protected function deleteParameterForm()
435  {
436  global $ilCtrl;
437 
438  $this->checkPermission('write');
439 
440  if(!isset($_GET['param_id']))
441  {
442  ilUtil::sendFailure($this->lng->txt('select_one'),TRUE);
443  $ilCtrl->redirect($this,'view');
444  }
445 
446  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
447  $param = new ilParameterAppender($this->object->getId());
448  $param->delete((int) $_GET['param_id']);
449 
450  ilUtil::sendSuccess($this->lng->txt('links_parameter_deleted'),true);
451  $ilCtrl->redirect($this,'view');
452 
453  }
454 
455 
460  protected function updateLinks()
461  {
462  global $ilCtrl;
463 
464  $this->checkPermission('write');
465  $this->activateTabs('content','');
466 
467  if(!is_array($_POST['ids']))
468  {
469  ilUtil::sendFailure($this->lng->txt('select_one'),TRUE);
470  $ilCtrl->redirect($this,'view');
471  }
472 
473  // Validate
474  $invalid = array();
475  foreach($_POST['ids'] as $link_id)
476  {
477  $data = $_POST['links'][$link_id];
478 
479  // handle internal links
480  if($_POST['tar_'.$link_id.'_ajax_type'] &&
481  $_POST['tar_'.$link_id.'_ajax_id'])
482  {
483  $data['tar'] = $_POST['links'][$link_id]['tar'] =
484  $_POST['tar_'.$link_id.'_ajax_type'].'|'.
485  $_POST['tar_'.$link_id.'_ajax_id'];
486  }
487 
488 
489  if(!strlen($data['tit']))
490  {
491  $invalid[] = $link_id;
492  continue;
493  }
494  if(!strlen($data['tar']))
495  {
496  $invalid[] = $link_id;
497  continue;
498  }
499  if($data['nam'] and !$data['val'])
500  {
501  $invalid[] = $link_id;
502  continue;
503  }
504  if(!$data['nam'] and $data['val'])
505  {
506  $invalid[] = $link_id;
507  continue;
508  }
509  }
510 
511  if(count($invalid))
512  {
513  ilUtil::sendFailure($this->lng->txt('err_check_input'));
514  $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.webr_manage.html','Modules/WebResource');
515 
516  include_once './Modules/WebResource/classes/class.ilWebResourceEditableLinkTableGUI.php';
517  $table = new ilWebResourceEditableLinkTableGUI($this,'view');
518  $table->setInvalidLinks($invalid);
519  $table->parseSelectedLinks($_POST['ids']);
520  $table->updateFromPost();
521  $this->tpl->setVariable('TABLE_LINKS',$table->getHTML());
522  return false;
523  }
524 
525  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
526  $links = new ilLinkResourceItems($this->object->getId());
527 
528  // Save Settings
529  foreach($_POST['ids'] as $link_id)
530  {
531  $data = $_POST['links'][$link_id];
532 
533  $orig = ilLinkResourceItems::lookupItem($this->object->getId(),$link_id);
534 
535  $links->setLinkId($link_id);
536  $links->setTitle(ilUtil::stripSlashes($data['tit']));
537  $links->setDescription(ilUtil::stripSlashes($data['des']));
538  $links->setTarget(str_replace('"', '', ilUtil::stripSlashes($data['tar'])));
539  $links->setActiveStatus((int) $data['act']);
540  $links->setDisableCheckStatus((int) $data['che']);
541  $links->setLastCheckDate($orig['last_check']);
542  $links->setValidStatus((int) $data['vali']);
543  $links->update();
544 
545  if(strlen($data['nam']) and $data['val'])
546  {
547  $param = new ilParameterAppender($this->object->getId());
548  $param->setName(ilUtil::stripSlashes($data['nam']));
549  $param->setValue((int) $data['val']);
550  $param->add($link_id);
551  }
552 
553  if($this->isContainerMetaDataRequired())
554  {
555  $this->object->setTitle(ilUtil::stripSlashes($data['tit']));
556  $this->object->setDescription(ilUtil::stripSlashes($data['des']));
557  $this->object->update();
558  }
559 
560  // TODO: Dynamic parameters
561  }
562 
563  ilUtil::sendSuccess($this->lng->txt('settings_saved'),TRUE);
564  $ilCtrl->redirect($this,'view');
565  }
566 
572  protected function setValuesFromLink($a_link_id)
573  {
574  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
575  $link = new ilLinkResourceItems($this->object->getId());
576 
577  $values = $link->getItem($a_link_id);
578 
580  {
581  }
582 
583  $this->form->setValuesByArray(
584  array(
585  'tit' => $values['title'],
586  'tar' => $values['target'],
587  'des' => $values['description'],
588  'act' => (int) $values['active'],
589  'che' => (int) $values['disable_check'],
590  'vali' => (int) $values['valid']
591  )
592  );
593  }
594 
595 
603  protected function checkLinkInput($a_mode,$a_webr_id = 0,$a_link_id = 0)
604  {
605  $valid = $this->form->checkInput();
606 
607  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
608  $this->link = new ilLinkResourceItems($a_webr_id);
609  $this->link->setTarget(str_replace('"', '', ilUtil::stripSlashes($this->form->getInput('tar'))));
610  $this->link->setTitle($this->form->getInput('tit'));
611  $this->link->setDescription($this->form->getInput('des'));
612  $this->link->setDisableCheckStatus($this->form->getInput('che'));
613 
614  if($a_mode == self::LINK_MOD_CREATE)
615  {
616  $this->link->setActiveStatus(true);
617  }
618  else
619  {
620  $this->link->setActiveStatus($this->form->getInput('act'));
621  }
622 
623  if($a_mode == self::LINK_MOD_EDIT)
624  {
625  $this->link->setValidStatus($this->form->getInput('vali'));
626  }
627  else
628  {
629  $this->link->setValidStatus(true);
630  }
631 
633  {
634  return $valid;
635  }
636 
637  $this->dynamic = new ilParameterAppender($a_webr_id);
638  $this->dynamic->setName($this->form->getInput('nam'));
639  $this->dynamic->setValue($this->form->getInput('val'));
640  if(!$this->dynamic->validate())
641  {
642  switch($this->dynamic->getErrorCode())
643  {
644  case LINKS_ERR_NO_NAME:
645  $this->form->getItemByPostVar('nam')->setAlert($this->lng->txt('links_no_name_given'));
646  return false;
647 
648  case LINKS_ERR_NO_VALUE:
649  $this->form->getItemByPostVar('val')->setAlert($this->lng->txt('links_no_value_given'));
650  return false;
651 
653  // Nothing entered => no error
654  return $valid;
655  }
656  $this->dynamic = null;
657  }
658  return $valid;
659  }
660 
661 
667  protected function initFormLink($a_mode)
668  {
669  global $ilTabs;
670 
671  $ilTabs->activateTab("id_content");
672 
673  include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
674  $this->form = new ilPropertyFormGUI();
675 
676  switch($a_mode)
677  {
678  case self::LINK_MOD_CREATE:
679  // Header
680  $this->ctrl->setParameter($this,'new_type','webr');
681  $this->form->setTitle($this->lng->txt('webr_new_link'));
682  $this->form->setTableWidth('600px');
683 
684  // Buttons
685  $this->form->addCommandButton('save', $this->lng->txt('webr_add'));
686  $this->form->addCommandButton('cancel', $this->lng->txt('cancel'));
687  break;
688 
689  case self::LINK_MOD_ADD:
690  // Header
691  $this->form->setTitle($this->lng->txt('webr_new_link'));
692 
693  // Buttons
694  $this->form->addCommandButton('saveAddLink', $this->lng->txt('webr_add'));
695  $this->form->addCommandButton('view', $this->lng->txt('cancel'));
696  break;
697 
698  case self::LINK_MOD_EDIT:
699  // Header
700  $this->ctrl->setParameter($this,'link_id',(int) $_REQUEST['link_id']);
701  $this->form->setTitle($this->lng->txt('webr_edit'));
702 
703  // Buttons
704  $this->form->addCommandButton('updateLink', $this->lng->txt('save'));
705  $this->form->addCommandButton('view', $this->lng->txt('cancel'));
706  break;
707  }
708 
709 
710  $this->form->setFormAction($this->ctrl->getFormAction($this));
711 
712  if($a_mode == self::LINK_MOD_ADD and $this->isContainerMetaDataRequired())
713  {
714  ilUtil::sendInfo($this->lng->txt('webr_container_info'));
715 
716 
717  $this->form->setTitle($this->lng->txt('webr_edit_list'));
718 
719  // List Title
720  $title = new ilTextInputGUI($this->lng->txt('webr_list_title'),'lti');
721  $title->setRequired(true);
722  $title->setSize(40);
723  $title->setMaxLength(127);
724  $this->form->addItem($title);
725 
726  // List Description
727  $desc = new ilTextAreaInputGUI($this->lng->txt('webr_list_desc'),'tde');
728  $desc->setRows(3);
729  $desc->setCols(40);
730  $this->form->addItem($desc);
731 
732  // Addtional section
733  $sect = new ilFormSectionHeaderGUI();
734  $sect->setTitle($this->lng->txt('webr_add'));
735  $this->form->addItem($sect);
736  }
737 
738  // Target
739  /*
740  $tar = new ilTextInputGUI($this->lng->txt('webr_link_target'),'tar');
741  $tar->setValue("http://");
742 
743  $tar->setSize(40);
744  $tar->setMaxLength(500);
745  */
746  include_once 'Services/Form/classes/class.ilLinkInputGUI.php';
747  $tar = new ilLinkInputGUI($this->lng->txt('webr_link_target'),'tar');
748  $tar->setInternalLinkFilterTypes(array("PageObject", "GlossaryItem", "RepositoryItem"));
749 
750  $tar->setRequired(true);
751  $this->form->addItem($tar);
752 
753  // Title
754  $tit = new ilTextInputGUI($this->lng->txt('webr_link_title'),'tit');
755  $tit->setRequired(true);
756  $tit->setSize(40);
757  $tit->setMaxLength(127);
758  $this->form->addItem($tit);
759 
760  // Description
761  $des = new ilTextAreaInputGUI($this->lng->txt('description'),'des');
762  $des->setRows(3);
763  $des->setCols(40);
764  $this->form->addItem($des);
765 
766 
767  if($a_mode != self::LINK_MOD_CREATE)
768  {
769  // Active
770  $act = new ilCheckboxInputGUI($this->lng->txt('active'),'act');
771  $act->setChecked(true);
772  $act->setValue(1);
773  $this->form->addItem($act);
774 
775  // Check
776  $che = new ilCheckboxInputGUI($this->lng->txt('webr_disable_check'),'che');
777  $che->setValue(1);
778  $this->form->addItem($che);
779  }
780 
781  // Valid
782  if($a_mode == self::LINK_MOD_EDIT)
783  {
784  $val = new ilCheckboxInputGUI($this->lng->txt('valid'),'vali');
785  $this->form->addItem($val);
786  }
787 
788  if(ilParameterAppender::_isEnabled() && $a_mode != self::LINK_MOD_CREATE)
789  {
790  $dyn = new ilNonEditableValueGUI($this->lng->txt('links_dyn_parameter'));
791  $dyn->setInfo($this->lng->txt('links_dynamic_info'));
792 
793 
794  if(count($links = ilParameterAppender::_getParams((int) $_GET['link_id'])))
795  {
796  $ex = new ilCustomInputGUI($this->lng->txt('links_existing_params'),'ex');
797  $dyn->addSubItem($ex);
798 
799  foreach($links as $id => $link)
800  {
801  $p = new ilCustomInputGUI();
802 
803  $ptpl = new ilTemplate('tpl.link_dyn_param_edit.html',true,true,'Modules/WebResource');
804  $ptpl->setVariable('INFO_TXT',ilParameterAppender::parameterToInfo($link['name'], $link['value']));
805  $this->ctrl->setParameter($this,'param_id',$id);
806  $ptpl->setVariable('LINK_DEL',$this->ctrl->getLinkTarget($this,'deleteParameterForm'));
807  $ptpl->setVariable('LINK_TXT',$this->lng->txt('delete'));
808  $p->setHtml($ptpl->get());
809  $dyn->addSubItem($p);
810  }
811  }
812 
813  // Existing parameters
814 
815  // New parameter
816  if($a_mode != self::LINK_MOD_CREATE)
817  {
818  #$new = new ilCustomInputGUI($this->lng->txt('links_add_param'),'');
819  #$dyn->addSubItem($new);
820  }
821 
822  // Dynyamic name
823  $nam = new ilTextInputGUI($this->lng->txt('links_name'),'nam');
824  $nam->setSize(12);
825  $nam->setMaxLength(128);
826  $dyn->addSubItem($nam);
827 
828  // Dynamic value
829  $val = new ilSelectInputGUI($this->lng->txt('links_value'),'val');
831  $val->setValue(0);
832  $dyn->addSubItem($val);
833 
834  $this->form->addItem($dyn);
835  }
836  }
837 
843  protected function isContainerMetaDataRequired()
844  {
845  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
846  return ilLinkResourceItems::lookupNumberOfLinks($this->object->getId()) == 1;
847  }
848 
853  protected function switchViewMode()
854  {
855  global $ilCtrl;
856 
857  $_REQUEST['view_mode'] = $_GET['view_mode'] = (int) $_GET['switch_mode'];
858  $this->view();
859  }
860 
865  protected function editLinks()
866  {
867  $_GET['switch_mode'] = self::VIEW_MODE_MANAGE;
868  $this->switchViewMode();
869  }
870 
871 
876  public function view()
877  {
878  global $ilErr, $ilTabs;
879 
880  $ilTabs->activateTab("id_content");
881 
882  $this->checkPermission('read');
883 
884  if (strtolower($_GET["baseClass"]) == "iladministrationgui")
885  {
886  parent::view();
887  return true;
888  }
889  else
890  {
891  switch((int) $_REQUEST['view_mode'])
892  {
893  case self::VIEW_MODE_MANAGE:
894  $this->manage();
895  break;
896 
897  case self::VIEW_MODE_SORT:
898  // #14638
899  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
901  {
902  $this->sort();
903  break;
904  }
905  // fallthrough
906 
907  default:
908  $this->showLinks();
909  break;
910  }
911  }
912  $GLOBALS['tpl']->setPermanentLink($this->object->getType(),$this->object->getRefId());
913  return true;
914  }
915 
920  protected function manage()
921  {
922  $this->checkPermission('write');
923  $this->activateTabs('content','id_content_manage');
924 
925  $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.webr_manage.html','Modules/WebResource');
926  $this->showToolbar('ACTION_BUTTONS');
927 
928  include_once './Modules/WebResource/classes/class.ilWebResourceEditableLinkTableGUI.php';
929  $table = new ilWebResourceEditableLinkTableGUI($this,'view');
930  $table->parse();
931 
932  include_once './Services/Link/classes/class.ilInternalLinkGUI.php';
934 
935  $this->tpl->addJavaScript("Modules/WebResource/js/intLink.js");
936  $this->tpl->addJavascript("Services/Form/js/Form.js");
937 
938  $this->tpl->setVariable('TABLE_LINKS',$table->getHTML().$js);
939  }
940 
945  protected function showLinks()
946  {
947  $this->checkPermission('read');
948  $this->activateTabs('content','id_content_view');
949 
950  include_once './Modules/WebResource/classes/class.ilWebResourceLinkTableGUI.php';
951  $table = new ilWebResourceLinkTableGUI($this,'showLinks');
952  $table->parse();
953 
954  $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.webr_view.html','Modules/WebResource');
955  $this->showToolbar('ACTION_BUTTONS');
956  $this->tpl->setVariable('LINK_TABLE',$table->getHTML());
957  }
958 
963  protected function sort()
964  {
965  $this->checkPermission('write');
966  $this->activateTabs('content','id_content_ordering');
967 
968  include_once './Modules/WebResource/classes/class.ilWebResourceLinkTableGUI.php';
969  $table = new ilWebResourceLinkTableGUI($this,'sort',true);
970  $table->parse();
971 
972  $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.webr_view.html','Modules/WebResource');
973  $this->showToolbar('ACTION_BUTTONS');
974  $this->tpl->setVariable('LINK_TABLE',$table->getHTML());
975  }
976 
981  protected function saveSorting()
982  {
983  $this->checkPermission('write');
984 
985  include_once './Services/Container/classes/class.ilContainerSorting.php';
986  $sort = ilContainerSorting::_getInstance($this->object->getId());
987  $sort->savePost((array) $_POST['position']);
988 
989  ilUtil::sendSuccess($this->lng->txt('settings_saved'),true);
990  $this->view();
991  }
992 
993 
999  protected function showToolbar($a_tpl_var)
1000  {
1001  if(!$this->checkPermissionBool('write'))
1002  {
1003  return;
1004  }
1005 
1006  include_once './Services/UIComponent/Toolbar/classes/class.ilToolbarGUI.php';
1007  $tool = new ilToolbarGUI();
1008  $tool->setFormAction($this->ctrl->getFormAction($this));
1009  $tool->addButton(
1010  $this->lng->txt('webr_add'),
1011  $this->ctrl->getLinkTarget($this,'addLink')
1012  );
1013 
1014  $this->tpl->setVariable($a_tpl_var,$tool->getHTML());
1015  return;
1016  }
1017 
1022  protected function confirmDeleteLink()
1023  {
1024  $this->checkPermission('write');
1025  $this->activateTabs('content','id_content_view');
1026 
1027  $link_ids = array();
1028 
1029  if(is_array($_POST['link_ids']))
1030  {
1031  $link_ids =$_POST['link_ids'];
1032  }
1033  elseif(isset($_GET['link_id']))
1034  {
1035  $link_ids = array($_GET['link_id']);
1036  }
1037 
1038  if(!count($link_ids) > 0)
1039  {
1040  ilUtil::sendFailure($this->lng->txt('select_one'));
1041  $this->view();
1042  return false;
1043  }
1044 
1045  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1046  $links = new ilLinkResourceItems($this->object->getId());
1047 
1048  include_once 'Services/Utilities/classes/class.ilConfirmationGUI.php';
1049  $confirm = new ilConfirmationGUI();
1050  $confirm->setFormAction($this->ctrl->getFormAction($this,'view'));
1051  $confirm->setHeaderText($this->lng->txt('webr_sure_delete_items'));
1052  $confirm->setConfirm($this->lng->txt('delete'), 'deleteLinks');
1053  $confirm->setCancel($this->lng->txt('cancel'), 'view');
1054 
1055  foreach($link_ids as $link_id)
1056  {
1057  $link = $links->getItem($link_id);
1058  $confirm->addItem('link_ids[]', $link_id,$link['title']);
1059  }
1060  $this->tpl->setContent($confirm->getHTML());
1061  }
1062 
1067  protected function deleteLinks()
1068  {
1069  global $ilCtrl;
1070 
1071  $this->checkPermission('write');
1072 
1073  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1074  $links = new ilLinkResourceItems($this->object->getId());
1075 
1076  foreach($_POST['link_ids'] as $link_id)
1077  {
1078  $links->delete($link_id);
1079  }
1080  ilUtil::sendSuccess($this->lng->txt('webr_deleted_items'),true);
1081  $ilCtrl->redirect($this,'view');
1082  }
1083 
1088  protected function deactivateLink()
1089  {
1090  global $ilCtrl;
1091 
1092  $this->checkPermission('write');
1093 
1094  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1095  $links = new ilLinkResourceItems($this->object->getId());
1096 
1097  if(!$_GET['link_id'])
1098  {
1099  ilUtil::sendFailure($this->lng->txt('select_one'),true);
1100  $ilCtrl->redirect($this,'view');
1101  }
1102 
1103  $links->setLinkId((int) $_GET['link_id']);
1104  $links->updateActive(false);
1105 
1106  ilUtil::sendSuccess($this->lng->txt('webr_inactive_success'),true);
1107  $ilCtrl->redirect($this,'view');
1108  }
1109 
1110 
1116  function infoScreen()
1117  {
1118  $this->ctrl->setCmd("showSummary");
1119  $this->ctrl->setCmdClass("ilinfoscreengui");
1120  $this->infoScreenForward();
1121  }
1122 
1127  {
1128  global $ilTabs;
1129 
1130  $this->checkPermission('visible');
1131  $ilTabs->activateTab('id_info');
1132 
1133  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
1134  $info = new ilInfoScreenGUI($this);
1135 
1136  $info->enablePrivateNotes();
1137 
1138  // standard meta data
1139  $info->addMetaDataSections($this->object->getId(),0, $this->object->getType());
1140 
1141  if($this->id_type == self::WORKSPACE_NODE_ID)
1142  {
1143  $info->addProperty($this->lng->txt("perma_link"), $this->getPermanentLinkWidget());
1144  }
1145 
1146  // forward the command
1147  $this->ctrl->forwardCommand($info);
1148  }
1149 
1150 
1151  function history()
1152  {
1153  global $ilTabs;
1154 
1155  $this->checkPermission('write');
1156  $ilTabs->activateTab('id_history');
1157 
1158  include_once("./Services/History/classes/class.ilHistoryTableGUI.php");
1159  $hist_gui = new ilHistoryTableGUI($this, "history", $this->object->getId(), $this->object->getType);
1160  $hist_gui->initTable();
1161  $this->tpl->setContent($hist_gui->getHTML());
1162  }
1163 
1172  public function formatInvalidLinkArray(Array $row)
1173  {
1174  $this->object->items_obj->readItem($row['page_id']);
1175  $row['title'] = $this->object->items_obj->getTitle();
1176 
1177  require_once 'Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php';
1179  $actions->setSelectionHeaderClass('small');
1180  $actions->setItemLinkClass('xsmall');
1181  $actions->setListTitle($this->lng->txt('actions'));
1182  $actions->setId($row['page_id']);
1183  $this->ctrl->setParameter($this, 'link_id', $row['page_id']);
1184  $actions->addItem(
1185  $this->lng->txt('edit'),
1186  '',
1187  $this->ctrl->getLinkTarget($this, 'editLink')
1188  );
1189  $this->ctrl->clearParameters($this);
1190  $row['action_html'] = $actions->getHTML();
1191 
1192  return $row;
1193  }
1194 
1199  protected function linkChecker()
1200  {
1201  global $ilias, $ilUser, $tpl, $ilTabs;
1202 
1203  $this->checkPermission('write');
1204  $ilTabs->activateTab('id_link_check');
1205 
1206  $this->__initLinkChecker();
1207  $this->object->initLinkResourceItemsObject();
1208 
1209  require_once './Services/LinkChecker/classes/class.ilLinkCheckerTableGUI.php';
1210 
1211  $toolbar = new ilToolbarGUI();
1212 
1213  if((bool)$ilias->getSetting('cron_web_resource_check'))
1214  {
1215  include_once './Services/LinkChecker/classes/class.ilLinkCheckNotify.php';
1216  include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
1217 
1218  $chb = new ilCheckboxInputGUI($this->lng->txt('link_check_message_a'), 'link_check_message');
1219  $chb->setValue(1);
1220  $chb->setChecked((bool)ilLinkCheckNotify::_getNotifyStatus($ilUser->getId(), $this->object->getId()));
1221  $chb->setOptionTitle($this->lng->txt('link_check_message_b'));
1222 
1223  $toolbar->addInputItem($chb);
1224  $toolbar->addFormButton($this->lng->txt('save'), 'saveLinkCheck');
1225  $toolbar->setFormAction($this->ctrl->getLinkTarget($this, 'saveLinkCheck'));
1226  }
1227 
1228  $tgui = new ilLinkCheckerTableGUI($this, 'linkChecker');
1229  $tgui->setLinkChecker($this->link_checker_obj)
1230  ->setRowHandler($this)
1231  ->setRefreshButton($this->lng->txt('refresh'), 'refreshLinkCheck');
1232 
1233  return $tpl->setContent($tgui->prepareHTML()->getHTML().$toolbar->getHTML());
1234  }
1235 
1236  function saveLinkCheck()
1237  {
1238  global $ilDB,$ilUser;
1239 
1240  include_once './Services/LinkChecker/classes/class.ilLinkCheckNotify.php';
1241 
1242  $link_check_notify =& new ilLinkCheckNotify($ilDB);
1243  $link_check_notify->setUserId($ilUser->getId());
1244  $link_check_notify->setObjId($this->object->getId());
1245 
1246  if($_POST['link_check_message'])
1247  {
1248  ilUtil::sendSuccess($this->lng->txt('link_check_message_enabled'));
1249  $link_check_notify->addNotifier();
1250  }
1251  else
1252  {
1253  ilUtil::sendSuccess($this->lng->txt('link_check_message_disabled'));
1254  $link_check_notify->deleteNotifier();
1255  }
1256  $this->linkChecker();
1257 
1258  return true;
1259  }
1260 
1261 
1262 
1263  function refreshLinkCheck()
1264  {
1265  $this->__initLinkChecker();
1266 
1267  if(!$this->link_checker_obj->checkPear())
1268  {
1269  ilUtil::sendFailure($this->lng->txt('missing_pear_library'));
1270  $this->linkChecker();
1271 
1272  return false;
1273  }
1274 
1275 
1276  $this->object->initLinkResourceItemsObject();
1277 
1278  // Set all link to valid. After check invalid links will be set to invalid
1279  $this->object->items_obj->updateValidByCheck();
1280 
1281  foreach($this->link_checker_obj->checkWebResourceLinks() as $invalid)
1282  {
1283  $this->object->items_obj->readItem($invalid['page_id']);
1284  $this->object->items_obj->setActiveStatus(false);
1285  $this->object->items_obj->setValidStatus(false);
1286  $this->object->items_obj->update(false);
1287  }
1288 
1289  $this->object->items_obj->updateLastCheck();
1290  ilUtil::sendSuccess($this->lng->txt('link_checker_refreshed'));
1291 
1292  $this->linkChecker();
1293 
1294  return true;
1295  }
1296 
1298  {
1299  global $ilDB;
1300 
1301  include_once './Services/LinkChecker/classes/class.ilLinkChecker.php';
1302 
1303  $this->link_checker_obj =& new ilLinkChecker($ilDB,false);
1304  $this->link_checker_obj->setObjId($this->object->getId());
1305 
1306  return true;
1307  }
1308 
1309 
1316  protected function activateTabs($a_active_tab,$a_active_subtab = '')
1317  {
1318  global $ilCtrl, $ilTabs, $lng;
1319 
1320  switch($a_active_tab)
1321  {
1322  case 'content':
1323  if($this->checkPermissionBool('write'))
1324  {
1325  $this->lng->loadLanguageModule('cntr');
1326 
1327  $this->ctrl->setParameter($this,'switch_mode',self::VIEW_MODE_VIEW);
1328  $ilTabs->addSubTab('id_content_view',
1329  $lng->txt('view'),
1330  $this->ctrl->getLinkTarget($this,'switchViewMode')
1331  );
1332  $this->ctrl->setParameter($this,'switch_mode',self::VIEW_MODE_MANAGE);
1333  $ilTabs->addSubTab('id_content_manage',
1334  $lng->txt('cntr_manage'),
1335  $this->ctrl->getLinkTarget($this,'switchViewMode')
1336  );
1337  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1338  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
1339  include_once './Services/Container/classes/class.ilContainer.php';
1340  if((ilLinkResourceItems::lookupNumberOfLinks($this->object->getId()) > 1)
1342  {
1343  $this->ctrl->setParameter($this,'switch_mode',self::VIEW_MODE_SORT);
1344  $ilTabs->addSubTab('id_content_ordering',
1345  $this->lng->txt('cntr_ordering'),
1346  $this->ctrl->getLinkTarget($this,'switchViewMode')
1347  );
1348  }
1349 
1350  $ilCtrl->clearParameters($this);
1351  $ilTabs->activateSubTab($a_active_subtab);
1352  }
1353  }
1354 
1355  $ilTabs->activateTab('id_content');
1356  }
1357 
1358 
1363  function setTabs()
1364  {
1365  global $ilTabs, $lng, $ilHelp;
1366 
1367  $ilHelp->setScreenIdComponent("webr");
1368 
1369  if ($this->checkPermissionBool('read'))
1370  {
1371  $ilTabs->addTab("id_content",
1372  $lng->txt("content"),
1373  $this->ctrl->getLinkTarget($this, "view"));
1374  }
1375 
1376  if ($this->checkPermissionBool('visible'))
1377  {
1378  $ilTabs->addTab("id_info",
1379  $lng->txt("info_short"),
1380  $this->ctrl->getLinkTarget($this, "infoScreen"));
1381  }
1382 
1383  if($this->checkPermissionBool('write') and !$this->getCreationMode())
1384  {
1385  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1386  if(ilLinkResourceItems::lookupNumberOfLinks($this->object->getId()) > 1)
1387  {
1388  $ilTabs->addTab("id_settings",
1389  $lng->txt("settings"),
1390  $this->ctrl->getLinkTarget($this, "settings"));
1391  }
1392 
1393  }
1394 
1395  if ($this->checkPermissionBool('write'))
1396  {
1397  $ilTabs->addTab("id_history",
1398  $lng->txt("history"),
1399  $this->ctrl->getLinkTarget($this, "history"));
1400  }
1401 
1402  if ($this->checkPermissionBool('write'))
1403  {
1404  // Check if pear library is available
1405  if(@include_once('HTTP/Request.php'))
1406  {
1407  $ilTabs->addTab("id_link_check",
1408  $lng->txt("link_check"),
1409  $this->ctrl->getLinkTarget($this, "linkChecker"));
1410  }
1411  }
1412 
1413  if ($this->checkPermissionBool('write'))
1414  {
1415  $ilTabs->addTab("id_meta_data",
1416  $lng->txt("meta_data"),
1417  $this->ctrl->getLinkTargetByClass('ilmdeditorgui','listSection'));
1418  }
1419 
1420  if($this->checkPermissionBool('write'))
1421  {
1422  $ilTabs->addTab(
1423  'export',
1424  $this->lng->txt('export'),
1425  $this->ctrl->getLinkTargetByClass('ilexportgui','')
1426  );
1427  }
1428 
1429  // will add permission tab if needed
1430  parent::setTabs();
1431  }
1432 
1433  // PRIVATE
1434  function __prepareOutput()
1435  {
1436  // output objects
1437  $this->tpl->addBlockFile("CONTENT", "content", "tpl.adm_content.html");
1438  $this->tpl->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html");
1439 
1440  $this->tpl->setLocator();
1441 
1442  // output message
1443  if ($this->message)
1444  {
1445  ilUtil::sendInfo($this->message);
1446  }
1447 
1448  // display infopanel if something happened
1449  ilUtil::infoPanel();;
1450  }
1451 
1452  function addLocatorItems()
1453  {
1454  global $ilLocator;
1455 
1456  if (is_object($this->object))
1457  {
1458  $ilLocator->addItem($this->object->getTitle(),$this->ctrl->getLinkTarget($this),"",$this->object->getRefId(), "webr");
1459  }
1460  }
1461 
1462  protected function handleSubItemLinks($a_target)
1463  {
1464  // #15647 - handle internal links
1465  include_once "Services/Form/classes/class.ilFormPropertyGUI.php";
1466  include_once "Services/Form/classes/class.ilLinkInputGUI.php";
1467  if(ilLinkInputGUI::isInternalLink($a_target))
1468  {
1469  include_once("./Services/Link/classes/class.ilLink.php");
1470 
1471  // #10612
1472  $parts = explode("|", $a_target);
1473 
1474  if($parts[0] == "term")
1475  {
1476  // #16894
1477  return ilLink::_getStaticLink(
1478  0,
1479  "git",
1480  true,
1481  "&target=git_".$parts[1]
1482  );
1483  }
1484 
1485  if($parts[0] == "page")
1486  {
1487  $parts[0] = "pg";
1488  }
1489 
1490  $a_target = ilLink::_getStaticLink($parts[1], $parts[0]);
1491  }
1492 
1493  return $a_target;
1494  }
1495 
1496  function callDirectLink()
1497  {
1498  $obj_id = $this->object->getId();
1499 
1500  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1502  {
1504  if($url["target"])
1505  {
1506  $url["target"] = $this->handleSubItemLinks($url["target"]);
1507 
1508  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
1510  {
1511  $url = ilParameterAppender::_append($url);
1512  }
1513 
1514  $this->redirectToLink($this->ref_id, $obj_id, $url["target"]);
1515  }
1516  }
1517  }
1518 
1519  function callLink()
1520  {
1521  if($_REQUEST["link_id"])
1522  {
1523  $obj_id = $this->object->getId();
1524 
1525  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1526  $items = new ilLinkResourceItems($obj_id);
1527  $item = $items->getItem($_REQUEST["link_id"]);
1528  if($item["target"])
1529  {
1530  $item["target"] = $this->handleSubItemLinks($item["target"]);
1531 
1532  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
1534  {
1535  $item = ilParameterAppender::_append($item);
1536  }
1537 
1538  $this->redirectToLink($this->ref_id, $obj_id, $item["target"]);
1539  }
1540  }
1541  }
1542 
1543  protected function redirectToLink($a_ref_id, $a_obj_id, $a_url)
1544  {
1545  global $ilUser;
1546 
1547  if($a_url)
1548  {
1549  require_once('Services/Tracking/classes/class.ilChangeEvent.php');
1550  ilChangeEvent::_recordReadEvent("webr", $a_ref_id, $a_obj_id,
1551  $ilUser->getId());
1552 
1553  ilUtil::redirect($a_url);
1554  }
1555  }
1556 
1557  public static function _goto($a_target, $a_additional = null)
1558  {
1559  global $ilAccess, $ilErr, $lng;
1560 
1561  if($a_additional && substr($a_additional, -3) == "wsp")
1562  {
1563  $_GET["baseClass"] = "ilsharedresourceGUI";
1564  $_GET["wsp_id"] = $a_target;
1565  include("ilias.php");
1566  exit;
1567  }
1568 
1569  // Will be replaced in future releases by ilAccess::checkAccess()
1570  if ($ilAccess->checkAccess("read", "", $a_target))
1571  {
1572  ilUtil::redirect("ilias.php?baseClass=ilLinkResourceHandlerGUI&ref_id=$a_target");
1573  }
1574  else
1575  {
1576  // to do: force flat view
1577  if ($ilAccess->checkAccess("visible", "", $a_target))
1578  {
1579  ilUtil::redirect("ilias.php?baseClass=ilLinkResourceHandlerGUI&ref_id=".$a_target."&cmd=infoScreen");
1580  }
1581  else
1582  {
1583  if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID))
1584  {
1585  ilUtil::sendFailure(sprintf($lng->txt("msg_no_perm_read_item"),
1586  ilObject::_lookupTitle(ilObject::_lookupObjId($a_target))), true);
1588  }
1589  }
1590  }
1591 
1592  $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->FATAL);
1593  }
1594 } // END class.ilObjLinkResource
1595 ?>