ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilADTBasedObjectGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
11abstract class ilADTBasedObjectGUI
12{
13 protected $object; // [ilADTBasedObject]
14
23 public function __construct(ilObjectGUI $a_parent_gui)
24 {
25 $this->gui = $a_parent_gui;
26 $this->object = $this->initObject();
27 }
28
32 abstract protected function initObject();
33
34
35 //
36 // VERY BASIC EXAMPLE OF FORM HANDLING
37 //
38
44 public function editAction(ilADTGroupFormBridge $a_form = null)
45 {
46 global $tpl;
47
48 if (!$a_form) {
49 $a_form = $this->initForm();
50 }
51
52 $tpl->setContent($a_form->getForm()->getHTML());
53 }
54
60 abstract protected function prepareFormElements(ilADTGroupFormBridge $a_adt_form);
61
67 protected function initForm()
68 {
69 global $tpl, $lng, $ilCtrl;
70
71 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
73 $form->setFormAction($ilCtrl->getFormAction($this->gui, "updateAction"));
74
75 $adt_form = ilADTFactory::getInstance()->getFormBridgeForInstance($this->object->getProperties());
76
77 // has to be done BEFORE prepareFormElements() ...
78 $adt_form->setForm($form);
79
80 $this->prepareFormElements($adt_form);
81
82 $adt_form->addToForm();
83 $adt_form->addJS($tpl);
84
85 // :TODO:
86 $form->addCommandButton("updateAction", $lng->txt("save"));
87
88 return $adt_form;
89 }
90
94 public function updateAction()
95 {
96 global $lng, $ilCtrl;
97
98 $adt_form = $this->initForm();
99 $valid = $adt_form->getForm()->checkInput(); // :TODO: return value is obsolete
100
101 $old_chksum = $this->object->getProperties()->getCheckSum();
102
103 $adt_form->importFromPost();
104 $valid = $adt_form->validate();
105
106 $changed = ($old_chksum != $this->object->getProperties()->getCheckSum());
107
108 // validation errors have top priority
109 if (!$valid) {
110 ilUtil::sendFailure($lng->txt("form_input_not_valid"));
111 return $this->editAction($adt_form);
112 }
113
114 // :TODO: experimental, update only if necessary
115 if ($changed) {
116 if ($this->object->update()) {
117 ilUtil::sendSuccess($lng->txt("settings_saved"), true);
118 } else {
119 // error occured in db-layer (primary/unique)
120 foreach ($this->object->getDBErrors() as $element_id => $codes) {
121 $element = $adt_form->getElement($element_id);
122 if ($element) {
123 $element->setExternalErrors($this->object->translateDBErrorCodes($codes));
124 }
125 }
126
127 ilUtil::sendFailure($lng->txt("form_input_not_valid"));
128 return $this->editAction($adt_form);
129 }
130 }
131
132 $ilCtrl->redirect($this->gui, "edit");
133 }
134}
$tpl
Definition: ilias.php:10
An exception for terminatinating execution or to throw for unit testing.
ADT based-object GUI base class.
editAction(ilADTGroupFormBridge $a_form=null)
Edit object ADT properties.
updateAction()
Parse incoming values and update if valid.
initObject()
Init ADT-based object.
initForm()
Init ADT-based form.
prepareFormElements(ilADTGroupFormBridge $a_adt_form)
Prepare/customize form elements.
__construct(ilObjectGUI $a_parent_gui)
Constructor.
static getInstance()
Get singleton.
Class ilObjectGUI Basic methods of all Output classes.
This class represents a property form user interface.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
$valid
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:17
if(isset($_POST['submit'])) $form