ILIAS  trunk Revision v11.0_alpha-1753-gb21ca8c4367
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
class.ilBiblAdminFieldGUI.php
Go to the documentation of this file.
1 <?php
2 
21 
27 abstract 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;
43  private ilTabsGUI $tabs;
44  private ilLanguage $lng;
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->table = new Table(
57  $this,
58  $this->facade
59  );
60  $this->http = $DIC['http'];
61  $this->ctrl = $DIC['ilCtrl'];
62  $this->tabs = $DIC['ilTabs'];
63  $this->lng = $DIC['lng'];
64  $this->access = $DIC['ilAccess'];
65  }
66 
67  public function executeCommand(): void
68  {
69  $this->saveFieldIdsInRequest();
70  $next_class = $this->ctrl->getNextClass();
71  $this->tabs->activateTab(ilObjBibliographicAdminGUI::TAB_FIELDS);
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) {
95  case self::CMD_STANDARD:
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:
103  case self::CMD_SAVE_ORDERING:
104  case self::CMD_APPLY_FILTER:
105  case self::CMD_RESET_FILTER:
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 
197  protected function applyFilter(): void
198  {
199  $ilBiblAdminFieldTableGUI = new ilBiblAdminFieldTableGUI($this, $this->facade);
200  $ilBiblAdminFieldTableGUI->writeFilterToSession();
201  $this->ctrl->redirect($this, self::CMD_STANDARD);
202  }
203 
204  protected function resetFilter(): void
205  {
206  $ilBiblAdminFieldTableGUI = new ilBiblAdminFieldTableGUI($this, $this->facade);
207  $ilBiblAdminFieldTableGUI->resetFilter();
208  $ilBiblAdminFieldTableGUI->resetOffset();
209  $this->ctrl->redirect($this, self::CMD_STANDARD);
210  }
211 
212  public function checkPermissionAndFail(string $permission): void
213  {
214  if (!$this->checkPermissionBoolAndReturn($permission)) {
215  throw new \ilObjectException($this->lng->txt("permission_denied"));
216  }
217  }
218 
219  public function checkPermissionBoolAndReturn(string $permission): bool
220  {
221  return (bool) $this->access->checkAccess($permission, '', $this->http->request()->getQueryParams()['ref_id']);
222  }
223 }
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...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(protected \ilBiblAdminFactoryFacadeInterface $facade)
ilBiblAdminFieldGUI constructor.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static http()
Fetches the global http state from ILIAS.
global $DIC
Definition: shib_login.php:22
checkPermissionBoolAndReturn(string $permission)
checkPermissionAndFail(string $permission)
ilGlobalTemplateInterface $main_tpl