ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules 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  public function getType()
33  {
34  return "webr";
35  }
36 
37  public function executeCommand()
38  {
39  global $DIC;
40 
41  $ilCtrl = $DIC['ilCtrl'];
42  $ilTabs = $DIC['ilTabs'];
43  $ilErr = $DIC['ilErr'];
44  $ilAccess = $DIC['ilAccess'];
45 
46 
47  //if($this->ctrl->getTargetScript() == 'link_resources.php')
48  if ($_GET["baseClass"] == 'ilLinkResourceHandlerGUI') {
49  $_GET['view_mode'] = isset($_GET['switch_mode']) ? $_GET['switch_mode'] : $_GET['view_mode'];
50  $ilCtrl->saveParameter($this, 'view_mode');
51  $this->__prepareOutput();
52  }
53 
54  $this->lng->loadLanguageModule("webr");
55 
56  $next_class = $this->ctrl->getNextClass($this);
57  $cmd = $this->ctrl->getCmd();
58 
59  switch ($next_class) {
60  case "ilinfoscreengui":
61  $this->prepareOutput();
62  $this->infoScreenForward(); // forwards command
63  break;
64 
65  case 'ilobjectmetadatagui':
66  $this->checkPermission('write'); // #18563
67  $this->prepareOutput();
68  $ilTabs->activateTab('id_meta_data');
69  include_once 'Services/Object/classes/class.ilObjectMetaDataGUI.php';
70  $md_gui = new ilObjectMetaDataGUI($this->object);
71  $this->ctrl->forwardCommand($md_gui);
72  break;
73 
74  case 'ilpermissiongui':
75  $this->prepareOutput();
76  $ilTabs->activateTab('id_permissions');
77  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
78  $perm_gui = new ilPermissionGUI($this);
79  $ret = &$this->ctrl->forwardCommand($perm_gui);
80  break;
81 
82  case 'ilobjectcopygui':
83  $this->prepareOutput();
84  include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
85  $cp = new ilObjectCopyGUI($this);
86  $cp->setType('webr');
87  $this->ctrl->forwardCommand($cp);
88  break;
89 
90  case 'ilexportgui':
91  $this->prepareOutput();
92  $this->tabs_gui->setTabActive('export');
93  include_once './Services/Export/classes/class.ilExportGUI.php';
94  $exp = new ilExportGUI($this);
95  $exp->addFormat('xml');
96  $this->ctrl->forwardCommand($exp);
97  break;
98 
99  case "ilcommonactiondispatchergui":
100  $this->prepareOutput();
102  $this->ctrl->forwardCommand($gui);
103  break;
104 
105  case "ilpropertyformgui":
106  include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
107  $this->initFormLink(self::LINK_MOD_EDIT);
108  $this->ctrl->forwardCommand($this->form);
109  break;
110 
111  case "ilinternallinkgui":
112  $this->lng->loadLanguageModule("content");
113  require_once("./Services/Link/classes/class.ilInternalLinkGUI.php");
114  $link_gui = new ilInternalLinkGUI("RepositoryItem", 0);
115  $link_gui->filterLinkType("PageObject");
116  $link_gui->filterLinkType("GlossaryItem");
117  $link_gui->filterLinkType("RepositoryItem");
118  $link_gui->setFilterWhiteList(true);
119  $ilCtrl->forwardCommand($link_gui);
120  break;
121 
122  default:
123  if (!$cmd) {
124  $this->ctrl->setCmd("view");
125  }
126  parent::executeCommand();
127  }
128 
129  if (!$this->getCreationMode()) {
130  // Fill meta header tags
131  include_once('Services/MetaData/classes/class.ilMDUtils.php');
132  ilMDUtils::_fillHTMLMetaTags($this->object->getId(), $this->object->getId(), 'webr');
133 
134  $this->addHeaderAction();
135  }
136  return true;
137  }
138 
139  protected function initCreateForm($a_new_type)
140  {
141  $this->initFormLink(self::LINK_MOD_CREATE);
142  return $this->form;
143  }
144 
149  public function save()
150  {
151  global $DIC;
152 
153  $ilCtrl = $DIC['ilCtrl'];
154 
155  $this->initFormLink(self::LINK_MOD_CREATE);
156  if ($this->checkLinkInput(self::LINK_MOD_CREATE, 0, 0)) {
157  // Save new object
158  $_POST['title'] = $_POST['tit'];
159  $_POST['desc'] = $_POST['des'];
160  parent::save();
161  } else {
162  // Data incomplete or invalid
163  ilUtil::sendFailure($this->lng->txt('err_check_input'));
164  $this->form->setValuesByPost();
165  $this->tpl->setContent($this->form->getHTML());
166  }
167  }
168 
169  protected function afterSave(ilObject $a_new_object)
170  {
171  // Save link
172  $this->link->setLinkResourceId($a_new_object->getId());
173  $link_id = $this->link->add();
174  $this->link->updateValid(true);
175 
176  ilUtil::sendSuccess($this->lng->txt('webr_link_added'));
177 
178  // personal workspace
179  if ($this->id_type == self::WORKSPACE_NODE_ID) {
180  $this->ctrl->redirect($this, "editLinks");
181  }
182  // repository
183  else {
184  ilUtil::redirect("ilias.php?baseClass=ilLinkResourceHandlerGUI&ref_id=" .
185  $a_new_object->getRefId() . "&cmd=switchViewMode&switch_mode=2");
186  }
187  }
188 
194  protected function settings()
195  {
196  global $DIC;
197 
198  $ilTabs = $DIC['ilTabs'];
199 
200  $this->checkPermission('write');
201  $ilTabs->activateTab('id_settings');
202 
203  $this->initFormSettings();
204  $this->tpl->setContent($this->form->getHTML());
205  }
206 
211  protected function saveSettings()
212  {
213  global $DIC;
214 
215  $obj_service = $this->object_service;
216  $ilTabs = $DIC['ilTabs'];
217 
218  $this->checkPermission('write');
219  $ilTabs->activateTab('id_settings');
220 
221  $this->initFormSettings();
222  if ($this->form->checkInput()) {
223  $this->object->setTitle($this->form->getInput('tit'));
224  $this->object->setDescription($this->form->getInput('des'));
225  $this->object->update();
226 
227  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
228  $sort = new ilContainerSortingSettings($this->object->getId());
229  $sort->setSortMode($this->form->getInput('sor'));
230  $sort->update();
231 
232  // tile image
233  $obj_service->commonSettings()->legacyForm($this->form, $this->object)->saveTileImage();
234 
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  $obj_service = $this->object_service;
253 
254  include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
255  $this->form = new ilPropertyFormGUI();
256  $this->form->setFormAction($this->ctrl->getFormAction($this, 'saveSettings'));
257 
258  if (ilLinkResourceItems::lookupNumberOfLinks($this->object->getId()) > 1) {
259  $this->form->setTitle($this->lng->txt('webr_edit_settings'));
260 
261  // Title
262  $tit = new ilTextInputGUI($this->lng->txt('webr_list_title'), 'tit');
263  $tit->setValue($this->object->getTitle());
264  $tit->setRequired(true);
265  $tit->setSize(40);
266  $tit->setMaxLength(127);
267  $this->form->addItem($tit);
268 
269  // Description
270  $des = new ilTextAreaInputGUI($this->lng->txt('webr_list_desc'), 'des');
271  $des->setValue($this->object->getDescription());
272  $des->setCols(40);
273  $des->setRows(3);
274  $this->form->addItem($des);
275 
277  $section->setTitle($this->lng->txt('obj_presentation'));
278  $this->form->addItem($section);
279 
280  // tile image
281  $obj_service->commonSettings()->legacyForm($this->form, $this->object)->addTileImage();
282 
283  // Sorting
284  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
285  include_once './Services/Container/classes/class.ilContainer.php';
286 
287  $sor = new ilRadioGroupInputGUI($this->lng->txt('webr_sorting'), 'sor');
288  $sor->setRequired(true);
289  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
290  $sor->setValue(ilContainerSortingSettings::_lookupSortMode($this->object->getId()));
291 
292  $opt = new ilRadioOption(
293  $this->lng->txt('webr_sort_title'),
295  );
296  $sor->addOption($opt);
297 
298  $opm = new ilRadioOption(
299  $this->lng->txt('webr_sort_manual'),
301  );
302  $sor->addOption($opm);
303  $this->form->addItem($sor);
304  } else {
305  $this->form->setTitle($this->lng->txt('obj_presentation'));
306 
307  // hidden title
308  $tit = new ilHiddenInputGUI('tit');
309  $tit->setValue($this->object->getTitle());
310  $this->form->addItem($tit);
311 
312  // hidden description
313  $des = new ilHiddenInputGUI('des');
314  $des->setValue($this->object->getDescription());
315  $this->form->addItem($des);
316 
317  // tile image
318  $obj_service->commonSettings()->legacyForm($this->form, $this->object)->addTileImage();
319  }
320 
321  $this->form->addCommandButton('saveSettings', $this->lng->txt('save'));
322  $this->form->addCommandButton('view', $this->lng->txt('cancel'));
323  }
324 
325 
330  public function editLink()
331  {
332  global $DIC;
333 
334  $ilCtrl = $DIC['ilCtrl'];
335 
336  $this->checkPermission('write');
337  $this->activateTabs('content', 'id_content_view');
338 
339  if (!(int) $_GET['link_id']) {
340  ilUtil::sendFailure($this->lng->txt('select_one'), true);
341  $ilCtrl->redirect($this, 'view');
342  }
343 
344  $this->initFormLink(self::LINK_MOD_EDIT);
345  $this->setValuesFromLink((int) $_GET['link_id']);
346  $this->tpl->setContent($this->form->getHTML());
347  }
348 
353  public function updateLink()
354  {
355  global $DIC;
356 
357  $ilCtrl = $DIC['ilCtrl'];
358 
359  $this->initFormLink(self::LINK_MOD_EDIT);
360  if ($this->checkLinkInput(self::LINK_MOD_EDIT, $this->object->getId(), (int) $_REQUEST['link_id'])) {
361  $this->link->setLinkId((int) $_REQUEST['link_id']);
362  $this->link->update();
363  if (ilParameterAppender::_isEnabled() and is_object($this->dynamic)) {
364  $this->dynamic->add((int) $_REQUEST['link_id']);
365  }
366 
367  if ($this->isContainerMetaDataRequired()) {
368  $this->object->setTitle($this->form->getInput('tit'));
369  $this->object->setDescription($this->form->getInput('des'));
370  $this->object->update();
371  }
372 
373  ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
374  $ilCtrl->redirect($this, 'view');
375  }
376  ilUtil::sendFailure($this->lng->txt('err_check_input'));
377  $this->form->setValuesByPost();
378  $this->tpl->setContent($this->form->getHTML());
379  }
380 
385  public function addLink()
386  {
387  $this->checkPermission('write');
388  $this->activateTabs('content', 'id_content_view');
389 
390  $this->initFormLink(self::LINK_MOD_ADD);
391  $this->tpl->setContent($this->form->getHTML());
392  }
393 
398  public function saveAddLink()
399  {
400  global $DIC;
401 
402  $ilCtrl = $DIC['ilCtrl'];
403 
404  $this->checkPermission('write');
405 
406  $this->initFormLink(self::LINK_MOD_ADD);
407  if ($this->checkLinkInput(self::LINK_MOD_ADD, $this->object->getId(), 0)) {
408  if ($this->isContainerMetaDataRequired()) {
409  // Save list data
410  $this->object->setTitle($this->form->getInput('lti'));
411  $this->object->setDescription($this->form->getInput('tde'));
412  $this->object->update();
413  }
414 
415  // Save Link
416  $link_id = $this->link->add();
417  $this->link->updateValid(true);
418 
419  // Dynamic parameters
420  if (ilParameterAppender::_isEnabled() and is_object($this->dynamic)) {
421  $this->dynamic->add($link_id);
422  }
423  ilUtil::sendSuccess($this->lng->txt('webr_link_added'), true);
424  $ilCtrl->redirect($this, 'view');
425  }
426  // Error handling
427  ilUtil::sendFailure($this->lng->txt('err_check_input'));
428  $this->form->setValuesByPost();
429 
430  $this->activateTabs('content', 'id_content_view');
431  $this->tpl->setContent($this->form->getHTML());
432  }
433 
438  protected function deleteParameter()
439  {
440  global $DIC;
441 
442  $ilCtrl = $DIC['ilCtrl'];
443 
444  $this->checkPermission('write');
445 
446  $this->ctrl->setParameter($this, 'link_id', (int) $_GET['link_id']);
447 
448  if (!isset($_GET['param_id'])) {
449  ilUtil::sendFailure($this->lng->txt('select_one'), true);
450  $ilCtrl->redirect($this, 'view');
451  }
452 
453  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
454  $param = new ilParameterAppender($this->object->getId());
455  $param->delete((int) $_GET['param_id']);
456 
457  ilUtil::sendSuccess($this->lng->txt('links_parameter_deleted'), true);
458  $ilCtrl->redirect($this, 'editLinks');
459  }
460 
461  protected function deleteParameterForm()
462  {
463  global $DIC;
464 
465  $ilCtrl = $DIC['ilCtrl'];
466 
467  $this->checkPermission('write');
468 
469  if (!isset($_GET['param_id'])) {
470  ilUtil::sendFailure($this->lng->txt('select_one'), true);
471  $ilCtrl->redirect($this, 'view');
472  }
473 
474  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
475  $param = new ilParameterAppender($this->object->getId());
476  $param->delete((int) $_GET['param_id']);
477 
478  ilUtil::sendSuccess($this->lng->txt('links_parameter_deleted'), true);
479  $ilCtrl->redirect($this, 'view');
480  }
481 
482 
487  protected function updateLinks()
488  {
489  global $DIC;
490 
491  $ilCtrl = $DIC['ilCtrl'];
492 
493  $this->checkPermission('write');
494  $this->activateTabs('content', '');
495 
496  if (!is_array($_POST['ids'])) {
497  ilUtil::sendFailure($this->lng->txt('select_one'), true);
498  $ilCtrl->redirect($this, 'view');
499  }
500 
501  // Validate
502  $invalid = array();
503  foreach ($_POST['ids'] as $link_id) {
504  $data = $_POST['links'][$link_id];
505 
506  // handle internal links
507  if ($_POST['tar_' . $link_id . '_ajax_type'] &&
508  $_POST['tar_' . $link_id . '_ajax_id']) {
509  $data['tar'] = $_POST['links'][$link_id]['tar'] =
510  $_POST['tar_' . $link_id . '_ajax_type'] . '|' .
511  $_POST['tar_' . $link_id . '_ajax_id'];
512  }
513 
514 
515  if (!strlen($data['tit'])) {
516  $invalid[] = $link_id;
517  continue;
518  }
519  if (!strlen($data['tar'])) {
520  $invalid[] = $link_id;
521  continue;
522  }
523  if ($data['nam'] and !$data['val']) {
524  $invalid[] = $link_id;
525  continue;
526  }
527  if (!$data['nam'] and $data['val']) {
528  $invalid[] = $link_id;
529  continue;
530  }
531  }
532 
533  if (count($invalid)) {
534  ilUtil::sendFailure($this->lng->txt('err_check_input'));
535  $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.webr_manage.html', 'Modules/WebResource');
536 
537  include_once './Modules/WebResource/classes/class.ilWebResourceEditableLinkTableGUI.php';
538  $table = new ilWebResourceEditableLinkTableGUI($this, 'view');
539  $table->setInvalidLinks($invalid);
540  $table->parseSelectedLinks($_POST['ids']);
541  $table->updateFromPost();
542  $this->tpl->setVariable('TABLE_LINKS', $table->getHTML());
543  return false;
544  }
545 
546  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
547  $links = new ilLinkResourceItems($this->object->getId());
548 
549  // Save Settings
550  include_once './Services/Form/classes/class.ilFormPropertyGUI.php';
551  include_once './Services/Form/classes/class.ilLinkInputGUI.php';
552  foreach ($_POST['ids'] as $link_id) {
553  $data = $_POST['links'][$link_id];
554 
555  $orig = ilLinkResourceItems::lookupItem($this->object->getId(), $link_id);
556 
557  $links->setLinkId($link_id);
558  $links->setTitle(ilUtil::stripSlashes($data['tit']));
559  $links->setDescription(ilUtil::stripSlashes($data['des']));
560  $links->setTarget(str_replace('"', '', ilUtil::stripSlashes($data['tar'])));
561  $links->setActiveStatus((int) $data['act']);
562  $links->setDisableCheckStatus((int) $data['che']);
563  $links->setLastCheckDate($orig['last_check']);
564  $links->setValidStatus((int) $data['vali']);
565  $links->setInternal(ilLinkInputGUI::isInternalLink($data['tar']));
566  $links->update();
567 
568  if (strlen($data['nam']) and $data['val']) {
569  $param = new ilParameterAppender($this->object->getId());
570  $param->setName(ilUtil::stripSlashes($data['nam']));
571  $param->setValue((int) $data['val']);
572  $param->add($link_id);
573  }
574 
575  if ($this->isContainerMetaDataRequired()) {
576  $this->object->setTitle(ilUtil::stripSlashes($data['tit']));
577  $this->object->setDescription(ilUtil::stripSlashes($data['des']));
578  $this->object->update();
579  }
580 
581  // TODO: Dynamic parameters
582  }
583 
584  ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
585  $ilCtrl->redirect($this, 'view');
586  }
587 
593  protected function setValuesFromLink($a_link_id)
594  {
595  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
596  $link = new ilLinkResourceItems($this->object->getId());
597 
598  $values = $link->getItem($a_link_id);
599 
601  }
602 
603  $this->form->setValuesByArray(
604  array(
605  'tit' => $values['title'],
606  'tar' => $values['target'],
607  'des' => $values['description'],
608  'act' => (int) $values['active'],
609  'che' => (int) $values['disable_check'],
610  'vali' => (int) $values['valid']
611  )
612  );
613  }
614 
615 
623  protected function checkLinkInput($a_mode, $a_webr_id = 0, $a_link_id = 0)
624  {
625  $valid = $this->form->checkInput();
626 
627  $link_input = $this->form->getInput('tar');
628 
629  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
630  $this->link = new ilLinkResourceItems($a_webr_id);
631  $this->link->setTarget(str_replace('"', '', ilUtil::stripSlashes($link_input)));
632  $this->link->setTitle($this->form->getInput('tit'));
633  $this->link->setDescription($this->form->getInput('des'));
634  $this->link->setDisableCheckStatus($this->form->getInput('che'));
635  $this->link->setInternal(ilLinkInputGUI::isInternalLink($link_input));
636 
637  if ($a_mode == self::LINK_MOD_CREATE) {
638  $this->link->setActiveStatus(true);
639  } else {
640  $this->link->setActiveStatus($this->form->getInput('act'));
641  }
642 
643  if ($a_mode == self::LINK_MOD_EDIT) {
644  $this->link->setValidStatus($this->form->getInput('vali'));
645  } else {
646  $this->link->setValidStatus(true);
647  }
648 
650  return $valid;
651  }
652 
653  $this->dynamic = new ilParameterAppender($a_webr_id);
654  $this->dynamic->setName($this->form->getInput('nam'));
655  $this->dynamic->setValue($this->form->getInput('val'));
656  if (!$this->dynamic->validate()) {
657  switch ($this->dynamic->getErrorCode()) {
658  case LINKS_ERR_NO_NAME:
659  $this->form->getItemByPostVar('nam')->setAlert($this->lng->txt('links_no_name_given'));
660  return false;
661 
662  case LINKS_ERR_NO_VALUE:
663  $this->form->getItemByPostVar('val')->setAlert($this->lng->txt('links_no_value_given'));
664  return false;
665 
667  // Nothing entered => no error
668  return $valid;
669  }
670  $this->dynamic = null;
671  }
672  return $valid;
673  }
674 
675 
681  protected function initFormLink($a_mode)
682  {
683  global $DIC;
684 
685  $ilTabs = $DIC['ilTabs'];
686 
687  $ilTabs->activateTab("id_content");
688 
689  include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
690  $this->form = new ilPropertyFormGUI();
691 
692  switch ($a_mode) {
693  case self::LINK_MOD_CREATE:
694  // Header
695  $this->ctrl->setParameter($this, 'new_type', 'webr');
696  $this->form->setTitle($this->lng->txt('webr_new_link'));
697  $this->form->setTableWidth('600px');
698 
699  // Buttons
700  $this->form->addCommandButton('save', $this->lng->txt('webr_add'));
701  $this->form->addCommandButton('cancel', $this->lng->txt('cancel'));
702  break;
703 
704  case self::LINK_MOD_ADD:
705  // Header
706  $this->form->setTitle($this->lng->txt('webr_new_link'));
707 
708  // Buttons
709  $this->form->addCommandButton('saveAddLink', $this->lng->txt('webr_add'));
710  $this->form->addCommandButton('view', $this->lng->txt('cancel'));
711  break;
712 
713  case self::LINK_MOD_EDIT:
714  // Header
715  $this->ctrl->setParameter($this, 'link_id', (int) $_REQUEST['link_id']);
716  $this->form->setTitle($this->lng->txt('webr_edit'));
717 
718  // Buttons
719  $this->form->addCommandButton('updateLink', $this->lng->txt('save'));
720  $this->form->addCommandButton('view', $this->lng->txt('cancel'));
721  break;
722  }
723 
724 
725  $this->form->setFormAction($this->ctrl->getFormAction($this));
726 
727  if ($a_mode == self::LINK_MOD_ADD and $this->isContainerMetaDataRequired()) {
728  ilUtil::sendInfo($this->lng->txt('webr_container_info'));
729 
730 
731  $this->form->setTitle($this->lng->txt('webr_edit_list'));
732 
733  // List Title
734  $title = new ilTextInputGUI($this->lng->txt('webr_list_title'), 'lti');
735  $title->setRequired(true);
736  $title->setSize(40);
737  $title->setMaxLength(127);
738  $this->form->addItem($title);
739 
740  // List Description
741  $desc = new ilTextAreaInputGUI($this->lng->txt('webr_list_desc'), 'tde');
742  $desc->setRows(3);
743  $desc->setCols(40);
744  $this->form->addItem($desc);
745 
746  // Addtional section
747  $sect = new ilFormSectionHeaderGUI();
748  $sect->setTitle($this->lng->txt('webr_add'));
749  $this->form->addItem($sect);
750  }
751 
752  // Target
753  /*
754  $tar = new ilTextInputGUI($this->lng->txt('webr_link_target'),'tar');
755  $tar->setValue("http://");
756 
757  $tar->setSize(40);
758  $tar->setMaxLength(500);
759  */
760  include_once 'Services/Form/classes/class.ilLinkInputGUI.php';
761  $tar = new ilLinkInputGUI($this->lng->txt('webr_link_target'), 'tar');
763  array(
764  "PageObject",
765  "GlossaryItem",
766  "RepositoryItem",
767  'WikiPage'
768  )
769  );
770  $tar->setExternalLinkMaxLength(1000);
771  $tar->setInternalLinkFilterTypes(array("PageObject", "GlossaryItem", "RepositoryItem"));
772  $tar->setRequired(true);
773  $this->form->addItem($tar);
774 
775  // Title
776  $tit = new ilTextInputGUI($this->lng->txt('webr_link_title'), 'tit');
777  $tit->setRequired(true);
778  $tit->setSize(40);
779  $tit->setMaxLength(127);
780  $this->form->addItem($tit);
781 
782  // Description
783  $des = new ilTextAreaInputGUI($this->lng->txt('description'), 'des');
784  $des->setRows(3);
785  $des->setCols(40);
786  $this->form->addItem($des);
787 
788 
789  if ($a_mode != self::LINK_MOD_CREATE) {
790  // Active
791  $act = new ilCheckboxInputGUI($this->lng->txt('active'), 'act');
792  $act->setChecked(true);
793  $act->setValue(1);
794  $this->form->addItem($act);
795 
796  // Check
797  $che = new ilCheckboxInputGUI($this->lng->txt('webr_disable_check'), 'che');
798  $che->setValue(1);
799  $this->form->addItem($che);
800  }
801 
802  // Valid
803  if ($a_mode == self::LINK_MOD_EDIT) {
804  $val = new ilCheckboxInputGUI($this->lng->txt('valid'), 'vali');
805  $this->form->addItem($val);
806  }
807 
808  if (ilParameterAppender::_isEnabled() && $a_mode != self::LINK_MOD_CREATE) {
809  $dyn = new ilNonEditableValueGUI($this->lng->txt('links_dyn_parameter'));
810  $dyn->setInfo($this->lng->txt('links_dynamic_info'));
811 
812 
813  if (count($links = ilParameterAppender::_getParams((int) $_GET['link_id']))) {
814  $ex = new ilCustomInputGUI($this->lng->txt('links_existing_params'), 'ex');
815  $dyn->addSubItem($ex);
816 
817  foreach ($links as $id => $link) {
818  $p = new ilCustomInputGUI();
819 
820  $ptpl = new ilTemplate('tpl.link_dyn_param_edit.html', true, true, 'Modules/WebResource');
821  $ptpl->setVariable('INFO_TXT', ilParameterAppender::parameterToInfo($link['name'], $link['value']));
822  $this->ctrl->setParameter($this, 'param_id', $id);
823  $ptpl->setVariable('LINK_DEL', $this->ctrl->getLinkTarget($this, 'deleteParameterForm'));
824  $ptpl->setVariable('LINK_TXT', $this->lng->txt('delete'));
825  $p->setHtml($ptpl->get());
826  $dyn->addSubItem($p);
827  }
828  }
829 
830  // Existing parameters
831 
832  // New parameter
833  if ($a_mode != self::LINK_MOD_CREATE) {
834  #$new = new ilCustomInputGUI($this->lng->txt('links_add_param'),'');
835  #$dyn->addSubItem($new);
836  }
837 
838  // Dynyamic name
839  $nam = new ilTextInputGUI($this->lng->txt('links_name'), 'nam');
840  $nam->setSize(12);
841  $nam->setMaxLength(128);
842  $dyn->addSubItem($nam);
843 
844  // Dynamic value
845  $val = new ilSelectInputGUI($this->lng->txt('links_value'), 'val');
846  $val->setOptions(ilParameterAppender::_getOptionSelect());
847  $val->setValue(0);
848  $dyn->addSubItem($val);
849 
850  $this->form->addItem($dyn);
851  }
852  }
853 
859  protected function isContainerMetaDataRequired()
860  {
861  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
862  return ilLinkResourceItems::lookupNumberOfLinks($this->object->getId()) == 1;
863  }
864 
869  protected function switchViewMode()
870  {
871  global $DIC;
872 
873  $ilCtrl = $DIC['ilCtrl'];
874 
875  $_REQUEST['view_mode'] = $_GET['view_mode'] = (int) $_GET['switch_mode'];
876  $this->view();
877  }
878 
883  protected function editLinks()
884  {
885  $_GET['switch_mode'] = self::VIEW_MODE_MANAGE;
886  $this->switchViewMode();
887  }
888 
889 
894  public function view()
895  {
896  global $DIC;
897 
898  $ilErr = $DIC['ilErr'];
899  $ilTabs = $DIC['ilTabs'];
900 
901  $ilTabs->activateTab("id_content");
902 
903  $this->checkPermission('read');
904 
905  if (strtolower($_GET["baseClass"]) == "iladministrationgui") {
906  parent::view();
907  return true;
908  } else {
909  switch ((int) $_REQUEST['view_mode']) {
910  case self::VIEW_MODE_MANAGE:
911  $this->manage();
912  break;
913 
914  case self::VIEW_MODE_SORT:
915  // #14638
916  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
918  $this->sort();
919  break;
920  }
921  // fallthrough
922 
923  // no break
924  default:
925  $this->showLinks();
926  break;
927  }
928  }
929  $GLOBALS['DIC']['tpl']->setPermanentLink($this->object->getType(), $this->object->getRefId());
930  return true;
931  }
932 
937  protected function manage()
938  {
939  $this->checkPermission('write');
940  $this->activateTabs('content', 'id_content_manage');
941 
942  $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.webr_manage.html', 'Modules/WebResource');
943  $this->showToolbar('ACTION_BUTTONS');
944 
945  include_once './Modules/WebResource/classes/class.ilWebResourceEditableLinkTableGUI.php';
946  $table = new ilWebResourceEditableLinkTableGUI($this, 'view');
947  $table->parse();
948 
949  include_once './Services/Link/classes/class.ilInternalLinkGUI.php';
951 
952  $this->tpl->addJavaScript("Modules/WebResource/js/intLink.js");
953  $this->tpl->addJavascript("Services/Form/js/Form.js");
954 
955  $this->tpl->setVariable('TABLE_LINKS', $table->getHTML() . $js);
956  }
957 
962  protected function showLinks()
963  {
964  $this->checkPermission('read');
965  $this->activateTabs('content', 'id_content_view');
966 
967  include_once './Modules/WebResource/classes/class.ilWebResourceLinkTableGUI.php';
968  $table = new ilWebResourceLinkTableGUI($this, 'showLinks');
969  $table->parse();
970 
971  $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.webr_view.html', 'Modules/WebResource');
972  $this->showToolbar('ACTION_BUTTONS');
973  $this->tpl->setVariable('LINK_TABLE', $table->getHTML());
974  }
975 
980  protected function sort()
981  {
982  $this->checkPermission('write');
983  $this->activateTabs('content', 'id_content_ordering');
984 
985  include_once './Modules/WebResource/classes/class.ilWebResourceLinkTableGUI.php';
986  $table = new ilWebResourceLinkTableGUI($this, 'sort', true);
987  $table->parse();
988 
989  $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.webr_view.html', 'Modules/WebResource');
990  $this->showToolbar('ACTION_BUTTONS');
991  $this->tpl->setVariable('LINK_TABLE', $table->getHTML());
992  }
993 
998  protected function saveSorting()
999  {
1000  $this->checkPermission('write');
1001 
1002  include_once './Services/Container/classes/class.ilContainerSorting.php';
1003  $sort = ilContainerSorting::_getInstance($this->object->getId());
1004  $sort->savePost((array) $_POST['position']);
1005 
1006  ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
1007  $this->view();
1008  }
1009 
1010 
1016  protected function showToolbar($a_tpl_var)
1017  {
1018  if (!$this->checkPermissionBool('write')) {
1019  return;
1020  }
1021 
1022  include_once './Services/UIComponent/Toolbar/classes/class.ilToolbarGUI.php';
1023  $tool = new ilToolbarGUI();
1024  $tool->setFormAction($this->ctrl->getFormAction($this));
1025  $tool->addButton(
1026  $this->lng->txt('webr_add'),
1027  $this->ctrl->getLinkTarget($this, 'addLink')
1028  );
1029 
1030  $this->tpl->setVariable($a_tpl_var, $tool->getHTML());
1031  return;
1032  }
1033 
1038  protected function confirmDeleteLink()
1039  {
1040  $this->checkPermission('write');
1041  $this->activateTabs('content', 'id_content_view');
1042 
1043  $link_ids = array();
1044 
1045  if (is_array($_POST['link_ids'])) {
1046  $link_ids = $_POST['link_ids'];
1047  } elseif (isset($_GET['link_id'])) {
1048  $link_ids = array($_GET['link_id']);
1049  }
1050 
1051  if (!count($link_ids) > 0) {
1052  ilUtil::sendFailure($this->lng->txt('select_one'));
1053  $this->view();
1054  return false;
1055  }
1056 
1057  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1058  $links = new ilLinkResourceItems($this->object->getId());
1059 
1060  include_once 'Services/Utilities/classes/class.ilConfirmationGUI.php';
1061  $confirm = new ilConfirmationGUI();
1062  $confirm->setFormAction($this->ctrl->getFormAction($this, 'view'));
1063  $confirm->setHeaderText($this->lng->txt('webr_sure_delete_items'));
1064  $confirm->setConfirm($this->lng->txt('delete'), 'deleteLinks');
1065  $confirm->setCancel($this->lng->txt('cancel'), 'view');
1066 
1067  foreach ($link_ids as $link_id) {
1068  $link = $links->getItem($link_id);
1069  $confirm->addItem('link_ids[]', $link_id, $link['title']);
1070  }
1071  $this->tpl->setContent($confirm->getHTML());
1072  }
1073 
1078  protected function deleteLinks()
1079  {
1080  global $DIC;
1081 
1082  $ilCtrl = $DIC['ilCtrl'];
1083 
1084  $this->checkPermission('write');
1085 
1086  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1087  $links = new ilLinkResourceItems($this->object->getId());
1088 
1089  foreach ($_POST['link_ids'] as $link_id) {
1090  $links->delete($link_id);
1091  }
1092  ilUtil::sendSuccess($this->lng->txt('webr_deleted_items'), true);
1093  $ilCtrl->redirect($this, 'view');
1094  }
1095 
1100  protected function deactivateLink()
1101  {
1102  global $DIC;
1103 
1104  $ilCtrl = $DIC['ilCtrl'];
1105 
1106  $this->checkPermission('write');
1107 
1108  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1109  $links = new ilLinkResourceItems($this->object->getId());
1110 
1111  if (!$_GET['link_id']) {
1112  ilUtil::sendFailure($this->lng->txt('select_one'), true);
1113  $ilCtrl->redirect($this, 'view');
1114  }
1115 
1116  $links->setLinkId((int) $_GET['link_id']);
1117  $links->updateActive(false);
1118 
1119  ilUtil::sendSuccess($this->lng->txt('webr_inactive_success'), true);
1120  $ilCtrl->redirect($this, 'view');
1121  }
1122 
1123 
1129  public function infoScreen()
1130  {
1131  $this->ctrl->setCmd("showSummary");
1132  $this->ctrl->setCmdClass("ilinfoscreengui");
1133  $this->infoScreenForward();
1134  }
1135 
1139  public function infoScreenForward()
1140  {
1141  global $DIC;
1142 
1143  $ilTabs = $DIC['ilTabs'];
1144 
1145  if (!$this->checkPermissionBool('visible')) {
1146  $this->checkPermission('read');
1147  }
1148  $ilTabs->activateTab('id_info');
1149 
1150  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
1151  $info = new ilInfoScreenGUI($this);
1152 
1153  $info->enablePrivateNotes();
1154 
1155  // standard meta data
1156  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
1157 
1158  if ($this->id_type == self::WORKSPACE_NODE_ID) {
1159  $info->addProperty($this->lng->txt("perma_link"), $this->getPermanentLinkWidget());
1160  }
1161 
1162  // forward the command
1163  $this->ctrl->forwardCommand($info);
1164  }
1165 
1166 
1167  public function history()
1168  {
1169  global $DIC;
1170 
1171  $ilTabs = $DIC['ilTabs'];
1172 
1173  $this->checkPermission('write');
1174  $ilTabs->activateTab('id_history');
1175 
1176  include_once("./Services/History/classes/class.ilHistoryTableGUI.php");
1177  $hist_gui = new ilHistoryTableGUI($this, "history", $this->object->getId(), $this->object->getType);
1178  $hist_gui->initTable();
1179  $this->tpl->setContent($hist_gui->getHTML());
1180  }
1181 
1190  public function formatInvalidLinkArray(array $row)
1191  {
1192  $this->object->items_obj->readItem($row['page_id']);
1193  $row['title'] = $this->object->items_obj->getTitle();
1194 
1195  require_once 'Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php';
1197  $actions->setSelectionHeaderClass('small');
1198  $actions->setItemLinkClass('xsmall');
1199  $actions->setListTitle($this->lng->txt('actions'));
1200  $actions->setId($row['page_id']);
1201  $this->ctrl->setParameter($this, 'link_id', $row['page_id']);
1202  $actions->addItem(
1203  $this->lng->txt('edit'),
1204  '',
1205  $this->ctrl->getLinkTarget($this, 'editLink')
1206  );
1207  $this->ctrl->clearParameters($this);
1208  $row['action_html'] = $actions->getHTML();
1209 
1210  return $row;
1211  }
1212 
1217  protected function linkChecker()
1218  {
1219  global $DIC;
1220 
1221  $ilias = $DIC['ilias'];
1222  $ilUser = $DIC['ilUser'];
1223  $tpl = $DIC['tpl'];
1224  $ilTabs = $DIC['ilTabs'];
1225 
1226  $this->checkPermission('write');
1227  $ilTabs->activateTab('id_link_check');
1228 
1229  $this->__initLinkChecker();
1230  $this->object->initLinkResourceItemsObject();
1231 
1232  require_once './Services/LinkChecker/classes/class.ilLinkCheckerTableGUI.php';
1233 
1234  $toolbar = new ilToolbarGUI();
1235 
1236  if ((bool) $ilias->getSetting('cron_web_resource_check')) {
1237  include_once './Services/LinkChecker/classes/class.ilLinkCheckNotify.php';
1238  include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
1239 
1240  $chb = new ilCheckboxInputGUI($this->lng->txt('link_check_message_a'), 'link_check_message');
1241  $chb->setValue(1);
1242  $chb->setChecked((bool) ilLinkCheckNotify::_getNotifyStatus($ilUser->getId(), $this->object->getId()));
1243  $chb->setOptionTitle($this->lng->txt('link_check_message_b'));
1244 
1245  $toolbar->addInputItem($chb);
1246  $toolbar->addFormButton($this->lng->txt('save'), 'saveLinkCheck');
1247  $toolbar->setFormAction($this->ctrl->getLinkTarget($this, 'saveLinkCheck'));
1248  }
1249 
1250  $tgui = new ilLinkCheckerTableGUI($this, 'linkChecker');
1251  $tgui->setLinkChecker($this->link_checker_obj)
1252  ->setRowHandler($this)
1253  ->setRefreshButton($this->lng->txt('refresh'), 'refreshLinkCheck');
1254 
1255  return $tpl->setContent($tgui->prepareHTML()->getHTML() . $toolbar->getHTML());
1256  }
1257 
1258  public function saveLinkCheck()
1259  {
1260  global $DIC;
1261 
1262  $ilDB = $DIC['ilDB'];
1263  $ilUser = $DIC['ilUser'];
1264 
1265  include_once './Services/LinkChecker/classes/class.ilLinkCheckNotify.php';
1266 
1267  $link_check_notify = new ilLinkCheckNotify($ilDB);
1268  $link_check_notify->setUserId($ilUser->getId());
1269  $link_check_notify->setObjId($this->object->getId());
1270 
1271  if ($_POST['link_check_message']) {
1272  ilUtil::sendSuccess($this->lng->txt('link_check_message_enabled'));
1273  $link_check_notify->addNotifier();
1274  } else {
1275  ilUtil::sendSuccess($this->lng->txt('link_check_message_disabled'));
1276  $link_check_notify->deleteNotifier();
1277  }
1278  $this->linkChecker();
1279 
1280  return true;
1281  }
1282 
1283 
1284 
1285  public function refreshLinkCheck()
1286  {
1287  $this->__initLinkChecker();
1288  $this->object->initLinkResourceItemsObject();
1289 
1290  // Set all link to valid. After check invalid links will be set to invalid
1291  $this->object->items_obj->updateValidByCheck();
1292 
1293  foreach ($this->link_checker_obj->checkWebResourceLinks() as $invalid) {
1294  $this->object->items_obj->readItem($invalid['page_id']);
1295  $this->object->items_obj->setActiveStatus(false);
1296  $this->object->items_obj->setValidStatus(false);
1297  $this->object->items_obj->update(false);
1298  }
1299 
1300  $this->object->items_obj->updateLastCheck();
1301  ilUtil::sendSuccess($this->lng->txt('link_checker_refreshed'));
1302 
1303  $this->linkChecker();
1304 
1305  return true;
1306  }
1307 
1308  public function __initLinkChecker()
1309  {
1310  global $DIC;
1311 
1312  $ilDB = $DIC['ilDB'];
1313 
1314  include_once './Services/LinkChecker/classes/class.ilLinkChecker.php';
1315 
1316  $this->link_checker_obj = new ilLinkChecker($ilDB, false);
1317  $this->link_checker_obj->setObjId($this->object->getId());
1318 
1319  return true;
1320  }
1321 
1322 
1329  protected function activateTabs($a_active_tab, $a_active_subtab = '')
1330  {
1331  global $DIC;
1332 
1333  $ilCtrl = $DIC['ilCtrl'];
1334  $ilTabs = $DIC['ilTabs'];
1335  $lng = $DIC['lng'];
1336 
1337  switch ($a_active_tab) {
1338  case 'content':
1339  if ($this->checkPermissionBool('write')) {
1340  $this->lng->loadLanguageModule('cntr');
1341 
1342  $this->ctrl->setParameter($this, 'switch_mode', self::VIEW_MODE_VIEW);
1343  $ilTabs->addSubTab(
1344  'id_content_view',
1345  $lng->txt('view'),
1346  $this->ctrl->getLinkTarget($this, 'switchViewMode')
1347  );
1348  $this->ctrl->setParameter($this, 'switch_mode', self::VIEW_MODE_MANAGE);
1349  $ilTabs->addSubTab(
1350  'id_content_manage',
1351  $lng->txt('cntr_manage'),
1352  $this->ctrl->getLinkTarget($this, 'switchViewMode')
1353  );
1354  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1355  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
1356  include_once './Services/Container/classes/class.ilContainer.php';
1357  if ((ilLinkResourceItems::lookupNumberOfLinks($this->object->getId()) > 1)
1359  $this->ctrl->setParameter($this, 'switch_mode', self::VIEW_MODE_SORT);
1360  $ilTabs->addSubTab(
1361  'id_content_ordering',
1362  $this->lng->txt('cntr_ordering'),
1363  $this->ctrl->getLinkTarget($this, 'switchViewMode')
1364  );
1365  }
1366 
1367  $ilCtrl->clearParameters($this);
1368  $ilTabs->activateSubTab($a_active_subtab);
1369  }
1370  }
1371 
1372  $ilTabs->activateTab('id_content');
1373  }
1374 
1375 
1380  public function setTabs()
1381  {
1382  global $DIC;
1383 
1384  $ilTabs = $DIC['ilTabs'];
1385  $lng = $DIC['lng'];
1386  $ilHelp = $DIC['ilHelp'];
1387 
1388  $ilHelp->setScreenIdComponent("webr");
1389 
1390  if ($this->checkPermissionBool('read')) {
1391  $ilTabs->addTab(
1392  "id_content",
1393  $lng->txt("content"),
1394  $this->ctrl->getLinkTarget($this, "view")
1395  );
1396  }
1397 
1398  if (
1399  $this->checkPermissionBool('visible') ||
1400  $this->checkPermissionBool('read')
1401  ) {
1402  $ilTabs->addTab(
1403  "id_info",
1404  $lng->txt("info_short"),
1405  $this->ctrl->getLinkTarget($this, "infoScreen")
1406  );
1407  }
1408 
1409  if ($this->checkPermissionBool('write') and !$this->getCreationMode()) {
1410  $ilTabs->addTab(
1411  "id_settings",
1412  $lng->txt("settings"),
1413  $this->ctrl->getLinkTarget($this, "settings")
1414  );
1415  }
1416 
1417  if ($this->checkPermissionBool('write')) {
1418  $ilTabs->addTab(
1419  "id_history",
1420  $lng->txt("history"),
1421  $this->ctrl->getLinkTarget($this, "history")
1422  );
1423  }
1424 
1425  if ($this->checkPermissionBool('write')) {
1426  // Check if pear library is available
1427  $ilTabs->addTab(
1428  "id_link_check",
1429  $lng->txt("link_check"),
1430  $this->ctrl->getLinkTarget($this, "linkChecker")
1431  );
1432  }
1433 
1434  if ($this->checkPermissionBool('write')) {
1435  include_once "Services/Object/classes/class.ilObjectMetaDataGUI.php";
1436  $mdgui = new ilObjectMetaDataGUI($this->object);
1437  $mdtab = $mdgui->getTab();
1438  if ($mdtab) {
1439  $ilTabs->addTab(
1440  "id_meta_data",
1441  $lng->txt("meta_data"),
1442  $mdtab
1443  );
1444  }
1445  }
1446 
1447  if ($this->checkPermissionBool('write')) {
1448  $ilTabs->addTab(
1449  'export',
1450  $this->lng->txt('export'),
1451  $this->ctrl->getLinkTargetByClass('ilexportgui', '')
1452  );
1453  }
1454 
1455  // will add permission tab if needed
1456  parent::setTabs();
1457  }
1458 
1459  // PRIVATE
1460  public function __prepareOutput()
1461  {
1462  // output objects
1463  // $this->tpl->addBlockFile("CONTENT", "content", "tpl.adm_content.html");
1464  // $this->tpl->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html");
1465 
1466  $this->tpl->setLocator();
1467 
1468  // output message
1469  if ($this->message) {
1470  ilUtil::sendInfo($this->message);
1471  }
1472 
1473  // display infopanel if something happened
1475  ;
1476  }
1477 
1478  public function addLocatorItems()
1479  {
1480  global $DIC;
1481 
1482  $ilLocator = $DIC['ilLocator'];
1483 
1484  if (is_object($this->object)) {
1485  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this), "", $this->object->getRefId(), "webr");
1486  }
1487  }
1488 
1489  protected function handleSubItemLinks($a_target)
1490  {
1491  // #15647 - handle internal links
1492  include_once "Services/Form/classes/class.ilFormPropertyGUI.php";
1493  include_once "Services/Form/classes/class.ilLinkInputGUI.php";
1494 
1495  if (ilLinkInputGUI::isInternalLink($a_target)) {
1496  include_once("./Services/Link/classes/class.ilLink.php");
1497 
1498  // #10612
1499  $parts = explode("|", $a_target);
1500 
1501  if ($parts[0] == 'wpage') {
1502  return ilLink::_getStaticLink(
1503  0,
1504  'wiki',
1505  true,
1506  '&target=wiki_wpage_' . $parts[1]
1507  );
1508  }
1509 
1510  if ($parts[0] == "term") {
1511  // #16894
1512  return ilLink::_getStaticLink(
1513  0,
1514  "git",
1515  true,
1516  "&target=git_" . $parts[1]
1517  );
1518  }
1519 
1520  if ($parts[0] == "page") {
1521  $parts[0] = "pg";
1522  }
1523 
1524  $a_target = ilLink::_getStaticLink($parts[1], $parts[0]);
1525  }
1526 
1527  return $a_target;
1528  }
1529 
1530  public function callDirectLink()
1531  {
1532  $obj_id = $this->object->getId();
1533 
1534  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1537  if ($url["target"]) {
1538  $url["target"] = $this->handleSubItemLinks($url["target"]);
1539 
1540  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
1543  }
1544 
1545  $this->redirectToLink($this->ref_id, $obj_id, $url["target"]);
1546  }
1547  }
1548  }
1549 
1550  public function callLink()
1551  {
1552  if ($_REQUEST["link_id"]) {
1553  $obj_id = $this->object->getId();
1554 
1555  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1556  $items = new ilLinkResourceItems($obj_id);
1557  $item = $items->getItem($_REQUEST["link_id"]);
1558  if ($item["target"]) {
1559  $item["target"] = $this->handleSubItemLinks($item["target"]);
1560 
1561  include_once './Modules/WebResource/classes/class.ilParameterAppender.php';
1563  $item = ilParameterAppender::_append($item);
1564  }
1565  ilLoggerFactory::getLogger('webr')->debug('Redirecting to: ' . $item['target']);
1566  $this->redirectToLink($this->ref_id, $obj_id, $item["target"]);
1567  }
1568  }
1569  }
1570 
1571  protected function redirectToLink($a_ref_id, $a_obj_id, $a_url)
1572  {
1573  global $DIC;
1574 
1575  $ilUser = $DIC['ilUser'];
1576 
1577  if ($a_url) {
1578  require_once('Services/Tracking/classes/class.ilChangeEvent.php');
1580  "webr",
1581  $a_ref_id,
1582  $a_obj_id,
1583  $ilUser->getId()
1584  );
1585 
1586  ilUtil::redirect($a_url);
1587  }
1588  }
1589 
1590  public function exportHTML()
1591  {
1592  global $DIC;
1593 
1594  $ilSetting = $DIC['ilSetting'];
1595 
1596  $tpl = new ilTemplate("tpl.export_html.html", true, true, "Modules/WebResource");
1597 
1598  include_once './Modules/WebResource/classes/class.ilLinkResourceItems.php';
1599  $items = new ilLinkResourceItems($this->object->getId());
1600  foreach ($items->getAllItems() as $item) {
1601  if (!$item["active"]) {
1602  continue;
1603  }
1604 
1605  $target = $this->handleSubItemLinks($item["target"]);
1606 
1607  $tpl->setCurrentBlock("link_bl");
1608  $tpl->setVariable("LINK_URL", $target);
1609  $tpl->setVariable("LINK_TITLE", $item["title"]);
1610  $tpl->setVariable("LINK_DESC", $item["description"]);
1611  $tpl->setVariable("LINK_CREATE", $item["create_date"]);
1612  $tpl->setVariable("LINK_UPDATE", $item["last_update"]);
1613  $tpl->parseCurrentBlock();
1614  }
1615 
1616  $tpl->setVariable("CREATE_DATE", $this->object->getCreateDate());
1617  $tpl->setVariable("LAST_UPDATE", $this->object->getLastUpdateDate());
1618  $tpl->setVariable("TXT_TITLE", $this->object->getTitle());
1619  $tpl->setVariable("TXT_DESC", $this->object->getLongDescription());
1620 
1621  $tpl->setVariable("INST_ID", ($ilSetting->get('short_inst_name') != "")
1622  ? $ilSetting->get('short_inst_name')
1623  : "ILIAS");
1624 
1625  ilUtil::deliverData($tpl->get(), "bookmarks.html");
1626  }
1627 
1628  public static function _goto($a_target, $a_additional = null)
1629  {
1630  global $DIC;
1631 
1632  $ilAccess = $DIC['ilAccess'];
1633  $ilErr = $DIC['ilErr'];
1634  $lng = $DIC['lng'];
1635 
1636  if ($a_additional && substr($a_additional, -3) == "wsp") {
1637  $_GET["baseClass"] = "ilsharedresourceGUI";
1638  $_GET["wsp_id"] = $a_target;
1639  include("ilias.php");
1640  exit;
1641  }
1642 
1643  // Will be replaced in future releases by ilAccess::checkAccess()
1644  if ($ilAccess->checkAccess("read", "", $a_target)) {
1645  ilUtil::redirect("ilias.php?baseClass=ilLinkResourceHandlerGUI&ref_id=$a_target");
1646  } else {
1647  // to do: force flat view
1648  if ($ilAccess->checkAccess("visible", "", $a_target)) {
1649  ilUtil::redirect("ilias.php?baseClass=ilLinkResourceHandlerGUI&ref_id=" . $a_target . "&cmd=infoScreen");
1650  } else {
1651  if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID)) {
1652  ilUtil::sendFailure(sprintf(
1653  $lng->txt("msg_no_perm_read_item"),
1655  ), true);
1657  }
1658  }
1659  }
1660 
1661  $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->FATAL);
1662  }
1663 } // END class.ilObjLinkResource
static _recordReadEvent( $a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
This class represents an option in a radio group.
setTitle($a_title)
Set Title.
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
infoScreen()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually...
static _isSingular($a_webr_id)
Check whether there is only one active link in the web resource.
Class ilObjectMetaDataGUI.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
exit
Definition: login.php:29
static getInitHTML($a_url)
Get initialisation HTML to use interna link editing.
TableGUI class for search results.
Class ilInfoScreenGUI.
settings()
Edit settings Title, Description, Sorting.
updateLink()
Save after editing.
This class represents a property form user interface.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
New implementation of ilObjectGUI.
GUI class for the workflow of copying objects.
$_GET["client_id"]
saveSorting()
Save nmanual sorting.
This class represents a section header in a property form.
static _getOptionSelect()
Get options as array.
setInfo($a_info)
Set Information Text.
checkLinkInput($a_mode, $a_webr_id=0, $a_link_id=0)
Check input after creating a new link.
$valid
static lookupNumberOfLinks($a_webr_id)
Get number of assigned links.
getPermanentLinkWidget($a_append=null, $a_center=false)
setValue($a_value)
Set Value.
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
Class ilObjLinkResourceGUI.
setInternalLinkFilterTypes(array $a_val)
Set internal link filter types.
This class represents a checkbox property in a property form.
addLink()
Add an additional link.
static _lookupTitle($a_id)
lookup object title
class for checking external links in page objects Normally used in Cron jobs, but should be extensibl...
Class ilInternalLinkGUI.
infoScreenForward()
show information screen
class for checking external links in page objects.
initFormSettings()
Show settings form.
linkChecker()
Show link validation.
afterSave(ilObject $a_new_object)
showLinks()
Show all active links.
global $ilCtrl
Definition: ilias.php:18
class ilLinkCheckerTableGUI
static _append($a_link_data)
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
$section
Definition: Utf8Test.php:83
setChecked($a_checked)
Set Checked.
Export User Interface Class.
This class represents a hidden form property in a property form.
This class represents a property in a property form.
static parameterToInfo($a_name, $a_value)
Get info text describing an existing dynamic link.
getId()
get object id public
switchViewMode()
Switch between "View" "Manage" and "Sort".
editLinks()
Start with manage mode.
static _lookupObjId($a_id)
setValue($a_value)
Set Value.
$param
Definition: xapitoken.php:31
static isInternalLink($a_value)
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
static lookupItem($a_webr_id, $a_link_id)
static infoPanel($a_keep=true)
$ilUser
Definition: imgupload.php:18
const LINKS_ERR_NO_VALUE
editLink()
Edit a single link.
interface ilLinkCheckerGUIRowHandling
deleteParameter()
Delete a dynamic parameter.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
isContainerMetaDataRequired()
Check if a new container title is required Necessary if there is more than one link.
const LINKS_ERR_NO_NAME
setValuesFromLink($a_link_id)
Set form values from link.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
saveSettings()
Save container settings.
static _getFirstLink($a_webr_id)
Get first link item Check before with _isSingular() if there is more or less than one...
Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE Date: 24.10.14 Time: 10:35.
This class represents a custom property in a property form.
static _getNotifyStatus($a_usr_id, $a_obj_id)
static _fillHTMLMetaTags($a_rbac_id, $a_obj_id, $a_type)
Fill html meta tags.
This class represents a non editable value in a property form.
global $ilSetting
Definition: privfeed.php:17
This class represents a text area property in a property form.
global $ilDB
$ret
Definition: parser.php:6
Class ilObjLinkResourceGUI.
$DIC
Definition: xapitoken.php:46
getRefId()
get reference id public
prepareOutput($a_show_subobjects=true)
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
Class ilParameterAppender.
const LINKS_ERR_NO_NAME_VALUE
static _goto($a_target, $a_additional=null)
static getLogger($a_component_id)
Get component logger.
$url
static _lookupSortMode($a_obj_id)
lookup sort mode
delete($a_item_id, $a_update_history=true)
redirectToLink($a_ref_id, $a_obj_id, $a_url)
static _getInstance($a_obj_id)
get instance by obj_id
initFormLink($a_mode)
Show create/edit single link.
activateTabs($a_active_tab, $a_active_subtab='')
Activate tab and subtabs.
static redirect($a_script)
updateLinks()
Update all visible links.
save()
Save new object public.
static _getParams($a_link_id)
Get dynamic parameter definitions.
static _isEnabled()
Check if dynamic parameters are enabled.
addHeaderAction()
Add header action menu.
$_POST["username"]
setRequired($a_required)
Set Required.
This class represents a external and/or internal link in a property form.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
showToolbar($a_tpl_var)
Show toolbar.
Confirmation screen class.
confirmDeleteLink()
Show delete confirmation screen.