* @link http://www.pradosoft.com/ * @copyright Copyright © 2005-2015 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id$ * @since 4.0 * @package System.Wsat */ Prado::using("System.Wsat.TWsatBaseGenerator"); class TWsatScaffoldingGenerator extends TWsatBaseGenerator { /** * Const View Types for generation */ const LIST_TYPE = 0; const ADD_TYPE = 1; const SHOW_TYPE = 2; /** * Bootstrap option */ private $_bootstrap; function __construct() { parent::__construct(); } /** * Generates CRUD Operations for a single DB table * @param type $tableName */ public function generateCRUD($tableName) { $this->generate($tableName, self::ADD_TYPE); $this->generate($tableName, self::LIST_TYPE); $this->generate($tableName, self::SHOW_TYPE); } //--------------------------------------------------------------------- // public function generate($tableName, $viewType) { switch ($viewType) { default: case self::LIST_TYPE: $unitName = "list" . ucfirst($tableName); break; case self::ADD_TYPE: $unitName = "add" . ucfirst($tableName); break; case self::SHOW_TYPE: $unitName = "show" . ucfirst($tableName); break; } $class = $this->generateClass($unitName); $outputClass = $this->_opFile . DIRECTORY_SEPARATOR . $unitName . ".php"; file_put_contents($outputClass, $class); $outputPage = $this->_opFile . DIRECTORY_SEPARATOR . $unitName . ".page"; $page = $this->generatePage($tableName, $viewType); file_put_contents($outputPage, $page); } private function generatePage($tableName, $type, $tContentId = "Content") { $pageContent = $this->getPageContent($tableName, $type); return << $pageContent EOD; } private function getPageContent($tableName, $type) { $code = ""; $tableInfo = $this->_dbMetaData->getTableInfo($tableName); switch ($type) { case self::LIST_TYPE: break; case self::ADD_TYPE: foreach ($tableInfo->getColumns() as $colField => $colMetadata) { if (!$colMetadata->IsPrimaryKey && !$colMetadata->IsForeignKey) { $code .= $this->generateControl($colMetadata); $code .= $this->generateValidators($colMetadata); $code .= "\n"; } } foreach ($tableInfo->getForeignKeys() as $colField => $colMetadata) { $colField = $this->eq($colMetadata["table"]); $code .= "\t\n"; $code .= "\n"; // TWsatBaseGenerator::pr($tableInfo); } $code .= "\t\n"; case self::SHOW_TYPE: break; } return $code; } private function generateControl($colMetadata) { $controlType = "TTextBox"; switch ($colMetadata->DbType) { } $controlId = $colMetadata->ColumnId; return "\t\n"; } private function generateValidators($colMetadata) { $controlId = $colMetadata->ColumnId; $code = ""; if (!$colMetadata->AllowNull) { $code .= "\t\n"; } return $code; } // //--------------------------------------------------------------------- // private function generateClass($classname) { $date = date('Y-m-d h:i:s'); $env_user = getenv("username"); return << }