From: avl Date: Mon, 22 Dec 2008 04:52:48 +0000 (+0200) Subject: admin templates X-Git-Tag: 0.5~436 X-Git-Url: https://git.andy128k.dev/?a=commitdiff_plain;h=c2ad7fb38917e129cb7a999187b8b2b2a04bdd70;p=ipf.git admin templates --- diff --git a/ipf/admin/model.php b/ipf/admin/model.php index 0b8f7bc..4ac7e73 100644 --- a/ipf/admin/model.php +++ b/ipf/admin/model.php @@ -242,12 +242,13 @@ class IPF_Admin_Model{ } $context = array( + 'mode'=>'add', 'page_title'=>'Add '.$this->modelName, 'classname'=>$this->modelName, 'form'=>$form, 'inlineInstances'=>$this->inlineInstances, 'lapp'=>$lapp, - 'perms'=>array(), + 'perms'=>$this->getPerms($request), 'lmodel'=>$lmodel, 'admin_title' => IPF::get('admin_title'), ); @@ -275,6 +276,7 @@ class IPF_Admin_Model{ $data = $o->getData(); foreach($o->getTable()->getRelations() as $rname=>$rel){ $pk = $rel->getTable()->getIdentifier(); + //print $pk; if (array_search($rname,$this->fields())){ if ($rel->getType()==IPF_ORM_Relation::MANY_AGGREGATE){ $data[$rname] = array(); @@ -289,6 +291,7 @@ class IPF_Admin_Model{ } $context = array( + 'mode'=>'change', 'page_title'=>'Edit '.$this->modelName, 'classname'=>$this->modelName, 'object'=>$o, diff --git a/ipf/admin/templates/admin/change.html b/ipf/admin/templates/admin/change.html index cc5e298..1856476 100644 --- a/ipf/admin/templates/admin/change.html +++ b/ipf/admin/templates/admin/change.html @@ -49,8 +49,9 @@ {/foreach} {/if}
- {if array_search('delete',$perms)!==false}

Delete

{/if} - + {if ($mode=='change') && (array_search('delete',$perms)!==false)}

Delete

{/if} + {if ($mode=='change') && (array_search('change',$perms)!==false)}{/if} + {if ($mode=='add') && (array_search('add',$perms)!==false)}{/if}
diff --git a/ipf/orm/record.php b/ipf/orm/record.php index 0b7d506..a8baf48 100644 --- a/ipf/orm/record.php +++ b/ipf/orm/record.php @@ -1013,7 +1013,7 @@ abstract class IPF_ORM_Record extends IPF_ORM_Record_Abstract implements Countab public function pk($sep='_') { $pk = ''; - while (list($key, $val) = each($this->_id)) { + foreach($this->_id as $val) { if ($pk!='') $pk .= $sep; $pk .= $val; diff --git a/ipf/orm/relation/association.php b/ipf/orm/relation/association.php index 4a1958d..93dfffc 100644 --- a/ipf/orm/relation/association.php +++ b/ipf/orm/relation/association.php @@ -15,7 +15,7 @@ class IPF_ORM_Relation_Association extends IPF_ORM_Relation { $table = $this->definition['refTable']; $component = $this->definition['refTable']->getComponentName(); - + switch ($context) { case "record": $sub = substr(str_repeat("?, ", $count),0,-2); @@ -30,13 +30,12 @@ class IPF_ORM_Relation_Association extends IPF_ORM_Relation $dql .= ' WHERE ' . $component . '.' . $this->definition['local'] . ' IN (' . $sub . ')'; break; } - return $dql; } public function fetchRelatedFor(IPF_ORM_Record $record) { - $id = $record->getIncremented(); + $id = $record->pk(); if (empty($id) || ! $this->definition['table']->getAttribute(IPF_ORM::ATTR_LOAD_REFERENCES)) { $coll = new IPF_ORM_Collection($this->getTable()); } else { diff --git a/ipf/orm/relation/parser.php b/ipf/orm/relation/parser.php index e15228e..fde505b 100644 --- a/ipf/orm/relation/parser.php +++ b/ipf/orm/relation/parser.php @@ -1,12 +1,12 @@ _table = $table; } @@ -16,21 +16,21 @@ class IPF_ORM_Relation_Parser return $this->_table; } - public function getPendingRelation($name) + public function getPendingRelation($name) { if ( ! isset($this->_pending[$name])) { throw new IPF_ORM_Exception('Unknown pending relation ' . $name); } - + return $this->_pending[$name]; } - public function getPendingRelations() + public function getPendingRelations() { return $this->_pending; } - public function unsetPendingRelations($name) + public function unsetPendingRelations($name) { unset($this->_pending[$name]); } @@ -40,7 +40,7 @@ class IPF_ORM_Relation_Parser if ( ! isset($this->_pending[$name]) && ! isset($this->_relations[$name])) { return false; } - + return true; } @@ -60,7 +60,7 @@ class IPF_ORM_Relation_Parser } $this->_pending[$alias] = array_merge($options, array('class' => $name, 'alias' => $alias)); - + return $this->_pending[$alias]; } @@ -74,14 +74,14 @@ class IPF_ORM_Relation_Parser $def = $this->_pending[$alias]; $identifierColumnNames = $this->_table->getIdentifierColumnNames(); $idColumnName = array_pop($identifierColumnNames); - + // check if reference class name exists // if it does we are dealing with association relation if (isset($def['refClass'])) { $def = $this->completeAssocDefinition($def); $localClasses = array_merge($this->_table->getOption('parents'), array($this->_table->getComponentName())); - if ( ! isset($this->_pending[$def['refClass']]) && + if ( ! isset($this->_pending[$def['refClass']]) && ! isset($this->_relations[$def['refClass']])) { $parser = $def['refTable']->getRelationParser(); @@ -133,7 +133,6 @@ class IPF_ORM_Relation_Parser } if ($recursive) { $this->getRelations(); - return $this->getRelation($alias, false); } else { throw new IPF_ORM_Exception('Unknown relation alias ' . $alias); @@ -155,7 +154,7 @@ class IPF_ORM_Relation_Parser if (in_array('IPF_ORM_Template', class_parents($template))) { $impl = $this->_table->getImpl($template); - + if ($impl === null) { throw new IPF_ORM_Exception("Couldn't find concrete implementation for template " . $template); } @@ -166,7 +165,7 @@ class IPF_ORM_Relation_Parser return $conn->getTable($impl); } - public function completeAssocDefinition($def) + public function completeAssocDefinition($def) { $conn = $this->_table->getConnection(); $def['table'] = $this->getImpl($def['class']); @@ -180,7 +179,7 @@ class IPF_ORM_Relation_Parser if ( ! isset($def['foreign'])) { // foreign key not set // try to guess the foreign key - + $def['foreign'] = ($def['local'] === $id[0]) ? $id[1] : $id[0]; } if ( ! isset($def['local'])) { @@ -194,16 +193,16 @@ class IPF_ORM_Relation_Parser if ( ! isset($def['foreign'])) { // foreign key not set // try to guess the foreign key - + $columns = $this->getIdentifiers($def['table']); - + $def['foreign'] = $columns; } if ( ! isset($def['local'])) { // local key not set // try to guess the local key $columns = $this->getIdentifiers($this->_table); - + $def['local'] = $columns; } } @@ -214,7 +213,7 @@ class IPF_ORM_Relation_Parser { $componentNameToLower = strtolower($table->getComponentName()); if (is_array($table->getIdentifier())) { - $columns = array(); + $columns = array(); foreach ((array) $table->getIdentifierColumnNames() as $identColName) { $columns[] = $componentNameToLower . '_' . $identColName; } @@ -249,7 +248,7 @@ class IPF_ORM_Relation_Parser break; } } - + if ( ! $found) { throw new IPF_ORM_Exception("Couldn't find columns."); } @@ -344,7 +343,7 @@ class IPF_ORM_Relation_Parser $idColumnName = array_pop($identifierColumnNames); $column = strtolower($table->getComponentName()) . '_' . $idColumnName; - + foreach ($localClasses as $class2) { $table2 = $conn->getTable($class2); if ($table2->hasColumn($column)) { @@ -374,7 +373,7 @@ class IPF_ORM_Relation_Parser unset($col['primary']); $def['table']->setColumn($column, $type, $length, $col); - + $columns[] = $column; } if (count($columns) > 1) {