Changeset 6100
- Timestamp:
- 11/19/07 00:12:30 (1 year ago)
- Files:
-
- plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_json_list_td.php (modified) (3 diffs)
- plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_list_ajax_layout.php (modified) (4 diffs)
- plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_list_ajax_renderer.php (modified) (2 diffs)
- plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/listSuccess.php (modified) (1 diff)
- plugins/sfExtjsThemePlugin/lib/helper/ExtjsHelper.php (modified) (1 diff)
- plugins/sfExtjsThemePlugin/lib/sfExtjsPropelAdminGenerator.php (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_json_list_td.php
r6067 r6100 12 12 13 13 $hs = $this->getParameterValue('list.hide', array()); 14 //TODO This probably does not work with partials and links (=columnname) 14 15 $display = $this->getParameterValue('list.display', array()); 16 $groupingDisplay = $this->getParameterValue('list.grouping.display', array()); 15 17 $columns = $this->getColumns('list.display'); 16 18 … … 21 23 $columns[] = $this->getAdminColumnForField($pk); 22 24 23 24 //add grouping.field (which does not necesarrily has to be defined in the display array 25 //add grouping.field (which does not necesarrily has to be defined in the display array) 25 26 $groupColumnName = $this->getParameterValue('list.grouping.field', null); 26 27 if ($groupColumnName) 27 28 { 28 if (!in_array($groupColumnName, $display)) { 29 if (!in_array($groupColumnName, $display)) 30 { 29 31 $columns[] = $this->getAdminColumnForField($groupColumnName); 30 32 } 31 33 } 32 34 35 //add grouping.display.fields (which do not necesarrily has to be defined in the display array) 36 if (count($groupingDisplay) > 0) 37 { 38 $groupColumns = $this->getColumns('list.grouping.display'); 39 40 foreach ($groupColumns as $groupColumn) 41 { 42 $groupColumnName = $groupColumn->getName(); 43 44 if (!in_array($groupColumnName, $display)) 45 { 46 $columns[] = $this->getAdminColumnForField($groupColumnName); 47 } 48 } 49 } 33 50 34 51 //add PrimaryKeys of foreign-classes … … 43 60 44 61 // add column if not already in list 45 if (!in_array($columnName, $display)) { 62 if (!in_array($columnName, $display)) 63 { 46 64 $columns[] = $this->getAdminColumnForField($columnName); 47 65 } plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_list_ajax_layout.php
r6087 r6100 125 125 126 126 $hs = $this->getParameterValue('list.hide', array()); 127 // $columns = $this->getColumns('list.display');128 129 127 130 128 // iterate through all related classes … … 218 216 219 217 220 [?php include_partial(' <?php echo $this->getModuleName() ?>/list_ajax_renderer') ?]218 [?php include_partial('list_ajax_renderer') ?] 221 219 222 220 // ------------------------ … … 228 226 $columns = $this->getColumns('list.display'); 229 227 230 //iterate through all columns of current class228 //iterate through all columns 231 229 foreach ($columns as $column) : 232 230 // can we skip it? … … 365 363 ?> 366 364 <?php endforeach; ?> 367 [?php include_partial(' <?php echo $this->getModuleName() ?>/list_ajax_plugin') ?]365 [?php include_partial('list_ajax_plugin') ?] 368 366 369 367 cm = <?php echo _extjs_write_class('grid.ColumnModel', array($cmOptions), true, $expander) ?>; plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/_list_ajax_renderer.php
r6075 r6100 17 17 $prefix = strtolower($this->getClassName()); 18 18 19 //iterate through all columns of all class 20 $completeColumns = $this->getColumnsGroup($pk); 21 19 22 ?> 23 function renderHeader(value, p, record){ 24 <?php 25 $display = $this->getParameterValue('list.grouping.display', null); 26 if ($display!=null) 27 { 28 29 // the header text which is build from the list.grouping.display-array with this code 30 $headerText = ""; 31 32 $columns = $this->getColumns('list.grouping.display'); 33 34 //iterate through all columns for grouping display 35 foreach ($columns as $column) 36 { 37 if (false !== strpos($column->getName(), '/')) 38 { 39 list($relatedClassName, $relatedColumn) = explode('/', $column->getName(),2); 40 $key_name = $completeColumns['related'][$relatedClassName]['pk']->getName(); 41 42 // TODO: add iteration to define related-column-names 43 $relatedColumn = str_replace('/',$tableDelimiter,$relatedColumn); 44 } 45 46 //header values 47 $h_moduleName = $relatedClassName; 48 $h_tableName = $relatedClassName; 49 $h_pkn = $key_name; 50 51 $h_valuePrefix = $this->getParameterValue('list.fields.'.$column->getName().'.params.header_valuePrefix', 52 $this->getParameterValue('fields.'.$column->getName().'.params.header_valuePrefix', ' ')); 53 $h_valueSuffix = $this->getParameterValue('list.fields.'.$column->getName().'.params.header_valueSuffix', 54 $this->getParameterValue('fields.'.$column->getName().'.params.header_valueSuffix', ' ')); 55 56 // TODO: Prevent collapsing when clicking link 57 if ($column->isLink()) 58 { 59 //TODO remove hardcoded tag for underline, add option to set stylesheet-class, don't forget to remove the closing tag as well... 60 $headerText .= "<u><a href=\'".$controller->genUrl($h_moduleName."/edit?".$h_pkn."=")."/'+record.data['".$h_tableName.$tableDelimiter.$h_pkn."']+'\'>"; 61 } 62 $headerText .= $h_valuePrefix."'+record.data['".$h_tableName.$tableDelimiter.$relatedColumn."']+'".$h_valueSuffix; 63 if ($column->isLink()) 64 { 65 $headerText .= "</a></u>"; 66 } 67 } 68 } 69 else // no grouping.display defined use grouping.field 70 { 71 $columnName = $this->getParameterValue('list.grouping.field', null); 72 73 $h_valuePrefix = ''; 74 $h_valueSuffix = ''; 75 76 if ($columnName != null) { 77 $h_valuePrefix = $this->getParameterValue('list.fields.'.$columnName.'.params.header_valuePrefix', 78 $this->getParameterValue('fields.'.$columnName.'.params.header_valuePrefix', ' ')); 79 $h_valueSuffix = $this->getParameterValue('list.fields.'.$columnName.'.params.header_valueSuffix', 80 $this->getParameterValue('fields.'.$columnName.'.params.header_valueSuffix', ' ')); 81 } 82 83 $headerText = $h_valuePrefix."'+value+'".$h_valueSuffix; 84 } 85 ?> 86 return '<?php echo $headerText ?>'; 87 } 88 20 89 21 90 // TODO: remove hardcoded html-tags, set css 22 91 // a column with a value which is a link (to edit) 23 92 function renderLink(value, p, record){ 24 return String.format('<u><b><a href= "<?php echo $controller->genUrl($this->getModuleName().'/edit?'.$pkn.'=') ?>/{1}">{0}</a></b></u>', value, record.data['<?php echo $prefix.$tableDelimiter.$pkn ?>']);93 return String.format('<u><b><a href=\'<?php echo $controller->genUrl($this->getModuleName().'/edit?'.$pkn.'=') ?>/{1}\'>{0}</a></b></u>', value, record.data['<?php echo $prefix.$tableDelimiter.$pkn ?>']); 25 94 } 26 95 … … 46 115 // a column with a weight 47 116 function renderWeight(v){ 117 v = String(v); 48 118 var ps = v.split('.'); 49 119 var whole = ps[0]; plugins/sfExtjsThemePlugin/data/generator/sfPropelAdmin/extjs/template/templates/listSuccess.php
r5945 r6100 37 37 [?php echo __('no result') ?] 38 38 [?php else: ?] 39 [?php include_partial(' <?php echo $this->getModuleName() ?>/list', array('pager' => $pager)) ?]39 [?php include_partial('list', array('pager' => $pager)) ?] 40 40 [?php endif; ?] 41 41 [?php include_partial('list_actions') ?] plugins/sfExtjsThemePlugin/lib/helper/ExtjsHelper.php
r5945 r6100 87 87 } 88 88 89 if ( $type === 'float')89 if (($type === 'float') || ($type === 'double')) 90 90 { 91 91 return 'float'; plugins/sfExtjsThemePlugin/lib/sfExtjsPropelAdminGenerator.php
r6087 r6100 190 190 return $for == 'edit' ? "$columnGetter ? 'true' : 'false'" : "$columnGetter ? 1 : 0"; 191 191 } 192 192 193 193 return parent::getColumnListTag($column, $params); 194 194 } … … 231 231 232 232 /** 233 * Return all columns and all related columns with her primary key233 * Return all columns and all related columns with their primary key 234 234 * 235 235 * @param string $pk (optional) primary key admin column 236 236 */ 237 // TODO maybe we again can make this somewhat nicer, contains much copy-paste to support grouping and group-display-array in same way as to process regular (display)columns 237 238 public function getColumnsGroup($pk = null) 238 239 { … … 251 252 $column = $this->getAdminColumnForField($groupColumnName); 252 253 254 // check if foreign 253 255 if (false !== strpos($groupColumnName, '/')) 254 256 { 255 257 256 257 list($peerName, $relatedColumn) = explode('::', $column ->getPhpName());258 $columnPhpName = $column->getPhpName(); 259 list($peerName, $relatedColumn) = explode('::', $columnPhpName); 258 260 $relatedClassName = sfInflector::underscore($peerName); 259 261 … … 275 277 $columns['related'][$relatedClassName]['columns'][$relatedColumnUnderscore] = $this->getAdminColumnForField($relatedColumn); 276 278 277 278 279 280 } 281 else 282 { 283 $columns['column'][] = $column; 284 } 285 } 286 } 287 288 //iterate through all columns of all class 279 } 280 else // local column 281 { 282 $columnUnderscore = sfInflector::underscore($column->getPhpName()); 283 $columns['column'][$columnUnderscore] = $column; 284 } 285 } 286 } 287 288 //iterate through all columns of grouping.display fields 289 foreach ($this->getColumns('list.grouping.display') as $column) 290 { 291 if ($column->isPrimaryKey()) continue; 292 293 // check if foreign 294 if (false !== strpos($column->getName(), '/')) 295 { 296 $columnPhpName = $column->getPhpName(); 297 list($peerName, $relatedColumn) = explode('::', $columnPhpName,2); 298 $relatedClassName = sfInflector::underscore($peerName); 299 300 // TODO, now hardcoded adding a third level (foreigntable->foreigntable->field), this should be solved with recursion 301 if (false !== strpos($relatedColumn, '::')) 302 { 303 list($peerName2, $relatedColumn) = explode('::', $relatedColumn,2); 304 $relatedClassName2 = sfInflector::underscore($peerName2); 305 306 if (!isset($columns['related'][$relatedClassName]['pk'])) 307 { 308 $tableMap = call_user_func(array($peerName.'Peer', 'getTableMap')); 309 310 foreach ($tableMap->getColumns() as $col) 311 { 312 if (!isset($columns['related'][$relatedClassName]['pk']) && $col->isPrimaryKey()) 313 { 314 $columns['related'][$relatedClassName]['pk'] = $this->getAdminColumnForField($col->getPhpName()); 315 break; 316 } 317 } 318 } 319 320 if (!isset($columns['related'][$relatedClassName]['related'][$relatedClassName2]['pk'])) 321 { 322 $tableMap = call_user_func(array($peerName2.'Peer', 'getTableMap')); 323 324 foreach ($tableMap->getColumns() as $col) 325 { 326 if (!isset($columns['related'][$relatedClassName]['related'][$relatedClassName2]['pk']) && $col->isPrimaryKey()) 327 { 328 $columns['related'][$relatedClassName]['related'][$relatedClassName2]['pk'] = $this->getAdminColumnForField($col->getPhpName()); 329 break; 330 } 331 } 332 } 333 334 $relatedColumnUnderscore = sfInflector::underscore($relatedColumn); 335 $columns['related'][$relatedClassName]['related'][$relatedClassName2]['columns'][$relatedColumnUnderscore] = $this->getAdminColumnForField($relatedColumn); 336 } 337 else 338 { 339 if (!isset($columns['related'][$relatedClassName]['pk'])) 340 { 341 $tableMap = call_user_func(array($peerName.'Peer', 'getTableMap')); 342 343 foreach ($tableMap->getColumns() as $col) 344 { 345 if (!isset($columns['related'][$relatedClassName]['pk']) && $col->isPrimaryKey()) 346 { 347 $columns['related'][$relatedClassName]['pk'] = $this->getAdminColumnForField($col->getPhpName()); 348 break; 349 } 350 } 351 } 352 353 $relatedColumnUnderscore = sfInflector::underscore($relatedColumn); 354 $columns['related'][$relatedClassName]['columns'][$relatedColumnUnderscore] = $this->getAdminColumnForField($relatedColumn); 355 } 356 } 357 else // local column 358 { 359 $columnUnderscore = sfInflector::underscore($column->getPhpName()); 360 $columns['column'][$columnUnderscore] = $column; 361 } 362 } 363 364 //iterate through all columns of display-fields 289 365 foreach ($this->getColumns('list.display') as $column) 290 366 { 291 367 if ($column->isPrimaryKey()) continue; 292 368 369 // check if foreign 293 370 if (false !== strpos($column->getName(), '/')) 294 371 { … … 313 390 $columns['related'][$relatedClassName]['columns'][$relatedColumnUnderscore] = $this->getAdminColumnForField($relatedColumn); 314 391 } 315 else 392 else // local column 316 393 { 317 394 $columnUnderscore = sfInflector::underscore($column->getPhpName()); … … 347 424 if (isset($columns['related'])) 348 425 { 349 foreach ($columns['related'] as $class => $relatedClass es)426 foreach ($columns['related'] as $class => $relatedClass) 350 427 { 351 428 // Add id 352 $fieldsName[$class.'_'.$relatedClass es['pk']->getName()] = $class.$tableDelimiter.$relatedClasses['pk']->getName();353 $fieldsType[$class.'_'.$relatedClass es['pk']->getName()] = $relatedClasses['pk']->getType();429 $fieldsName[$class.'_'.$relatedClass['pk']->getName()] = $class.$tableDelimiter.$relatedClass['pk']->getName(); 430 $fieldsType[$class.'_'.$relatedClass['pk']->getName()] = $relatedClass['pk']->getType(); 354 431 355 432 // Add preload-value 356 foreach ($relatedClass es['columns'] as $relatedColumn => $col)433 foreach ($relatedClass['columns'] as $relatedColumn => $col) 357 434 { 358 435 $fieldsName[$class.'_'.$relatedColumn] = $class.$tableDelimiter.$relatedColumn; 359 436 $fieldsType[$class.'_'.$relatedColumn] = $col->getType(); 437 } 438 439 // Add the related-related foreign-keys, TODO: Hardcoded, this should also be solved with recursion 440 if (isset($relatedClass['related'])) 441 { 442 foreach ($relatedClass['related'] as $class2 => $relatedClass2) 443 { 444 // Add preload-value 445 foreach ($relatedClass2['columns'] as $relatedColumn2 => $col2) 446 { 447 $fieldsName[$class.'_'.$class2.'_'.$relatedColumn2] = $class.$tableDelimiter.$class2.$tableDelimiter.$relatedColumn2; 448 $fieldsType[$class.'_'.$class2.'_'.$relatedColumn2] = $col->getType(); 449 } 450 } 360 451 } 361 452 } … … 417 508 $options['vtype'] = $params['type']; 418 509 } 510 } else { 511 $definition['renderer'] = isset($params['renderer']) ? $params['renderer'] : 'renderHeader'; 419 512 } 420 513 … … 542 635 } 543 636 } 544 else if ($type == CreoleTypes::INTEGER || $type == CreoleTypes::TINYINT || $type == CreoleTypes::SMALLINT || $type == CreoleTypes::BIGINT) 637 else if ($type == CreoleTypes::INTEGER || $type == CreoleTypes::TINYINT || $type == CreoleTypes::SMALLINT || $type == CreoleTypes::BIGINT || 638 $type == CreoleTypes::FLOAT || $type == CreoleTypes::DOUBLE || $type == CreoleTypes::DECIMAL || $type == CreoleTypes::NUMERIC || $type == CreoleTypes::REAL) 545 639 { 546 640 $editor = _extjs_write_class('form.NumberField', array($options), true); … … 557 651 } 558 652 559 if ($type == CreoleTypes::FLOAT || $type == CreoleTypes::DOUBLE || $type == CreoleTypes::DECIMAL || $type == CreoleTypes::NUMERIC || $type == CreoleTypes::REAL) 560 { 561 $definition['renderer'] = isset($params['renderer']) ? $params['renderer'] : 'formatNumber'; 562 } 653 $definition['renderer'] = isset($params['renderer']) ? $params['renderer'] : 'formatNumber'; 563 654 564 655 return $definition;