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