ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilDclFieldEditGUI Class Reference
+ Collaboration diagram for ilDclFieldEditGUI:

Public Member Functions

 __construct (ilDclTableListGUI $a_parent_obj)
 Constructor. More...
 
 executeCommand ()
 execute command More...
 
 create ()
 create field add form More...
 
 edit ()
 create field edit form More...
 
 permissionDenied ()
 
 confirmDelete ()
 confirmDelete More...
 
 cancelDelete ()
 cancelDelete More...
 
 delete ()
 
 cancel ()
 
 initForm (string $a_mode="create")
 initEditCustomForm More...
 
 save (string $a_mode="create")
 save Field More...
 
 getDataCollectionObject ()
 

Protected Member Functions

 checkInput (string $a_mode)
 Check input of form. More...
 
 checkAccess ()
 

Protected Attributes

int $obj_id
 
int $table_id
 
ilDclTableListGUI $parent_obj
 
ilDclTable $table
 
ilPropertyFormGUI $form
 
ilDclBaseFieldModel $field_obj
 
ilHelpGUI $help
 
ILIAS HTTP Services $http
 
ILIAS Refinery Factory $refinery
 
int $field_id
 

Private Attributes

ilGlobalTemplateInterface $main_tpl
 
ilLanguage $lng
 

Detailed Description

Definition at line 21 of file class.ilDclFieldEditGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilDclFieldEditGUI::__construct ( ilDclTableListGUI  $a_parent_obj)

Constructor.

Definition at line 40 of file class.ilDclFieldEditGUI.php.

41 {
42 global $DIC;
43 $this->main_tpl = $DIC->ui()->mainTemplate();
44 $ilCtrl = $DIC['ilCtrl'];
45
46 $this->obj_id = $a_parent_obj->getObjId();
47 $this->parent_obj = $a_parent_obj;
48 $this->help = $DIC->help();
49 $this->http = $DIC->http();
50 $this->refinery = $DIC->refinery();
51 $this->lng = $DIC->language();
52
53 $this->table_id = $this->http->wrapper()->query()->retrieve('table_id', $this->refinery->kindlyTo()->int());
54
55 $hasFieldId = $this->http->wrapper()->query()->has('field_id');
56 if ($hasFieldId) {
57 $this->field_id = $this->http->wrapper()->query()->retrieve('field_id', $this->refinery->kindlyTo()->int());
58 } else {
59 $this->field_id = 0;
60 }
61
62 if ($this->field_id) {
63 $this->field_obj = ilDclCache::getFieldCache($this->field_id);
64 } else {
65 $datatype = null;
66
67 $has_datatype = $this->http->wrapper()->post()->has('datatype');
68
69 if ($has_datatype) {
70 $datatype_value = $this->http->wrapper()->post()->retrieve(
71 'datatype',
72 $this->refinery->kindlyTo()->int()
73 );
74 if (in_array(
75 $datatype_value,
77 )) {
78 $datatype = $datatype_value;
79 }
80 }
81 $this->field_obj = ilDclFieldFactory::getFieldModelInstance($this->field_id, $datatype);
82 if (!$this->table_id) {
83 $ilCtrl->redirectByClass("ilDclTableListGUI", "listFields");
84 }
85 $this->field_obj->setTableId($this->table_id);
86 $ilCtrl->saveParameter($this, "table_id");
87 }
88
89 $this->table = ilDclCache::getTableCache($this->table_id);
90 }
static getTableCache(?int $table_id=null)
static getFieldCache(int $field_id=0)
static getAllDatatype(bool $force=false)
Get all possible Datatypes.
static getFieldModelInstance(int $field_id, ?int $datatype=null)
Get FieldModel from field-id and datatype.
static http()
Fetches the global http state from ILIAS.
global $DIC
Definition: shib_login.php:26

References $DIC, ilDclDatatype\getAllDatatype(), ilDclCache\getFieldCache(), ilDclFieldFactory\getFieldModelInstance(), ilDclTableListGUI\getObjId(), ilDclCache\getTableCache(), ILIAS\Repository\help(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

Member Function Documentation

◆ cancel()

ilDclFieldEditGUI::cancel ( )

Definition at line 199 of file class.ilDclFieldEditGUI.php.

199 : void
200 {
201 global $DIC;
202 $ilCtrl = $DIC['ilCtrl'];
203 $ilCtrl->redirectByClass("ildclfieldlistgui", "listFields");
204 }

References $DIC.

◆ cancelDelete()

ilDclFieldEditGUI::cancelDelete ( )

cancelDelete

Definition at line 176 of file class.ilDclFieldEditGUI.php.

176 : void
177 {
178 global $DIC;
179 $ilCtrl = $DIC['ilCtrl'];
180
181 $ilCtrl->redirectByClass("ildclfieldlistgui", "listFields");
182 }

References $DIC.

◆ checkAccess()

ilDclFieldEditGUI::checkAccess ( )
protected
Returns
bool

Definition at line 366 of file class.ilDclFieldEditGUI.php.

366 : bool
367 {
368 if ($field_id = $this->field_obj->getId()) {
370 $this->getDataCollectionObject()->getRefId(),
371 $this->table_id,
372 (int) $field_id
373 );
374 } else {
376 $this->getDataCollectionObject()->getRefId(),
377 $this->table_id
378 );
379 }
380 }
static hasAccessToFields(int $ref_id, int $table_id)
static hasAccessToField(int $ref_id, int $table_id, int $field_id)

References $field_id, getDataCollectionObject(), ilObjDataCollectionAccess\hasAccessToField(), and ilObjDataCollectionAccess\hasAccessToFields().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkInput()

ilDclFieldEditGUI::checkInput ( string  $a_mode)
protected

Check input of form.

Parameters
$a_mode'create' | 'update'
Returns
bool

Definition at line 335 of file class.ilDclFieldEditGUI.php.

335 : bool
336 {
337 global $DIC;
338 $lng = $DIC['lng'];
339 $return = $this->form->checkInput();
340
341 if (!$this->field_obj->checkFieldCreationInput($this->form)) {
342 $return = false;
343 }
344
345 // Don't allow multiple fields with the same title in this table
346 if ($a_mode == 'create') {
347 if ($title = $this->form->getInput('title')) {
348 if (ilDclTable::_hasFieldByTitle($title, $this->table_id)) {
349 $inputObj = $this->form->getItemByPostVar('title');
350 $inputObj->setAlert($lng->txt("dcl_field_title_unique"));
351 $return = false;
352 }
353 }
354 }
355
356 if (!$return) {
357 $this->main_tpl->setOnScreenMessage('failure', $lng->txt("form_input_not_valid"));
358 }
359
360 return $return;
361 }
static _hasFieldByTitle(string $title, int $obj_id)
Checks if a table has a field with the given title.
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
form( $class_path, string $cmd, string $submit_caption="")

References $DIC, $lng, ilDclTable\_hasFieldByTitle(), ILIAS\Repository\form(), and ilLanguage\txt().

Referenced by save().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ confirmDelete()

ilDclFieldEditGUI::confirmDelete ( )

confirmDelete

Definition at line 154 of file class.ilDclFieldEditGUI.php.

154 : void
155 {
156 global $DIC;
157 $ilCtrl = $DIC['ilCtrl'];
158 $lng = $DIC['lng'];
159 $tpl = $DIC['tpl'];
160
161 $conf = new ilConfirmationGUI();
162 $conf->setFormAction($ilCtrl->getFormAction($this));
163 $conf->setHeaderText($lng->txt('dcl_confirm_delete_field'));
164
165 $conf->addItem('field_id', $this->field_obj->getId(), $this->field_obj->getTitle());
166
167 $conf->setConfirm($lng->txt('delete'), 'delete');
168 $conf->setCancel($lng->txt('cancel'), 'cancelDelete');
169
170 $tpl->setContent($conf->getHTML());
171 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References $DIC, $lng, and ilLanguage\txt().

+ Here is the call graph for this function:

◆ create()

ilDclFieldEditGUI::create ( )

create field add form

Definition at line 121 of file class.ilDclFieldEditGUI.php.

121 : void
122 {
123 $this->help->setSubScreenId('create');
124
125 $this->initForm();
126 $this->main_tpl->setContent($this->form->getHTML());
127 }
initForm(string $a_mode="create")
initEditCustomForm

References ILIAS\Repository\form(), ILIAS\Repository\help(), and initForm().

+ Here is the call graph for this function:

◆ delete()

ilDclFieldEditGUI::delete ( )

Definition at line 187 of file class.ilDclFieldEditGUI.php.

187 : void
188 {
189 global $DIC;
190 $ilCtrl = $DIC['ilCtrl'];
191
192 $this->table->deleteField((int) $this->field_obj->getId());
193 $ilCtrl->redirectByClass("ildclfieldlistgui", "listFields");
194 }

References $DIC.

◆ edit()

ilDclFieldEditGUI::edit ( )

create field edit form

Definition at line 132 of file class.ilDclFieldEditGUI.php.

132 : void
133 {
134 $this->help->setSubScreenId('edit');
135
136 $this->initForm("edit");
137 $this->field_obj->fillPropertiesForm($this->form);
138 $this->main_tpl->setContent($this->form->getHTML());
139 }

References ILIAS\Repository\form(), ILIAS\Repository\help(), and initForm().

+ Here is the call graph for this function:

◆ executeCommand()

ilDclFieldEditGUI::executeCommand ( )

execute command

Definition at line 95 of file class.ilDclFieldEditGUI.php.

95 : void
96 {
97 global $DIC;
98 $ilCtrl = $DIC['ilCtrl'];
99 $ilCtrl->saveParameter($this, 'field_id');
100
101 $cmd = $ilCtrl->getCmd();
102
103 if (!$this->checkAccess()) {
104 $this->permissionDenied();
105 return;
106 }
107
108 switch ($cmd) {
109 case "update":
110 $this->save("update");
111 break;
112 default:
113 $this->$cmd();
114 break;
115 }
116 }
save(string $a_mode="create")
save Field

References $DIC, checkAccess(), permissionDenied(), and save().

+ Here is the call graph for this function:

◆ getDataCollectionObject()

ilDclFieldEditGUI::getDataCollectionObject ( )
Returns
ilObjDataCollection

Definition at line 385 of file class.ilDclFieldEditGUI.php.

386 {
387 return $this->parent_obj->getDataCollectionObject();
388 }

Referenced by checkAccess(), and initForm().

+ Here is the caller graph for this function:

◆ initForm()

ilDclFieldEditGUI::initForm ( string  $a_mode = "create")

initEditCustomForm

Parameters
string$a_modevalues: create | edit

Definition at line 210 of file class.ilDclFieldEditGUI.php.

210 : void
211 {
212 global $DIC;
213 $ilCtrl = $DIC['ilCtrl'];
214 $lng = $DIC['lng'];
215
216 $this->form = new ilPropertyFormGUI();
217
218 if ($a_mode == "edit") {
219 $this->form->setTitle($lng->txt('dcl_edit_field'));
220 $hidden_prop = new ilHiddenInputGUI("field_id");
221 $this->form->addItem($hidden_prop);
222
223 $this->form->setFormAction($ilCtrl->getFormAction($this));
224
225 $this->form->addCommandButton('update', $lng->txt('dcl_update_field'));
226 } else {
227 $this->form->setTitle($lng->txt('dcl_new_field'));
228 $hidden_prop = new ilHiddenInputGUI("table_id");
229 $hidden_prop->setValue((string) $this->field_obj->getTableId());
230 $this->form->addItem($hidden_prop);
231
232 $this->form->setFormAction($ilCtrl->getFormAction($this));
233
234 $this->form->addCommandButton('save', $lng->txt('dcl_create_field'));
235 }
236 $this->form->addCommandButton('cancel', $lng->txt('cancel'));
237
238 $text_prop = new ilTextInputGUI($lng->txt("title"), "title");
239 $text_prop->setRequired(true);
240 $text_prop->setInfo(sprintf(
241 $lng->txt('fieldtitle_allow_chars'),
243 ));
244 $text_prop->setValidationRegexp(ilDclBaseFieldModel::_getTitleInvalidChars());
245 $this->form->addItem($text_prop);
246
247 // Description
248 $text_prop = new ilTextAreaInputGUI($lng->txt("dcl_field_description"), "description");
249 $text_prop->setInfo($lng->txt('dcl_field_description_desc'));
250 $this->form->addItem($text_prop);
251
252 $edit_datatype = new ilRadioGroupInputGUI($lng->txt('dcl_datatype'), 'datatype');
253
254 if ($a_mode === 'edit') {
255 $field_representation = ilDclFieldFactory::getFieldRepresentationInstance($this->field_obj);
256 $field_representation->addFieldCreationForm($edit_datatype, $this->getDataCollectionObject(), $a_mode);
257 $edit_datatype->setDisabled(true);
258 } else {
259 foreach (ilDclDatatype::getAllDatatype() as $datatype) {
260 $model = new ilDclBaseFieldModel();
261 $model->setDatatypeId($datatype->getId());
263 $field_representation = ilDclFieldFactory::getFieldRepresentationInstance($model);
264 $field_representation->addFieldCreationForm($edit_datatype, $this->getDataCollectionObject());
265 }
266 }
267 $edit_datatype->setRequired(true);
268 $this->form->addItem($edit_datatype);
269
270 }
static _getTitleInvalidChars(bool $a_as_regex=true)
All valid chars for filed titles.
static getFieldRepresentationInstance(ilDclBaseFieldModel $field)
static getFieldModelInstanceByClass(ilDclBaseFieldModel $field, ?int $field_id=null)
Gets the correct instance of a fieldModel class Checks if a field is a plugin a replaces the fieldMod...
This class represents a hidden form property in a property form.
This class represents a property form user interface.
This class represents a property in a property form.
This class represents a text area property in a property form.
This class represents a text property in a property form.

References $DIC, $lng, ilDclBaseFieldModel\_getTitleInvalidChars(), ILIAS\Repository\form(), ilDclDatatype\getAllDatatype(), getDataCollectionObject(), ilDclFieldFactory\getFieldModelInstanceByClass(), ilDclFieldFactory\getFieldRepresentationInstance(), and ilLanguage\txt().

Referenced by create(), edit(), and save().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ permissionDenied()

ilDclFieldEditGUI::permissionDenied ( )

Definition at line 144 of file class.ilDclFieldEditGUI.php.

144 : void
145 {
146 global $DIC;
147 $tpl = $DIC['tpl'];
148 $tpl->setContent("Permission denied");
149 }

References $DIC.

Referenced by executeCommand().

+ Here is the caller graph for this function:

◆ save()

ilDclFieldEditGUI::save ( string  $a_mode = "create")

save Field

Parameters
string$a_modevalues: create | update

Definition at line 276 of file class.ilDclFieldEditGUI.php.

276 : void
277 {
278 global $DIC;
279 $ilCtrl = $DIC['ilCtrl'];
280 $lng = $DIC['lng'];
281 $tpl = $DIC['tpl'];
282
283 $this->initForm($a_mode == "update" ? "edit" : "create");
284
285 if ($this->checkInput($a_mode)) {
286
287 // check if confirmation is needed and if so, fetch and render confirmationGUI
288 if (($a_mode == "update") && !($this->form->getInput('confirmed')) && $this->field_obj->isConfirmationRequired($this->form)) {
289 $ilConfirmationGUI = $this->field_obj->getConfirmationGUI($this->form);
290 $tpl->setContent($ilConfirmationGUI->getHTML());
291
292 return;
293 }
294
295 $title = $this->form->getInput("title");
296 if ($a_mode != "create" && $title != $this->field_obj->getTitle()) {
297 $this->main_tpl->setOnScreenMessage('info', $lng->txt("dcl_field_title_change_warning"), true);
298 }
299
300 $this->field_obj->setTitle($title);
301 $this->field_obj->setDescription($this->form->getInput("description"));
302 $this->field_obj->setDatatypeId((int) $this->form->getInput("datatype"));
303
304 if ($a_mode == "update") {
305 $this->field_obj->doUpdate();
306 } else {
307 $this->field_obj->setOrder($this->table->getNewFieldOrder());
308 $this->field_obj->doCreate();
309 }
310
311 // Get possible properties and save them
312 $this->field_obj->storePropertiesFromForm($this->form);
313
314 $ilCtrl->setParameter($this, "field_id", $this->field_obj->getId());
315
316 if ($a_mode == "update") {
317 $this->main_tpl->setOnScreenMessage('success', $lng->txt("dcl_msg_field_modified"), true);
318 } else {
319 $this->table->addField($this->field_obj);
320 $this->table->buildOrderFields();
321 $this->main_tpl->setOnScreenMessage('success', $lng->txt("msg_field_created"));
322 }
323 $ilCtrl->redirectByClass(strtolower("ilDclFieldListGUI"), "listFields");
324 } else {
325 $this->form->setValuesByPost();
326 $tpl->setContent($this->form->getHTML());
327 }
328 }
checkInput(string $a_mode)
Check input of form.

References $DIC, $lng, checkInput(), ILIAS\Repository\form(), initForm(), and ilLanguage\txt().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $field_id

int ilDclFieldEditGUI::$field_id
protected

Definition at line 35 of file class.ilDclFieldEditGUI.php.

Referenced by checkAccess().

◆ $field_obj

ilDclBaseFieldModel ilDclFieldEditGUI::$field_obj
protected

Definition at line 29 of file class.ilDclFieldEditGUI.php.

◆ $form

ilPropertyFormGUI ilDclFieldEditGUI::$form
protected

Definition at line 28 of file class.ilDclFieldEditGUI.php.

◆ $help

ilHelpGUI ilDclFieldEditGUI::$help
protected

Definition at line 32 of file class.ilDclFieldEditGUI.php.

◆ $http

ILIAS HTTP Services ilDclFieldEditGUI::$http
protected

Definition at line 33 of file class.ilDclFieldEditGUI.php.

◆ $lng

ilLanguage ilDclFieldEditGUI::$lng
private

Definition at line 31 of file class.ilDclFieldEditGUI.php.

Referenced by checkInput(), confirmDelete(), initForm(), and save().

◆ $main_tpl

ilGlobalTemplateInterface ilDclFieldEditGUI::$main_tpl
private

Definition at line 30 of file class.ilDclFieldEditGUI.php.

◆ $obj_id

int ilDclFieldEditGUI::$obj_id
protected

Definition at line 23 of file class.ilDclFieldEditGUI.php.

◆ $parent_obj

ilDclTableListGUI ilDclFieldEditGUI::$parent_obj
protected

Definition at line 26 of file class.ilDclFieldEditGUI.php.

◆ $refinery

ILIAS Refinery Factory ilDclFieldEditGUI::$refinery
protected

Definition at line 34 of file class.ilDclFieldEditGUI.php.

◆ $table

ilDclTable ilDclFieldEditGUI::$table
protected

Definition at line 27 of file class.ilDclFieldEditGUI.php.

◆ $table_id

int ilDclFieldEditGUI::$table_id
protected

Definition at line 24 of file class.ilDclFieldEditGUI.php.


The documentation for this class was generated from the following file: