2 import(
'Dataface/QuickForm.php');
33 $this->HTML_QuickForm();
39 if ( strpos($uri,
'?') !==
false ){
42 list($uri) = explode(
'?',$uri);
45 if ( strpos($uri,
'/') !==
false ){
46 list($uri) = explode(
'/',$uri);
49 if ( !isset($this->quickforms[$uri]) ){
52 return $this->quickforms[$uri];
58 if ( strpos($uri,
'#') !==
false ){
61 list($uri) = explode(
'#',$uri);
64 if ( !isset($this->records[$uri]) ){
65 $this->records[$uri] =& df_get($uri);
67 return $this->records[$uri];
72 if ( strpos($uri,
'?') !==
false ){
75 list($uri) = explode(
'?',$uri);
78 if ( strpos($uri,
'/') !==
false ){
79 list($uri) = explode(
'/',$uri);
85 if ( strpos($uri,
'#') ===
false ){
86 $err =&
PEAR::raiseError(
'No field specified in CompositeForm::getFieldDef.');
100 if ( strpos($uri,
'#') !==
false ){
105 $flds =&
$table->fields();
106 foreach (array_keys($flds) as $key){
107 $defs[$uri.
'#'.$key] =& $flds[$key];
113 if ( !isset($this->fields) ){
114 $this->fields = array();
115 foreach ( $this->uris as $uri ){
116 $this->fields = array_merge($this->fields, $this->
getFieldDefs($uri));
141 $el =& $formTool->buildWidget($record,$fieldDef, $this, $uri);
142 if (
PEAR::isError($el) ) trigger_error($el->getMessage(), E_USER_ERROR);
152 $this->addElement(
'submit',
'submit',
'Save');
157 $db->startTransaction();
161 $formTool->pushField($record, $fieldDef, $this, $uri);
162 if ( $record->valueChanged($fieldDef[
'name']) ) $this->changed_fields[] = $uri;
165 foreach ( array_keys($this->records) as $uri ){
166 $res = $this->records[$uri]->save(null,
true);
168 $db->rollbackTransaction();
173 $db->commitTransaction();
179 foreach ($this->changed_fields as $uri){
181 list($record_uri,
$fieldname) = explode(
'#',$uri);