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.

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

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  }
static getAllDatatype()
Get all possible Datatypes.
$_GET["client_id"]
static getFieldCache($field_id=0)
static getTableCache($table_id=0)
global $ilCtrl
Definition: ilias.php:18
static getFieldModelInstance($field_id, $datatype=null)
Get FieldModel from field-id and datatype.
$DIC
Definition: xapitoken.php:46
$_POST["username"]
+ Here is the call graph for this function:

Member Function Documentation

◆ cancel()

ilDclFieldEditGUI::cancel ( )

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

References $DIC, and $ilCtrl.

205  {
206  global $DIC;
207  $ilCtrl = $DIC['ilCtrl'];
208  $ilCtrl->redirectByClass("ildclfieldlistgui", "listFields");
209  }
global $ilCtrl
Definition: ilias.php:18
$DIC
Definition: xapitoken.php:46

◆ cancelDelete()

ilDclFieldEditGUI::cancelDelete ( )

cancelDelete

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

References $DIC, and $ilCtrl.

180  {
181  global $DIC;
182  $ilCtrl = $DIC['ilCtrl'];
183 
184  $ilCtrl->redirectByClass("ildclfieldlistgui", "listFields");
185  }
global $ilCtrl
Definition: ilias.php:18
$DIC
Definition: xapitoken.php:46

◆ checkAccess()

ilDclFieldEditGUI::checkAccess ( )
protected
Returns
bool

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

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

Referenced by executeCommand().

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)
+ 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.

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

Referenced by save().

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 _hasFieldByTitle($title, $obj_id)
Checks if a table has a field with the given title.
$lng
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
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...
$DIC
Definition: xapitoken.php:46
+ 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.

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

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  }
if(isset($_FILES['img_file']['size']) && $_FILES['img_file']['size'] > 0) $tpl
global $ilCtrl
Definition: ilias.php:18
$lng
$DIC
Definition: xapitoken.php:46
Confirmation screen class.

◆ create()

ilDclFieldEditGUI::create ( )

create field add form

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

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

117  {
118  global $DIC;
119  $tpl = $DIC['tpl'];
120 
121  $this->initForm();
122  $tpl->setContent($this->form->getHTML());
123  }
if(isset($_FILES['img_file']['size']) && $_FILES['img_file']['size'] > 0) $tpl
initForm($a_mode="create")
initEditCustomForm
$DIC
Definition: xapitoken.php:46
+ Here is the call graph for this function:

◆ delete()

ilDclFieldEditGUI::delete ( )

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

References $DIC, and $ilCtrl.

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

◆ edit()

ilDclFieldEditGUI::edit ( )

create field edit form

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

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

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  }
if(isset($_FILES['img_file']['size']) && $_FILES['img_file']['size'] > 0) $tpl
initForm($a_mode="create")
initEditCustomForm
$DIC
Definition: xapitoken.php:46
+ Here is the call graph for this function:

◆ executeCommand()

ilDclFieldEditGUI::executeCommand ( )

execute command

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

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

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
global $ilCtrl
Definition: ilias.php:18
$DIC
Definition: xapitoken.php:46
+ Here is the call graph for this function:

◆ getDataCollectionObject()

ilDclFieldEditGUI::getDataCollectionObject ( )
Returns
ilObjDataCollection

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

Referenced by checkAccess(), and initForm().

410  {
411  return $this->parent_obj->getDataCollectionObject();
412  }
+ 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.

References $DIC, $field_obj, $ilCtrl, $lng, ilDclBaseFieldModel\_getTitleInvalidChars(), ilDclDatatype\getAllDatatype(), getDataCollectionObject(), ilDclFieldFactory\getFieldRepresentationInstance(), and ilFormPropertyGUI\setInfo().

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

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  }
Class ilDclBaseFieldModel.
static _getTitleInvalidChars($a_as_regex=true)
All valid chars for filed titles.
This class represents a property form user interface.
static getAllDatatype()
Get all possible Datatypes.
static getFieldRepresentationInstance(ilDclBaseFieldModel $field)
Returns FieldRepresentation from BaseFieldModel.
This class represents a checkbox property in a property form.
global $ilCtrl
Definition: ilias.php:18
setInfo($a_info)
Set Information Text.
This class represents a hidden form property in a property form.
This class represents a property in a property form.
$lng
This class represents a text area property in a property form.
$DIC
Definition: xapitoken.php:46
+ 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.

References $DIC, and $tpl.

Referenced by executeCommand().

146  {
147  global $DIC;
148  $tpl = $DIC['tpl'];
149  $tpl->setContent("Permission denied");
150  }
if(isset($_FILES['img_file']['size']) && $_FILES['img_file']['size'] > 0) $tpl
$DIC
Definition: xapitoken.php:46
+ 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.

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

Referenced by executeCommand().

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  }
if(isset($_FILES['img_file']['size']) && $_FILES['img_file']['size'] > 0) $tpl
global $ilCtrl
Definition: ilias.php:18
initForm($a_mode="create")
initEditCustomForm
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
$lng
checkInput($a_mode)
Check input of form.
$DIC
Definition: xapitoken.php:46
+ 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: