Development

Changeset 8165

You must first sign up to be able to contribute.

Changeset 8165

Show
Ignore:
Timestamp:
03/30/08 23:28:06 (8 months ago)
Author:
Leon.van.der.Ree
Message:

Fixes for related-combo-boxes. comboboxes now again use the syntax tablename/fieldname. This will be changed to KRavEN's proposal.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_related_ajax_editors.php

    r7013 r8165  
    88  $groupedColumns = $this->getColumnsGrouped($for); 
    99   
    10   foreach ($groupedColumns['related'] as $relatedTableName => $relatedClass): 
     10  foreach ($groupedColumns['related'] as $foreignKey => $relatedTable): 
     11     
     12    $pk = $relatedTable['pk']->getName(); 
     13    $relatedTableName = $relatedTable['pk']->getTable()->getName(); 
    1114     
    1215    $relatedModuleName = $this->getParameterValue('related_tables.'.$relatedTableName.'.module_name') ? $this->getParameterValue('related_tables.'.$relatedTableName.'.module_name') : $relatedTableName; 
    1316 
    14     $pk = $relatedClass['pk']->getName(); 
    1517?> 
    1618  var show<?php echo sfInflector::camelize($relatedTableName) ?>Editor = function(fields, caller) { 
     
    2325      } 
    2426<?php  
    25   $columns = $this->getListUniqueColumns($relatedClass, true); 
     27  $columns = $this->getListUniqueColumns($relatedTable, true); 
    2628  foreach ($columns as $column):  
    2729    $columnName = str_replace('/', $tableDelimiter, $column->key);  
     
    5961      } 
    6062<?php  
    61   $columns = $this->getListUniqueColumns($relatedClass, true); 
     63  $columns = $this->getListUniqueColumns($relatedTable, true); 
    6264  foreach ($columns as $column):  
    6365    $columnName = str_replace('/', $tableDelimiter, $column->key);  
  • plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_related_ajax_renderer.php

    r8135 r8165  
    4343<?php 
    4444  //set name (from column of related JSON-DataStore) 
    45   $foreign_ds = sfInflector::underscore($rendererName)."_ds"; 
     45  $foreign_ds = sfInflector::underscore($relatedTableFKs)."_ds"; 
    4646 
    4747  $name = $column->getName(); 
  • plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_related_ajax_stores.php

    r8135 r8165  
    7070   
    7171    $pk = $relatedTable['pk']->getName(); 
    72     $listDisplay = array(array('name' => $foreignKey.$tableDelimiter.$pk, 'mapping' => $foreignKey.$tableDelimiter.$pk)); 
     72    $table = $relatedTable['pk']->getTableName(); 
     73    $listDisplay = array(array('name' => $table.$tableDelimiter.$pk, 'mapping' => $table.$tableDelimiter.$pk)); 
    7374 
    7475    // iterate through all requested columns (in all categories) of related class 
     
    7677    foreach ($columnsFromGroup as $column): 
    7778      $checkName = $foreignKey.'/'.$column->key; 
     79      $relatedName = $table.'/'.$column->key; 
    7880       
    7981      if (in_array($checkName, $hs)) continue; //TODO: check if key is correct 
     
    8688<?php 
    8789      // add colum to array 
    88       $listDisplay[] = array('name' => str_replace('/', $tableDelimiter, $checkName), 'mapping' => str_replace('/', $tableDelimiter, $checkName)); 
     90      $listDisplay[] = array('name' => str_replace('/', $tableDelimiter, $relatedName), 'mapping' => str_replace('/', $tableDelimiter, $relatedName)); 
    8991?> 
    9092<?php 
     
    98100<?php endforeach; ?> 
    99101<?php 
    100     $options = array('id' => $foreignKey.$tableDelimiter.$pk, 
     102    $options = array('id' => $table.$tableDelimiter.$pk, 
    101103                     'root' => 'data', 
    102104                     'totalProperty' => 'totalCount'); 
    103105    $jsReader = extjs_data_reader($options, $listDisplay, 'json'); 
    104106 
    105     $url = $controller->genUrl($this->getModuleName().'/jsonAutocomplete?class='.$foreignKey); 
     107    $url = $controller->genUrl($this->getModuleName().'/jsonAutocomplete?class='.$table); //$foreignKey 
    106108 
    107109    // TODO: sortInfo is set to last field!!! this should probably be defined/definable in the generator.yml file!  
     
    110112                     'baseParams' => array('filter' => 'query'), 
    111113                     'reader' => $jsReader, 
    112                      'sortInfo' => array('field' => str_replace('/', $tableDelimiter, $checkName), 'direction' => 'asc'), 
     114                     'sortInfo' => array('field' => str_replace('/', $tableDelimiter, $relatedName), 'direction' => 'asc'), 
    113115                     'remoteSort' => 'true'); 
    114116    $jsDataStore = extjs_data_store($options); 
  • plugins/sfExtjsThemePlugin/lib/sfExtjsPropelAdminGenerator.php

    r8135 r8165  
    350350         
    351351        $relatedPeerName = $relatedTablePhpName.'Peer'; 
     352         
     353        // Add invisible foreign-key 
     354        // there is no check added here to see if the hidden column is already added to this columns-hierarchy,  
     355        $column = $this->getAdminColumnForField($foreignKey, $flags, $peerName); 
     356        $column->visible = false; 
     357        //add an option to show this field should be visible 
     358        $column->key = $foreignKey; 
     359        $column->index = $i++; 
     360        $groupedColumns['columns'][$group][] = $column; 
    352361 
    353362        // check if related groupedColumn hierarchy is already defined, if not define it. 
    354363        $related = array('pk' => null, 'columns' => array(), 'related' => array()); 
    355         if (isset($groupedColumns['related'][$foreignKey])) //$relatedTableName 
    356         { 
    357           $related = $groupedColumns['related'][$foreignKey]; //$relatedTableName 
     364        if (isset($groupedColumns['related'][$foreignKey])) 
     365        { 
     366          $related = $groupedColumns['related'][$foreignKey]; 
    358367        } 
    359368         
     
    831840      $relatedFKColumn = $this->getColumnForFieldName($fields[0]); 
    832841       
     842      $tableName = $column->getTableName(); 
     843       
    833844      //valuefield is the primary-key for the related table 
    834       $valueFieldCombo = $relatedTableFKs.$tableDelimiter.$relatedTablePK->getName(); //sfInflector::underscore($relatedTableName).$tableDelimiter.sfInflector::underscore($relatedTable['pk']->getPhpName()); 
    835       $displayFieldCombo = str_replace('/', $tableDelimiter, $column->key); //$column->getTableName().$tableDelimiter.$column->getName(); 
     845      $valueFieldCombo = $tableName.$tableDelimiter.$relatedTablePK->getName(); //sfInflector::underscore($relatedTableName).$tableDelimiter.sfInflector::underscore($relatedTable['pk']->getPhpName()); 
     846      $displayFieldCombo = $tableName.$tableDelimiter.$column->getName(); //str_replace('/', $tableDelimiter, $column->key); //$column->getTableName().$tableDelimiter.$column->getName(); 
    836847       
    837848      $store =  sfInflector::underscore($relatedTableFKs).'_ds';