1<?php
2/* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once "./Services/Object/classes/class.ilObjectGUI.php" ;
5
6/**
7 * Web Resource Administration Settings.
8 *
9 * @author Jörg Lützenkirchen <luetzenkirchen@leifos.com>
10 * @version $Id:$
11 *
12 * @ilCtrl_Calls ilObjWebResourceAdministrationGUI: ilPermissionGUI
13 *
14 * @ingroup ModulesWebResource
15 */
16class ilObjWebResourceAdministrationGUI extends ilObjectGUI
17{
18    public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
19    {
20        $this->type = "wbrs";
21        parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
22
23        $this->lng->loadLanguageModule("webr");
24    }
25
26    public function executeCommand()
27    {
28        $next_class = $this->ctrl->getNextClass($this);
29        $cmd = $this->ctrl->getCmd();
30
31        $this->prepareOutput();
32
33        if (!$this->rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
34            $this->ilErr->raiseError($this->lng->txt("no_permission"), $this->ilErr->WARNING);
35        }
36
37        switch ($next_class) {
38            case 'ilpermissiongui':
39                $this->tabs_gui->setTabActive("perm_settings");
40                include_once "Services/AccessControl/classes/class.ilPermissionGUI.php";
41                $perm_gui = new ilPermissionGUI($this);
42                $this->ctrl->forwardCommand($perm_gui);
43                break;
44
45            default:
46                if (!$cmd || $cmd == "view") {
47                    $cmd = "editSettings";
48                }
49                $this->$cmd();
50                break;
51        }
52        return true;
53    }
54
55    public function getAdminTabs()
56    {
57        global $DIC;
58
59        $rbacsystem = $DIC['rbacsystem'];
60
61        if ($rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
62            $this->tabs_gui->addTarget(
63                "settings",
64                $this->ctrl->getLinkTarget($this, "editSettings"),
65                array("editSettings", "view")
66            );
67        }
68
69        if ($rbacsystem->checkAccess("edit_permission", $this->object->getRefId())) {
70            $this->tabs_gui->addTarget(
71                "perm_settings",
72                $this->ctrl->getLinkTargetByClass("ilpermissiongui", "perm"),
73                array(),
74                "ilpermissiongui"
75            );
76        }
77    }
78
79    public function editSettings(ilObjPropertyFormGUI $a_form = null)
80    {
81        $this->tabs_gui->setTabActive('settings');
82
83        if (!$a_form) {
84            $a_form = $this->initFormSettings();
85        }
86        $this->tpl->setContent($a_form->getHTML());
87        return true;
88    }
89
90    public function saveSettings()
91    {
92        global $DIC;
93
94        $ilSetting = $DIC['ilSetting'];
95
96        $this->checkPermission("write");
97
98        $form = $this->initFormSettings();
99        if ($form->checkInput()) {
100            $ilSetting->set("links_dynamic", $form->getInput("links_dynamic"));
101
102            ilUtil::sendSuccess($this->lng->txt("settings_saved"), true);
103            $this->ctrl->redirect($this, "editSettings");
104        }
105
106        $form->setValuesByPost();
107        $this->editSettings($form);
108    }
109
110    protected function initFormSettings()
111    {
112        global $DIC;
113
114        $ilSetting = $DIC['ilSetting'];
115        $ilAccess = $DIC['ilAccess'];
116
117        include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
118        $form = new ilPropertyFormGUI();
119        $form->setFormAction($this->ctrl->getFormAction($this, "saveSettings"));
120        $form->setTitle($this->lng->txt("settings"));
121
122        // dynamic web links
123        $cb = new ilCheckboxInputGUI($this->lng->txt("links_dynamic"), "links_dynamic");
124        $cb->setInfo($this->lng->txt("links_dynamic_info"));
125        $cb->setChecked($ilSetting->get("links_dynamic"));
126        $form->addItem($cb);
127
128        if ($ilAccess->checkAccess("write", '', $this->object->getRefId())) {
129            $form->addCommandButton("saveSettings", $this->lng->txt("save"));
130            $form->addCommandButton("view", $this->lng->txt("cancel"));
131        }
132
133        return $form;
134    }
135}
136