ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilBiblAdminFieldGUI.php
Go to the documentation of this file.
1<?php
2
21
27abstract class ilBiblAdminFieldGUI
28{
29 public const SUBTAB_RIS = 'subtab_ris';
30 public const SUBTAB_BIBTEX = 'subtab_bibtex';
31 public const FIELD_IDENTIFIER = 'field_id';
32 public const DATA_TYPE = 'data_type';
33 public const CMD_STANDARD = 'index';
34 public const CMD_CANCEL = 'cancel';
35 public const CMD_EDIT = 'edit';
36 public const CMD_UPDATE = 'update';
37 public const CMD_SAVE_ORDERING = 'saveOrdering';
38 public const CMD_APPLY_FILTER = 'applyFilter';
39 public const CMD_RESET_FILTER = 'resetFilter';
40 public const CMD_SAVE = 'save';
41 private Services $http;
42 private ilCtrl $ctrl;
46 protected Table $table;
47 private \ilGlobalTemplateInterface $main_tpl;
48
52 public function __construct(protected \ilBiblAdminFactoryFacadeInterface $facade)
53 {
54 global $DIC;
55 $this->main_tpl = $DIC->ui()->mainTemplate();
56 $this->http = $DIC['http'];
57 $this->ctrl = $DIC['ilCtrl'];
58 $this->tabs = $DIC['ilTabs'];
59 $this->lng = $DIC['lng'];
60 $this->access = $DIC->access();
61 $this->table = new Table(
62 $this,
63 $this->facade
64 );
65 }
66
67 public function executeCommand(): void
68 {
69 $this->saveFieldIdsInRequest();
70 $next_class = $this->ctrl->getNextClass();
72 switch ($next_class) {
73 case strtolower(ilBiblTranslationGUI::class):
74 $this->tabs->clearTargets();
75 $target = $this->ctrl->getLinkTarget($this);
76 $this->tabs->setBackTarget($this->lng->txt('back'), $target);
77
78 $field = $this->getFieldFromRequest();
79 if ($field === null) {
80 throw new ilException("Field not found");
81 }
82 $gui = new ilBiblTranslationGUI($this->facade, $field);
83 $this->ctrl->forwardCommand($gui);
84 break;
85
86 default:
87 $this->performCommand();
88 }
89 }
90
91 protected function performCommand(): void
92 {
93 $cmd = $this->ctrl->getCmd(self::CMD_STANDARD);
94 switch ($cmd) {
96 if ($this->checkPermissionBoolAndReturn('read')) {
97 $this->{$cmd}();
98 }
99 break;
100 case self::CMD_EDIT:
101 case self::CMD_UPDATE:
102 case self::CMD_SAVE:
106 if ($this->checkPermissionBoolAndReturn('write')) {
107 $this->{$cmd}();
108 }
109 break;
110 }
111 }
112
113 protected function saveOrdering(): void
114 {
115 foreach ($this->table->getOrdering() as $position => $field_id) {
116 $field = $this->facade->fieldFactory()->findById($field_id);
117 $field->setPosition($position);
118 $field->store();
119 }
120
121 $this->main_tpl->setOnScreenMessage('success', $this->lng->txt('changes_successfully_saved'));
122 $this->ctrl->redirect($this, self::CMD_STANDARD);
123 }
124
125 protected function getFieldIdFromRequest(): int
126 {
127 $query_params = $this->http->request()->getQueryParams(); // aka $_GET
128 $name = $this->table->getIdToken()->getName(); // name of the query parameter from the table
129 $field_ids = $query_params[$name] ?? []; // array of field ids
130 return (int) (is_array($field_ids) ? end($field_ids) : $field_ids); // return the last field id
131 }
132
133 private function saveFieldIdsInRequest(): void
134 {
135 $field_id = $this->getFieldIdFromRequest();
136
137 $this->ctrl->setParameter($this, $this->table->getIdToken()->getName(), $field_id);
138 }
139
141 {
142 $field_id = $this->getFieldIdFromRequest();
143
144 return $this->facade->fieldFactory()->findById($field_id); // get field from id from the factory
145 }
146
147 protected function index(): void
148 {
149 $this->setSubTabs();
150 //$table = new ilBiblAdminFieldTableGUI($this, $this->facade);
151 //$this->tpl()->setContent($table->getHTML());
152 $this->main_tpl->setContent($this->table->getHTML());
153 }
154
155 protected function setSubTabs(): void
156 {
157 $this->tabs->addSubTab(
158 self::SUBTAB_RIS,
159 $this->lng->txt('ris'),
160 $this->ctrl->getLinkTargetByClass(
161 [
162 ilObjBibliographicAdminGUI::class,
163 ilBiblAdminRisFieldGUI::class,
164 ],
166 )
167 );
168 $this->tabs->activateSubTab(self::SUBTAB_RIS);
169
170 $this->tabs->addSubTab(
171 self::SUBTAB_BIBTEX,
172 $this->lng->txt('bibtex'),
173 $this->ctrl->getLinkTargetByClass(
174 [
175 ilObjBibliographicAdminGUI::class,
176 ilBiblAdminBibtexFieldGUI::class,
177 ],
179 )
180 );
181 switch ($this->facade->type()->getId()) {
183 $this->tabs->activateSubTab(self::SUBTAB_BIBTEX);
184 break;
186 $this->tabs->activateSubTab(self::SUBTAB_RIS);
187 break;
188 }
189 }
190
191 protected function save(): void
192 {
193 $this->saveOrdering();
194 }
195
196 protected function applyFilter(): void
197 {
198 $ilBiblAdminFieldTableGUI = new ilBiblAdminFieldTableGUI($this, $this->facade);
199 $ilBiblAdminFieldTableGUI->writeFilterToSession();
200 $this->ctrl->redirect($this, self::CMD_STANDARD);
201 }
202
203 protected function resetFilter(): void
204 {
205 $ilBiblAdminFieldTableGUI = new ilBiblAdminFieldTableGUI($this, $this->facade);
206 $ilBiblAdminFieldTableGUI->resetFilter();
207 $ilBiblAdminFieldTableGUI->resetOffset();
208 $this->ctrl->redirect($this, self::CMD_STANDARD);
209 }
210
211 public function checkPermissionAndFail(string $permission): void
212 {
213 if (!$this->checkPermissionBoolAndReturn($permission)) {
214 throw new \ilObjectException($this->lng->txt("permission_denied"));
215 }
216 }
217
218 public function checkPermissionBoolAndReturn(string $permission): bool
219 {
220 return $this->access->checkAccess($permission, '', $this->http->request()->getQueryParams()['ref_id']);
221 }
222}
Class Services.
Definition: Services.php:38
Class ilBiblAdminFieldGUI.
checkPermissionBoolAndReturn(string $permission)
checkPermissionAndFail(string $permission)
ilGlobalTemplateInterface $main_tpl
__construct(protected \ilBiblAdminFactoryFacadeInterface $facade)
ilBiblAdminFieldGUI constructor.
Class ilBiblTranslationGUI.
Class ilCtrl provides processing control methods.
Base class for ILIAS Exception handling.
language handling
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface ilAccessHandler This interface combines all available interfaces which can be called via gl...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static http()
Fetches the global http state from ILIAS.
global $DIC
Definition: shib_login.php:26