ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
ilDclFieldEditGUI Class Reference

Class ilDclFieldEditGUI. More...

+ 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 ($a_mode="create")
 initEditCustomForm More...
 
 save ($a_mode="create")
 save Field More...
 
 getDataCollectionObject ()
 

Protected Member Functions

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

Protected Attributes

 $obj_id
 
 $table_id
 
 $parent_obj
 
 $table
 
 $form
 
 $field_obj
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilDclFieldEditGUI::__construct ( ilDclTableListGUI  $a_parent_obj)

Constructor.

Parameters
ilDclTableListGUI$a_parent_obj
int$table_idWe need a table_id if no field_id is set (creation mode). We ignore the table_id by edit mode
int$field_idThe field_id of a existing fiel (edit mode)

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

54 {
55 global $DIC;
56 $ilCtrl = $DIC['ilCtrl'];
57
58 $this->obj_id = $a_parent_obj->obj_id;
59 $this->parent_obj = $a_parent_obj;
60
61 $this->table_id = $_GET["table_id"];
62 $this->field_id = $_GET['field_id'];
63
64 if ($this->field_id) {
65 $this->field_obj = ilDclCache::getFieldCache($this->field_id);
66 } else {
67 $datatype = null;
68 if (isset($_POST['datatype']) && in_array($_POST['datatype'], array_keys(ilDclDatatype::getAllDatatype()))) {
69 $datatype = $_POST['datatype'];
70 }
71 $this->field_obj = ilDclFieldFactory::getFieldModelInstance($this->field_id, $datatype);
72 if (!$this->table_id) {
73 $ilCtrl->redirectByClass("ilDclTableListGUI", "listFields");
74 }
75 $this->field_obj->setTableId($this->table_id);
76 $ilCtrl->saveParameter($this, "table_id");
77 }
78
79 $this->table = ilDclCache::getTableCache($this->table_id);
80 }
$_GET["client_id"]
$_POST["username"]
static getTableCache($table_id=0)
static getFieldCache($field_id=0)
static getAllDatatype()
Get all possible Datatypes.
static getFieldModelInstance($field_id, $datatype=null)
Get FieldModel from field-id and datatype.
global $ilCtrl
Definition: ilias.php:18
$DIC
Definition: xapitoken.php:46

References $_GET, $_POST, $DIC, $ilCtrl, ilDclDatatype\getAllDatatype(), ilDclCache\getFieldCache(), ilDclFieldFactory\getFieldModelInstance(), and ilDclCache\getTableCache().

+ Here is the call graph for this function:

Member Function Documentation

◆ cancel()

ilDclFieldEditGUI::cancel ( )

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

205 {
206 global $DIC;
207 $ilCtrl = $DIC['ilCtrl'];
208 $ilCtrl->redirectByClass("ildclfieldlistgui", "listFields");
209 }

References $DIC, and $ilCtrl.

◆ cancelDelete()

ilDclFieldEditGUI::cancelDelete ( )

cancelDelete

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

180 {
181 global $DIC;
182 $ilCtrl = $DIC['ilCtrl'];
183
184 $ilCtrl->redirectByClass("ildclfieldlistgui", "listFields");
185 }

References $DIC, and $ilCtrl.

◆ checkAccess()

ilDclFieldEditGUI::checkAccess ( )
protected
Returns
bool

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

397 {
398 if ($field_id = $this->field_obj->getId()) {
399 return ilObjDataCollectionAccess::hasAccessToField($this->getDataCollectionObject()->ref_id, $this->table_id, $field_id);
400 } else {
401 return ilObjDataCollectionAccess::hasAccessToFields($this->getDataCollectionObject()->ref_id, $this->table_id);
402 }
403 }
static hasAccessToFields($ref_id, $table_id)
static hasAccessToField($ref_id, $table_id, $field_id)

References 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 (   $a_mode)
protected

Check input of form.

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

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

357 {
358 global $DIC;
359 $lng = $DIC['lng'];
360 $return = $this->form->checkInput();
361
362 // load specific model for input checking
363 $datatype_id = $this->form->getInput('datatype');
364 if ($datatype_id != null && is_numeric($datatype_id)) {
365 $base_model = new ilDclBaseFieldModel();
366 $base_model->setDatatypeId($datatype_id);
367 $field_validation_class = ilDclFieldFactory::getFieldModelInstanceByClass($base_model);
368
369 if (!$field_validation_class->checkFieldCreationInput($this->form)) {
370 $return = false;
371 }
372 }
373
374 // Don't allow multiple fields with the same title in this table
375 if ($a_mode == 'create') {
376 if ($title = $this->form->getInput('title')) {
377 if (ilDclTable::_hasFieldByTitle($title, $this->table_id)) {
378 $inputObj = $this->form->getItemByPostVar('title');
379 $inputObj->setAlert($lng->txt("dcl_field_title_unique"));
380 $return = false;
381 }
382 }
383 }
384
385 if (!$return) {
386 ilUtil::sendFailure($lng->txt("form_input_not_valid"));
387 }
388
389 return $return;
390 }
Class ilDclBaseFieldModel.
static getFieldModelInstanceByClass(ilDclBaseFieldModel $field, $field_id=null)
Gets the correct instance of a fieldModel class Checks if a field is a plugin a replaces the fieldMod...
static _hasFieldByTitle($title, $obj_id)
Checks if a table has a field with the given title.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
$lng

References $DIC, $lng, ilDclTable\_hasFieldByTitle(), ilDclFieldFactory\getFieldModelInstanceByClass(), and ilUtil\sendFailure().

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 156 of file class.ilDclFieldEditGUI.php.

157 {
158 global $DIC;
159 $ilCtrl = $DIC['ilCtrl'];
160 $lng = $DIC['lng'];
161 $tpl = $DIC['tpl'];
162
163 $conf = new ilConfirmationGUI();
164 $conf->setFormAction($ilCtrl->getFormAction($this));
165 $conf->setHeaderText($lng->txt('dcl_confirm_delete_field'));
166
167 $conf->addItem('field_id', (int) $this->field_obj->getId(), $this->field_obj->getTitle());
168
169 $conf->setConfirm($lng->txt('delete'), 'delete');
170 $conf->setCancel($lng->txt('cancel'), 'cancelDelete');
171
172 $tpl->setContent($conf->getHTML());
173 }
Confirmation screen class.
if(isset($_FILES['img_file']['size']) && $_FILES['img_file']['size'] > 0) $tpl

References $DIC, $ilCtrl, $lng, and $tpl.

◆ create()

ilDclFieldEditGUI::create ( )

create field add form

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

117 {
118 global $DIC;
119 $tpl = $DIC['tpl'];
120
121 $this->initForm();
122 $tpl->setContent($this->form->getHTML());
123 }
initForm($a_mode="create")
initEditCustomForm

References $DIC, $tpl, and initForm().

+ Here is the call graph for this function:

◆ delete()

ilDclFieldEditGUI::delete ( )

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

192 {
193 global $DIC;
194 $ilCtrl = $DIC['ilCtrl'];
195
196 $this->table->deleteField($this->field_obj->getId());
197 $ilCtrl->redirectByClass("ildclfieldlistgui", "listFields");
198 }

References $DIC, and $ilCtrl.

◆ edit()

ilDclFieldEditGUI::edit ( )

create field edit form

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

130 {
131 global $DIC;
132 $tpl = $DIC['tpl'];
133
134 $this->initForm("edit");
135
136 $this->field_obj->fillPropertiesForm($this->form);
137
138 $tpl->setContent($this->form->getHTML());
139 }

References $DIC, $tpl, and initForm().

+ Here is the call graph for this function:

◆ executeCommand()

ilDclFieldEditGUI::executeCommand ( )

execute command

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

87 {
88 global $DIC;
89 $ilCtrl = $DIC['ilCtrl'];
90 $ilCtrl->saveParameter($this, 'field_id');
91
92 $cmd = $ilCtrl->getCmd();
93
94 if (!$this->checkAccess()) {
95 $this->permissionDenied();
96
97 return;
98 }
99
100 switch ($cmd) {
101 case "update":
102 $this->save("update");
103 break;
104 default:
105 $this->$cmd();
106 break;
107 }
108
109 return true;
110 }
save($a_mode="create")
save Field

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

+ Here is the call graph for this function:

◆ getDataCollectionObject()

ilDclFieldEditGUI::getDataCollectionObject ( )
Returns
ilObjDataCollection

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

410 {
411 return $this->parent_obj->getDataCollectionObject();
412 }

Referenced by checkAccess(), and initForm().

+ Here is the caller graph for this function:

◆ initForm()

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

initEditCustomForm

Parameters
string$a_modevalues: create | edit

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

218 {
219 global $DIC;
220 $ilCtrl = $DIC['ilCtrl'];
221 $lng = $DIC['lng'];
222
223 $this->form = new ilPropertyFormGUI();
224
225 if ($a_mode == "edit") {
226 $this->form->setTitle($lng->txt('dcl_edit_field'));
227 $hidden_prop = new ilHiddenInputGUI("field_id");
228 $this->form->addItem($hidden_prop);
229
230 $this->form->setFormAction($ilCtrl->getFormAction($this), "update");
231
232 $this->form->addCommandButton('update', $lng->txt('dcl_update_field'));
233 } else {
234 $this->form->setTitle($lng->txt('dcl_new_field'));
235 $hidden_prop = new ilHiddenInputGUI("table_id");
236 $hidden_prop->setValue($this->field_obj->getTableId());
237 $this->form->addItem($hidden_prop);
238
239 $this->form->setFormAction($ilCtrl->getFormAction($this), "save");
240
241 $this->form->addCommandButton('save', $lng->txt('dcl_create_field'));
242 }
243 $this->form->addCommandButton('cancel', $lng->txt('cancel'));
244
245 $text_prop = new ilTextInputGUI($lng->txt("title"), "title");
246 $text_prop->setRequired(true);
247 $text_prop->setInfo(sprintf($lng->txt('fieldtitle_allow_chars'), ilDclBaseFieldModel::_getTitleInvalidChars(false)));
248 $text_prop->setValidationRegexp(ilDclBaseFieldModel::_getTitleInvalidChars(true));
249 $this->form->addItem($text_prop);
250
251 // Description
252 $text_prop = new ilTextAreaInputGUI($lng->txt("dcl_field_description"), "description");
253 $this->form->addItem($text_prop);
254
255 $edit_datatype = new ilRadioGroupInputGUI($lng->txt('dcl_datatype'), 'datatype');
256
257 foreach (ilDclDatatype::getAllDatatype() as $datatype) {
258 $model = new ilDclBaseFieldModel();
259 $model->setDatatypeId($datatype->getId());
260
261 if ($a_mode == 'edit' && $datatype->getId() == $this->field_obj->getDatatypeId()) {
262 $model = $this->field_obj;
263 }
264
265 $field_representation = ilDclFieldFactory::getFieldRepresentationInstance($model);
266 $field_representation->addFieldCreationForm($edit_datatype, $this->getDataCollectionObject(), $a_mode);
267 }
268 $edit_datatype->setRequired(true);
269
270 //you can't change type but we still need it in POST
271 if ($a_mode == "edit") {
272 $edit_datatype->setDisabled(true);
273 }
274 $this->form->addItem($edit_datatype);
275
276 // Required
277 $cb = new ilCheckboxInputGUI($lng->txt("dcl_field_required"), "required");
278 $this->form->addItem($cb);
279
280 //Unique
281 $cb = new ilCheckboxInputGUI($lng->txt("dcl_unique"), "unique");
282 $cb->setInfo($lng->txt('dcl_unique_desc'));
283 $this->form->addItem($cb);
284 }
This class represents a checkbox property in a property form.
static _getTitleInvalidChars($a_as_regex=true)
All valid chars for filed titles.
static getFieldRepresentationInstance(ilDclBaseFieldModel $field)
Returns FieldRepresentation from BaseFieldModel.
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, $field_obj, $ilCtrl, $lng, ilDclBaseFieldModel\_getTitleInvalidChars(), ilDclDatatype\getAllDatatype(), getDataCollectionObject(), and ilDclFieldFactory\getFieldRepresentationInstance().

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 145 of file class.ilDclFieldEditGUI.php.

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

References $DIC, and $tpl.

Referenced by executeCommand().

+ Here is the caller graph for this function:

◆ save()

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

save Field

Parameters
string$a_modevalues: create | update

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

293 {
294 global $DIC;
295 $ilCtrl = $DIC['ilCtrl'];
296 $lng = $DIC['lng'];
297 $tpl = $DIC['tpl'];
298
299 $this->initForm($a_mode == "update" ? "edit" : "create");
300
301 if ($this->checkInput($a_mode)) {
302
303 // check if confirmation is needed and if so, fetch and render confirmationGUI
304 if (($a_mode == "update") && !($this->form->getInput('confirmed')) && $this->field_obj->isConfirmationRequired($this->form)) {
305 $ilConfirmationGUI = $this->field_obj->getConfirmationGUI($this->form);
306 $tpl->setContent($ilConfirmationGUI->getHTML());
307
308 return;
309 }
310
311 $title = $this->form->getInput("title");
312 if ($a_mode != "create" && $title != $this->field_obj->getTitle()) {
313 ilUtil::sendInfo($lng->txt("dcl_field_title_change_warning"), true);
314 }
315
316 $this->field_obj->setTitle($title);
317 $this->field_obj->setDescription($this->form->getInput("description"));
318 $this->field_obj->setDatatypeId($this->form->getInput("datatype"));
319 $this->field_obj->setRequired($this->form->getInput("required"));
320 $this->field_obj->setUnique($this->form->getInput("unique"));
321
322 if ($a_mode == "update") {
323 $this->field_obj->doUpdate();
324 } else {
325 $this->field_obj->setOrder($this->table->getNewFieldOrder());
326 $this->field_obj->doCreate();
327 }
328
329 // Get possible properties and save them
330 $this->field_obj->storePropertiesFromForm($this->form);
331
332 $ilCtrl->setParameter($this, "field_id", $this->field_obj->getId());
333
334 if ($a_mode == "update") {
335 ilUtil::sendSuccess($lng->txt("dcl_msg_field_modified"), true);
336 } else {
337 $this->table->addField($this->field_obj);
338 $this->table->buildOrderFields();
339 ilUtil::sendSuccess($lng->txt("msg_field_created"), false);
340 }
341 $ilCtrl->redirectByClass(strtolower("ilDclFieldListGUI"), "listFields");
342 } else {
343 $this->form->setValuesByPost();
344 $tpl->setContent($this->form->getHTML());
345 }
346 }
checkInput($a_mode)
Check input of form.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.

References $DIC, $ilCtrl, $lng, $tpl, checkInput(), initForm(), and ilUtil\sendInfo().

Referenced by executeCommand().

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

Field Documentation

◆ $field_obj

ilDclFieldEditGUI::$field_obj
protected

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

Referenced by initForm().

◆ $form

ilDclFieldEditGUI::$form
protected

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

◆ $obj_id

ilDclFieldEditGUI::$obj_id
protected

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

◆ $parent_obj

ilDclFieldEditGUI::$parent_obj
protected

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

◆ $table

ilDclFieldEditGUI::$table
protected

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

◆ $table_id

ilDclFieldEditGUI::$table_id
protected

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


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