From ee12eaf62f5e7c63e76cb850c2268545763db9ac Mon Sep 17 00:00:00 2001 From: carl <> Date: Thu, 26 Jul 2007 12:10:09 +0000 Subject: fixed namespaces in System.Data.ActiveReecord.Scaffold.InputBuilder --- .../Scaffold/InputBuilder/TIbmScaffoldInput.php | 101 ++-- .../Scaffold/InputBuilder/TMssqlScaffoldInput.php | 99 ++-- .../Scaffold/InputBuilder/TMysqlScaffoldInput.php | 159 +++--- .../Scaffold/InputBuilder/TPgsqlScaffoldInput.php | 101 ++-- .../Scaffold/InputBuilder/TScaffoldInputBase.php | 199 +++---- .../Scaffold/InputBuilder/TScaffoldInputCommon.php | 607 +++++++++++---------- .../Scaffold/InputBuilder/TSqliteScaffoldInput.php | 191 +++---- 7 files changed, 750 insertions(+), 707 deletions(-) (limited to 'framework') diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php index 2c315468..f0e2b215 100644 --- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php +++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php @@ -1,51 +1,52 @@ - - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2007 PradoSoft - * @license http://www.pradosoft.com/license/ - */ -Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon'); - -class TIbmScaffoldInput extends TScaffoldInputCommon -{ - protected function createControl($container, $column, $record) - { - switch(strtolower($column->getDbType())) - { - case 'date': - return $this->createDateControl($container, $column, $record); - case 'time': - return $this->createTimeControl($container, $column, $record); - case 'timestamp': - return $this->createDateTimeControl($container, $column, $record); - case 'smallint': case 'integer': case 'bigint': - return $this->createIntegerControl($container, $column, $record); - case 'decimal': case 'numeric': case 'real': case 'float': case 'double': - return $this->createFloatControl($container, $column, $record); - case 'char': case 'varchar': - return $this->createMultiLineControl($container, $column, $record); - default: - return $this->createDefaultControl($container,$column, $record); - } - } - - protected function getControlValue($container, $column, $record) - { - switch(strtolower($column->getDbType())) - { - case 'date': - return $container->findControl(self::DEFAULT_ID)->getDate(); - case 'time': - return $this->getTimeValue($container, $column, $record); - case 'timestamp': - return $this->getDateTimeValue($container, $column, $record); - default: - return $this->getDefaultControlValue($container,$column, $record); - } - } -} - + + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2007 PradoSoft + * @license http://www.pradosoft.com/license/ + * @package System.Data.ActiveReecord.Scaffold.InputBuilder + */ +Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon'); + +class TIbmScaffoldInput extends TScaffoldInputCommon +{ + protected function createControl($container, $column, $record) + { + switch(strtolower($column->getDbType())) + { + case 'date': + return $this->createDateControl($container, $column, $record); + case 'time': + return $this->createTimeControl($container, $column, $record); + case 'timestamp': + return $this->createDateTimeControl($container, $column, $record); + case 'smallint': case 'integer': case 'bigint': + return $this->createIntegerControl($container, $column, $record); + case 'decimal': case 'numeric': case 'real': case 'float': case 'double': + return $this->createFloatControl($container, $column, $record); + case 'char': case 'varchar': + return $this->createMultiLineControl($container, $column, $record); + default: + return $this->createDefaultControl($container,$column, $record); + } + } + + protected function getControlValue($container, $column, $record) + { + switch(strtolower($column->getDbType())) + { + case 'date': + return $container->findControl(self::DEFAULT_ID)->getDate(); + case 'time': + return $this->getTimeValue($container, $column, $record); + case 'timestamp': + return $this->getDateTimeValue($container, $column, $record); + default: + return $this->getDefaultControlValue($container,$column, $record); + } + } +} + ?> \ No newline at end of file diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php index 2f06368e..297b76f1 100644 --- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php +++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php @@ -1,47 +1,54 @@ -getDbType())) - { - case 'bit': - return $this->createBooleanControl($container, $column, $record); - case 'text': - return $this->createMultiLineControl($container, $column, $record); - case 'smallint': case 'int': case 'bigint': case 'tinyint': - return $this->createIntegerControl($container, $column, $record); - case 'decimal': case 'float': case 'money': case 'numeric': case 'real': case 'smallmoney': - return $this->createFloatControl($container, $column, $record); - case 'datetime': case 'smalldatetime': - return $this->createDateTimeControl($container, $column, $record); - default: - $control = $this->createDefaultControl($container,$column, $record); - if($column->getIsExcluded()) - $control->setEnabled(false); - return $control; - } - } - - protected function getControlValue($container, $column, $record) - { - switch(strtolower($column->getDbType())) - { - case 'boolean': - return $container->findControl(self::DEFAULT_ID)->getChecked(); - case 'datetime': case 'smalldatetime': - return $this->getDateTimeValue($container,$column, $record); - default: - $value = $this->getDefaultControlValue($container,$column, $record); - if(trim($value)==='' && $column->getAllowNull()) - return null; - else - return $value; - } - } -} - +getDbType())) + { + case 'bit': + return $this->createBooleanControl($container, $column, $record); + case 'text': + return $this->createMultiLineControl($container, $column, $record); + case 'smallint': case 'int': case 'bigint': case 'tinyint': + return $this->createIntegerControl($container, $column, $record); + case 'decimal': case 'float': case 'money': case 'numeric': case 'real': case 'smallmoney': + return $this->createFloatControl($container, $column, $record); + case 'datetime': case 'smalldatetime': + return $this->createDateTimeControl($container, $column, $record); + default: + $control = $this->createDefaultControl($container,$column, $record); + if($column->getIsExcluded()) + $control->setEnabled(false); + return $control; + } + } + + protected function getControlValue($container, $column, $record) + { + switch(strtolower($column->getDbType())) + { + case 'boolean': + return $container->findControl(self::DEFAULT_ID)->getChecked(); + case 'datetime': case 'smalldatetime': + return $this->getDateTimeValue($container,$column, $record); + default: + $value = $this->getDefaultControlValue($container,$column, $record); + if(trim($value)==='' && $column->getAllowNull()) + return null; + else + return $value; + } + } +} + ?> \ No newline at end of file diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php index 42f8cead..ceae6c38 100644 --- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php +++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php @@ -1,77 +1,84 @@ -getDbType()))); - switch($dbtype) - { - case 'date': - return $this->createDateControl($container, $column, $record); - case 'blob': case 'tinyblob': case 'mediumblob': case 'longblob': - case 'text': case 'tinytext': case 'mediumtext': case 'longtext': - return $this->createMultiLineControl($container, $column, $record); - case 'year': - return $this->createYearControl($container, $column, $record); - case 'int': case 'integer': case 'tinyint': case 'smallint': case 'mediumint': case 'bigint': - return $this->createIntegerControl($container, $column, $record); - case 'decimal': case 'double': case 'float': - return $this->createFloatControl($container, $column, $record); - case 'time' : - return $this->createTimeControl($container, $column, $record); - case 'datetime': case 'timestamp': - return $this->createDateTimeControl($container, $column, $record); - case 'set': - return $this->createSetControl($container, $column, $record); - case 'enum': - return $this->createEnumControl($container, $column, $record); - default: - return $this->createDefaultControl($container, $column, $record); - } - } - - protected function getControlValue($container, $column, $record) - { - $dbtype = trim(str_replace(array('unsigned', 'zerofill'),array('','',),strtolower($column->getDbType()))); - switch($dbtype) - { - case 'date': - return $container->findControl(self::DEFAULT_ID)->getDate(); - case 'year': - return $container->findControl(self::DEFAULT_ID)->getSelectedValue(); - case 'time': - return $this->getTimeValue($container, $column, $record); - case 'datetime': case 'timestamp': - return $this->getDateTimeValue($container,$column, $record); - case 'tinyint': - return $this->getIntBooleanValue($container,$column, $record); - case 'set': - return $this->getSetValue($container, $column, $record); - case 'enum': - return $this->getEnumValue($container, $column, $record); - default: - return $this->getDefaultControlValue($container,$column, $record); - } - } - - protected function createIntegerControl($container, $column, $record) - { - if($column->getColumnSize()==1) - return $this->createBooleanControl($container, $column, $record); - else - parent::createIntegerControl($container, $column, $record); - } - - protected function getIntBooleanValue($container,$column, $record) - { - if($column->getColumnSize()==1) - return (int)$container->findControl(self::DEFAULT_ID)->getChecked(); - else - return $this->getDefaultControlValue($container,$column, $record); - } -} - +getDbType()))); + switch($dbtype) + { + case 'date': + return $this->createDateControl($container, $column, $record); + case 'blob': case 'tinyblob': case 'mediumblob': case 'longblob': + case 'text': case 'tinytext': case 'mediumtext': case 'longtext': + return $this->createMultiLineControl($container, $column, $record); + case 'year': + return $this->createYearControl($container, $column, $record); + case 'int': case 'integer': case 'tinyint': case 'smallint': case 'mediumint': case 'bigint': + return $this->createIntegerControl($container, $column, $record); + case 'decimal': case 'double': case 'float': + return $this->createFloatControl($container, $column, $record); + case 'time' : + return $this->createTimeControl($container, $column, $record); + case 'datetime': case 'timestamp': + return $this->createDateTimeControl($container, $column, $record); + case 'set': + return $this->createSetControl($container, $column, $record); + case 'enum': + return $this->createEnumControl($container, $column, $record); + default: + return $this->createDefaultControl($container, $column, $record); + } + } + + protected function getControlValue($container, $column, $record) + { + $dbtype = trim(str_replace(array('unsigned', 'zerofill'),array('','',),strtolower($column->getDbType()))); + switch($dbtype) + { + case 'date': + return $container->findControl(self::DEFAULT_ID)->getDate(); + case 'year': + return $container->findControl(self::DEFAULT_ID)->getSelectedValue(); + case 'time': + return $this->getTimeValue($container, $column, $record); + case 'datetime': case 'timestamp': + return $this->getDateTimeValue($container,$column, $record); + case 'tinyint': + return $this->getIntBooleanValue($container,$column, $record); + case 'set': + return $this->getSetValue($container, $column, $record); + case 'enum': + return $this->getEnumValue($container, $column, $record); + default: + return $this->getDefaultControlValue($container,$column, $record); + } + } + + protected function createIntegerControl($container, $column, $record) + { + if($column->getColumnSize()==1) + return $this->createBooleanControl($container, $column, $record); + else + parent::createIntegerControl($container, $column, $record); + } + + protected function getIntBooleanValue($container,$column, $record) + { + if($column->getColumnSize()==1) + return (int)$container->findControl(self::DEFAULT_ID)->getChecked(); + else + return $this->getDefaultControlValue($container,$column, $record); + } +} + ?> \ No newline at end of file diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php index a024c73b..04a5c334 100644 --- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php +++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php @@ -1,48 +1,55 @@ -getDbType())) - { - case 'boolean': - return $this->createBooleanControl($container, $column, $record); - case 'date': - return $this->createDateControl($container, $column, $record); - case 'text': - return $this->createMultiLineControl($container, $column, $record); - case 'smallint': case 'integer': case 'bigint': - return $this->createIntegerControl($container, $column, $record); - case 'decimal': case 'numeric': case 'real': case 'double precision': - return $this->createFloatControl($container, $column, $record); - case 'time without time zone' : - return $this->createTimeControl($container, $column, $record); - case 'timestamp without time zone': - return $this->createDateTimeControl($container, $column, $record); - default: - return $this->createDefaultControl($container,$column, $record); - } - } - - protected function getControlValue($container, $column, $record) - { - switch(strtolower($column->getDbType())) - { - case 'boolean': - return $container->findControl(self::DEFAULT_ID)->getChecked(); - case 'date': - return $container->findControl(self::DEFAULT_ID)->getDate(); - case 'time without time zone': - return $this->getTimeValue($container, $column, $record); - case 'timestamp without time zone': - return $this->getDateTimeValue($container,$column, $record); - default: - return $this->getDefaultControlValue($container,$column, $record); - } - } -} - +getDbType())) + { + case 'boolean': + return $this->createBooleanControl($container, $column, $record); + case 'date': + return $this->createDateControl($container, $column, $record); + case 'text': + return $this->createMultiLineControl($container, $column, $record); + case 'smallint': case 'integer': case 'bigint': + return $this->createIntegerControl($container, $column, $record); + case 'decimal': case 'numeric': case 'real': case 'double precision': + return $this->createFloatControl($container, $column, $record); + case 'time without time zone' : + return $this->createTimeControl($container, $column, $record); + case 'timestamp without time zone': + return $this->createDateTimeControl($container, $column, $record); + default: + return $this->createDefaultControl($container,$column, $record); + } + } + + protected function getControlValue($container, $column, $record) + { + switch(strtolower($column->getDbType())) + { + case 'boolean': + return $container->findControl(self::DEFAULT_ID)->getChecked(); + case 'date': + return $container->findControl(self::DEFAULT_ID)->getDate(); + case 'time without time zone': + return $this->getTimeValue($container, $column, $record); + case 'timestamp without time zone': + return $this->getDateTimeValue($container,$column, $record); + default: + return $this->getDefaultControlValue($container,$column, $record); + } + } +} + ?> \ No newline at end of file diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php index f9ca9180..1df0910b 100644 --- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php +++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php @@ -1,97 +1,104 @@ -_parent; - } - - public static function createInputBuilder($record) - { - $record->getDbConnection()->setActive(true); //must be connected before retrieving driver name! - $driver = $record->getDbConnection()->getDriverName(); - switch(strtolower($driver)) - { - case 'sqlite': //sqlite 3 - case 'sqlite2': //sqlite 2 - require_once(dirname(__FILE__).'/TSqliteScaffoldInput.php'); - return new TSqliteScaffoldInput($conn); - case 'mysqli': - case 'mysql': - require_once(dirname(__FILE__).'/TMysqlScaffoldInput.php'); - return new TMysqlScaffoldInput($conn); - case 'pgsql': - require_once(dirname(__FILE__).'/TPgsqlScaffoldInput.php'); - return new TPgsqlScaffoldInput($conn); - case 'mssql': - require_once(dirname(__FILE__).'/TMssqlScaffoldInput.php'); - return new TMssqlScaffoldInput($conn); - case 'ibm': - require_once(dirname(__FILE__).'/TIbmScaffoldInput.php'); - return new TIbmScaffoldInput($conn); - default: - throw new TConfigurationException( - 'scaffold_invalid_database_driver',$driver); - } - } - - public function createScaffoldInput($parent, $item, $column, $record) - { - $this->_parent=$parent; - $item->setCustomData($column->getColumnId()); - $this->createControl($item->_input, $column, $record); - if($item->_input->findControl(self::DEFAULT_ID)) - $this->createControlLabel($item->_label, $column, $record); - } - - protected function createControlLabel($label, $column, $record) - { - $fieldname = ucwords(str_replace('_', ' ', $column->getColumnId())).':'; - $label->setText($fieldname); - $label->setForControl(self::DEFAULT_ID); - } - - public function loadScaffoldInput($parent, $item, $column, $record) - { - $this->_parent=$parent; - if($this->getIsEnabled($column, $record)) - { - $prop = $column->getColumnId(); - $record->{$prop} = $this->getControlValue($item->_input, $column, $record); - } - } - - protected function getIsEnabled($column, $record) - { - return !($this->getParent()->getRecordPk() !== null - && $column->getIsPrimaryKey() || $column->hasSequence()); - } - - protected function getRecordPropertyValue($column, $record) - { - $value = $record->{$column->getColumnId()}; - if($column->getDefaultValue()!==TDbTableColumn::UNDEFINED_VALUE && $value===null) - return $column->getDefaultValue(); - else - return $value; - } - - protected function setRecordPropertyValue($item, $record, $input) - { - $record->{$item->getCustomData()} = $input->getText(); - } - - protected function createControl($container, $column, $record) - { - } - - protected function getControlValue($container, $column, $record) - { - } -} - +_parent; + } + + public static function createInputBuilder($record) + { + $record->getDbConnection()->setActive(true); //must be connected before retrieving driver name! + $driver = $record->getDbConnection()->getDriverName(); + switch(strtolower($driver)) + { + case 'sqlite': //sqlite 3 + case 'sqlite2': //sqlite 2 + require_once(dirname(__FILE__).'/TSqliteScaffoldInput.php'); + return new TSqliteScaffoldInput($conn); + case 'mysqli': + case 'mysql': + require_once(dirname(__FILE__).'/TMysqlScaffoldInput.php'); + return new TMysqlScaffoldInput($conn); + case 'pgsql': + require_once(dirname(__FILE__).'/TPgsqlScaffoldInput.php'); + return new TPgsqlScaffoldInput($conn); + case 'mssql': + require_once(dirname(__FILE__).'/TMssqlScaffoldInput.php'); + return new TMssqlScaffoldInput($conn); + case 'ibm': + require_once(dirname(__FILE__).'/TIbmScaffoldInput.php'); + return new TIbmScaffoldInput($conn); + default: + throw new TConfigurationException( + 'scaffold_invalid_database_driver',$driver); + } + } + + public function createScaffoldInput($parent, $item, $column, $record) + { + $this->_parent=$parent; + $item->setCustomData($column->getColumnId()); + $this->createControl($item->_input, $column, $record); + if($item->_input->findControl(self::DEFAULT_ID)) + $this->createControlLabel($item->_label, $column, $record); + } + + protected function createControlLabel($label, $column, $record) + { + $fieldname = ucwords(str_replace('_', ' ', $column->getColumnId())).':'; + $label->setText($fieldname); + $label->setForControl(self::DEFAULT_ID); + } + + public function loadScaffoldInput($parent, $item, $column, $record) + { + $this->_parent=$parent; + if($this->getIsEnabled($column, $record)) + { + $prop = $column->getColumnId(); + $record->{$prop} = $this->getControlValue($item->_input, $column, $record); + } + } + + protected function getIsEnabled($column, $record) + { + return !($this->getParent()->getRecordPk() !== null + && $column->getIsPrimaryKey() || $column->hasSequence()); + } + + protected function getRecordPropertyValue($column, $record) + { + $value = $record->{$column->getColumnId()}; + if($column->getDefaultValue()!==TDbTableColumn::UNDEFINED_VALUE && $value===null) + return $column->getDefaultValue(); + else + return $value; + } + + protected function setRecordPropertyValue($item, $record, $input) + { + $record->{$item->getCustomData()} = $input->getText(); + } + + protected function createControl($container, $column, $record) + { + } + + protected function getControlValue($container, $column, $record) + { + } +} + ?> \ No newline at end of file diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php index 84c381f0..e36ca954 100644 --- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php +++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php @@ -1,301 +1,308 @@ -setID(self::DEFAULT_ID); - $control->setEnabled($this->getIsEnabled($column, $record)); - $container->Controls[] = $control; - } - - protected function setNotNullProperty($container, $control, $column, $record) - { - $this->setDefaultProperty($container, $control, $column, $record); - if(!$column->getAllowNull() && !$column->hasSequence()) - $this->createRequiredValidator($container, $column, $record); - } - - protected function createBooleanControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $control = new TCheckBox(); - $control->setChecked(TPropertyValue::ensureBoolean($value)); - $control->setCssClass('boolean-checkbox'); - $this->setDefaultProperty($container, $control, $column, $record); - return $control; - } - - protected function createDefaultControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $control = new TTextBox(); - $control->setText($value); - $control->setCssClass('default-textbox scaffold_input'); - if(($len=$column->getColumnSize())!==null) - $control->setMaxLength($len); - $this->setNotNullProperty($container, $control, $column, $record); - return $control; - } - - protected function getDefaultControlValue($container,$column, $record) - { - $control = $container->findControl(self::DEFAULT_ID); - if($control instanceof TCheckBox) - return $control->getChecked(); - else if($control instanceof TControl) - return $control->getText(); - } - - protected function createMultiLineControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $control = new TTextBox(); - $control->setText($value); - $control->setTextMode(TTextBoxMode::MultiLine); - $control->setCssClass('multiline-textbox scaffold_input'); - $this->setNotNullProperty($container, $control, $column, $record); - return $control; - } - - protected function createYearControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $control = new TDropDownList(); - $years = array(); - $current = intval(@date('Y')); - $from = $current-10; $to=$current+10; - for($i = $from; $i <= $to; $i++) - $years[$i] = $i; - $control->setDataSource($years); - $control->setSelectedValue(empty($value) ? $current : $value); - $control->setCssClass('year-dropdown'); - $this->setNotNullProperty($container, $control, $column, $record); - return $control; - } - - protected function createIntegerControl($container, $column, $record) - { - $control = $this->createDefaultControl($container, $column, $record); - $val = $this->createTypeValidator($container, $column, $record); - $val->setDataType(TValidationDataType::Integer); - $val->setErrorMessage('Please entery an integer.'); - return $control; - } - - protected function createFloatControl($container, $column, $record) - { - $control = $this->createDefaultControl($container, $column, $record); - $val = $this->createTypeValidator($container, $column, $record); - $val->setDataType(TValidationDataType::Float); - $val->setErrorMessage('Please entery a decimal number.'); - if(($max= $column->getMaxiumNumericConstraint())!==null) - { - $val = $this->createRangeValidator($container,$column,$record); - $val->setDataType(TValidationDataType::Float); - $val->setMaxValue($max); - $val->setStrictComparison(true); - $val->setErrorMessage('Please entery a decimal number strictly less than '.$max.'.'); - } - return $control; - } - - protected function createRequiredValidator($container, $column, $record) - { - $val = new TRequiredFieldValidator(); - $val->setErrorMessage('*'); - $val->setControlCssClass('required-input'); - $val->setCssClass('required'); - $val->setControlToValidate(self::DEFAULT_ID); - $val->setValidationGroup($this->getParent()->getValidationGroup()); - $val->setDisplay(TValidatorDisplayStyle::Dynamic); - $container->Controls[] = $val; - return $val; - } - - protected function createTypeValidator($container, $column, $record) - { - $val = new TDataTypeValidator(); - $val->setControlCssClass('required-input2'); - $val->setCssClass('required'); - $val->setControlToValidate(self::DEFAULT_ID); - $val->setValidationGroup($this->getParent()->getValidationGroup()); - $val->setDisplay(TValidatorDisplayStyle::Dynamic); - $container->Controls[] = $val; - return $val; - } - - protected function createRangeValidator($container, $column, $record) - { - $val = new TRangeValidator(); - $val->setControlCssClass('required-input3'); - $val->setCssClass('required'); - $val->setControlToValidate(self::DEFAULT_ID); - $val->setValidationGroup($this->getParent()->getValidationGroup()); - $val->setDisplay(TValidatorDisplayStyle::Dynamic); - $container->Controls[] = $val; - return $val; - } - - protected function createTimeControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $hours=array(); - for($i=0;$i<24;$i++) $hours[] = str_pad($i,2,'0',STR_PAD_LEFT); - $mins=array(); - for($i=0;$i<60;$i++) $mins[] = str_pad($i,2,'0',STR_PAD_LEFT); - $hour = intval(@date('H')); - $min = intval(@date('i')); - $sec = intval(@date('s')); - if(!empty($value)) - { - $match=array(); - if(preg_match('/(\d+):(\d+):?(\d+)?/', $value, $match)) - { - $hour = $match[1]; - $min = $match[2]; - if(isset($match[3])) - $sec=$match[3]; - } - } - - $hcontrol = new TDropDownList(); - $hcontrol->setDataSource($hours); - $hcontrol->setID(self::DEFAULT_ID); - $hcontrol->dataBind(); - $hcontrol->setSelectedValue(intval($hour)); - $container->Controls[] = $hcontrol; - $container->Controls[] = ' : '; - - $mcontrol = new TDropDownList(); - $mcontrol->setDataSource($mins); - $mcontrol->dataBind(); - $mcontrol->setID('scaffold_time_min'); - $mcontrol->setSelectedValue(intval($min)); - $container->Controls[] = $mcontrol; - $container->Controls[] = ' : '; - - $scontrol = new TDropDownList(); - $scontrol->setDataSource($mins); - $scontrol->dataBind(); - $scontrol->setID('scaffold_time_sec'); - $scontrol->setSelectedValue(intval($sec)); - $container->Controls[] = $scontrol; - - return array($hcontrol,$mcontrol,$scontrol); - } - - - protected function createDateControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $control = new TDatePicker(); - $control->setFromYear(1900); - $control->setInputMode(TDatePickerInputMode::DropDownList); - $control->setDateFormat('yyyy-MM-dd'); - if(!empty($value)) - $control->setDate(substr($value,0,10)); - $control->setCssClass('date-dropdown'); - $this->setNotNullProperty($container, $control, $column, $record); - return $control; - } - - protected function createDateTimeControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $control = $this->createDateControl($container, $column, $record); - $container->Controls[] = ' @ '; - $time = $this->createTimeControl($container, $column, $record); - if(!empty($value)) - { - $match=array(); - if(preg_match('/(\d+):(\d+):?(\d+)?/', substr($value, 11), $match)) - { - $time[0]->setSelectedValue(intval($match[1])); - $time[1]->setSelectedValue(intval($match[2])); - if(isset($match[3])) - $time[2]->setSelectedValue(intval($match[3])); - } - } - $time[0]->setID('scaffold_time_hour'); - return array($control, $time[0], $time[1], $time[2]); - } - - protected function getDateTimeValue($container, $column, $record) - { - $date = $container->findControl(self::DEFAULT_ID)->getDate(); - $hour = $container->findControl('scaffold_time_hour')->getSelectedValue(); - $mins = $container->findControl('scaffold_time_min')->getSelectedValue(); - $secs = $container->findControl('scaffold_time_sec')->getSelectedValue(); - return "{$date} {$hour}:{$mins}:{$secs}"; - } - - protected function getTimeValue($container, $column, $record) - { - $hour = $container->findControl(self::DEFAULT_ID)->getSelectedValue(); - $mins = $container->findControl('scaffold_time_min')->getSelectedValue(); - $secs = $container->findControl('scaffold_time_sec')->getSelectedValue(); - return "{$hour}:{$mins}:{$secs}"; - } - - protected function createSetControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $selectedValues = preg_split('/\s*,\s*/', $value); - $control = new TCheckBoxList(); - $values = $column->getDbTypeValues(); - $control->setDataSource($values); - $control->dataBind(); - $control->setSelectedIndices($this->getMatchingIndices($values,$selectedValues)); - $control->setID(self::DEFAULT_ID); - $control->setCssClass('set-checkboxes'); - $this->setNotNullProperty($container, $control, $column, $record); - return $control; - } - - protected function getMatchingIndices($checks, $values) - { - $index=array(); - for($i=0, $k=count($checks); $i<$k; $i++) - { - if(in_array($checks[$i], $values)) - $index[] = $i; - } - return $index; - } - - protected function createEnumControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $selectedValues = preg_split('/\s*,\s*/', $value); - $control = new TRadioButtonList(); - $values = $column->getDbTypeValues(); - $control->setDataSource($values); - $control->dataBind(); - $index = $this->getMatchingIndices($values,$selectedValues); - if(count($index) > 0) - $control->setSelectedIndex($index[0]); - $control->setID(self::DEFAULT_ID); - $control->setCssClass('enum-radio-buttons'); - $this->setNotNullProperty($container, $control, $column, $record); - return $control; - } - - protected function getSetValue($container, $column, $record) - { - $value=array(); - foreach($container->findControl(self::DEFAULT_ID)->getItems() as $item) - { - if($item->getSelected()) - $value[] = $item->getText(); - } - return implode(',', $value); - } - - protected function getEnumValue($container, $column, $record) - { - return $container->findControl(self::DEFAULT_ID)->getSelectedItem()->getText(); - } -} - +setID(self::DEFAULT_ID); + $control->setEnabled($this->getIsEnabled($column, $record)); + $container->Controls[] = $control; + } + + protected function setNotNullProperty($container, $control, $column, $record) + { + $this->setDefaultProperty($container, $control, $column, $record); + if(!$column->getAllowNull() && !$column->hasSequence()) + $this->createRequiredValidator($container, $column, $record); + } + + protected function createBooleanControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $control = new TCheckBox(); + $control->setChecked(TPropertyValue::ensureBoolean($value)); + $control->setCssClass('boolean-checkbox'); + $this->setDefaultProperty($container, $control, $column, $record); + return $control; + } + + protected function createDefaultControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $control = new TTextBox(); + $control->setText($value); + $control->setCssClass('default-textbox scaffold_input'); + if(($len=$column->getColumnSize())!==null) + $control->setMaxLength($len); + $this->setNotNullProperty($container, $control, $column, $record); + return $control; + } + + protected function getDefaultControlValue($container,$column, $record) + { + $control = $container->findControl(self::DEFAULT_ID); + if($control instanceof TCheckBox) + return $control->getChecked(); + else if($control instanceof TControl) + return $control->getText(); + } + + protected function createMultiLineControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $control = new TTextBox(); + $control->setText($value); + $control->setTextMode(TTextBoxMode::MultiLine); + $control->setCssClass('multiline-textbox scaffold_input'); + $this->setNotNullProperty($container, $control, $column, $record); + return $control; + } + + protected function createYearControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $control = new TDropDownList(); + $years = array(); + $current = intval(@date('Y')); + $from = $current-10; $to=$current+10; + for($i = $from; $i <= $to; $i++) + $years[$i] = $i; + $control->setDataSource($years); + $control->setSelectedValue(empty($value) ? $current : $value); + $control->setCssClass('year-dropdown'); + $this->setNotNullProperty($container, $control, $column, $record); + return $control; + } + + protected function createIntegerControl($container, $column, $record) + { + $control = $this->createDefaultControl($container, $column, $record); + $val = $this->createTypeValidator($container, $column, $record); + $val->setDataType(TValidationDataType::Integer); + $val->setErrorMessage('Please entery an integer.'); + return $control; + } + + protected function createFloatControl($container, $column, $record) + { + $control = $this->createDefaultControl($container, $column, $record); + $val = $this->createTypeValidator($container, $column, $record); + $val->setDataType(TValidationDataType::Float); + $val->setErrorMessage('Please entery a decimal number.'); + if(($max= $column->getMaxiumNumericConstraint())!==null) + { + $val = $this->createRangeValidator($container,$column,$record); + $val->setDataType(TValidationDataType::Float); + $val->setMaxValue($max); + $val->setStrictComparison(true); + $val->setErrorMessage('Please entery a decimal number strictly less than '.$max.'.'); + } + return $control; + } + + protected function createRequiredValidator($container, $column, $record) + { + $val = new TRequiredFieldValidator(); + $val->setErrorMessage('*'); + $val->setControlCssClass('required-input'); + $val->setCssClass('required'); + $val->setControlToValidate(self::DEFAULT_ID); + $val->setValidationGroup($this->getParent()->getValidationGroup()); + $val->setDisplay(TValidatorDisplayStyle::Dynamic); + $container->Controls[] = $val; + return $val; + } + + protected function createTypeValidator($container, $column, $record) + { + $val = new TDataTypeValidator(); + $val->setControlCssClass('required-input2'); + $val->setCssClass('required'); + $val->setControlToValidate(self::DEFAULT_ID); + $val->setValidationGroup($this->getParent()->getValidationGroup()); + $val->setDisplay(TValidatorDisplayStyle::Dynamic); + $container->Controls[] = $val; + return $val; + } + + protected function createRangeValidator($container, $column, $record) + { + $val = new TRangeValidator(); + $val->setControlCssClass('required-input3'); + $val->setCssClass('required'); + $val->setControlToValidate(self::DEFAULT_ID); + $val->setValidationGroup($this->getParent()->getValidationGroup()); + $val->setDisplay(TValidatorDisplayStyle::Dynamic); + $container->Controls[] = $val; + return $val; + } + + protected function createTimeControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $hours=array(); + for($i=0;$i<24;$i++) $hours[] = str_pad($i,2,'0',STR_PAD_LEFT); + $mins=array(); + for($i=0;$i<60;$i++) $mins[] = str_pad($i,2,'0',STR_PAD_LEFT); + $hour = intval(@date('H')); + $min = intval(@date('i')); + $sec = intval(@date('s')); + if(!empty($value)) + { + $match=array(); + if(preg_match('/(\d+):(\d+):?(\d+)?/', $value, $match)) + { + $hour = $match[1]; + $min = $match[2]; + if(isset($match[3])) + $sec=$match[3]; + } + } + + $hcontrol = new TDropDownList(); + $hcontrol->setDataSource($hours); + $hcontrol->setID(self::DEFAULT_ID); + $hcontrol->dataBind(); + $hcontrol->setSelectedValue(intval($hour)); + $container->Controls[] = $hcontrol; + $container->Controls[] = ' : '; + + $mcontrol = new TDropDownList(); + $mcontrol->setDataSource($mins); + $mcontrol->dataBind(); + $mcontrol->setID('scaffold_time_min'); + $mcontrol->setSelectedValue(intval($min)); + $container->Controls[] = $mcontrol; + $container->Controls[] = ' : '; + + $scontrol = new TDropDownList(); + $scontrol->setDataSource($mins); + $scontrol->dataBind(); + $scontrol->setID('scaffold_time_sec'); + $scontrol->setSelectedValue(intval($sec)); + $container->Controls[] = $scontrol; + + return array($hcontrol,$mcontrol,$scontrol); + } + + + protected function createDateControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $control = new TDatePicker(); + $control->setFromYear(1900); + $control->setInputMode(TDatePickerInputMode::DropDownList); + $control->setDateFormat('yyyy-MM-dd'); + if(!empty($value)) + $control->setDate(substr($value,0,10)); + $control->setCssClass('date-dropdown'); + $this->setNotNullProperty($container, $control, $column, $record); + return $control; + } + + protected function createDateTimeControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $control = $this->createDateControl($container, $column, $record); + $container->Controls[] = ' @ '; + $time = $this->createTimeControl($container, $column, $record); + if(!empty($value)) + { + $match=array(); + if(preg_match('/(\d+):(\d+):?(\d+)?/', substr($value, 11), $match)) + { + $time[0]->setSelectedValue(intval($match[1])); + $time[1]->setSelectedValue(intval($match[2])); + if(isset($match[3])) + $time[2]->setSelectedValue(intval($match[3])); + } + } + $time[0]->setID('scaffold_time_hour'); + return array($control, $time[0], $time[1], $time[2]); + } + + protected function getDateTimeValue($container, $column, $record) + { + $date = $container->findControl(self::DEFAULT_ID)->getDate(); + $hour = $container->findControl('scaffold_time_hour')->getSelectedValue(); + $mins = $container->findControl('scaffold_time_min')->getSelectedValue(); + $secs = $container->findControl('scaffold_time_sec')->getSelectedValue(); + return "{$date} {$hour}:{$mins}:{$secs}"; + } + + protected function getTimeValue($container, $column, $record) + { + $hour = $container->findControl(self::DEFAULT_ID)->getSelectedValue(); + $mins = $container->findControl('scaffold_time_min')->getSelectedValue(); + $secs = $container->findControl('scaffold_time_sec')->getSelectedValue(); + return "{$hour}:{$mins}:{$secs}"; + } + + protected function createSetControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $selectedValues = preg_split('/\s*,\s*/', $value); + $control = new TCheckBoxList(); + $values = $column->getDbTypeValues(); + $control->setDataSource($values); + $control->dataBind(); + $control->setSelectedIndices($this->getMatchingIndices($values,$selectedValues)); + $control->setID(self::DEFAULT_ID); + $control->setCssClass('set-checkboxes'); + $this->setNotNullProperty($container, $control, $column, $record); + return $control; + } + + protected function getMatchingIndices($checks, $values) + { + $index=array(); + for($i=0, $k=count($checks); $i<$k; $i++) + { + if(in_array($checks[$i], $values)) + $index[] = $i; + } + return $index; + } + + protected function createEnumControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $selectedValues = preg_split('/\s*,\s*/', $value); + $control = new TRadioButtonList(); + $values = $column->getDbTypeValues(); + $control->setDataSource($values); + $control->dataBind(); + $index = $this->getMatchingIndices($values,$selectedValues); + if(count($index) > 0) + $control->setSelectedIndex($index[0]); + $control->setID(self::DEFAULT_ID); + $control->setCssClass('enum-radio-buttons'); + $this->setNotNullProperty($container, $control, $column, $record); + return $control; + } + + protected function getSetValue($container, $column, $record) + { + $value=array(); + foreach($container->findControl(self::DEFAULT_ID)->getItems() as $item) + { + if($item->getSelected()) + $value[] = $item->getText(); + } + return implode(',', $value); + } + + protected function getEnumValue($container, $column, $record) + { + return $container->findControl(self::DEFAULT_ID)->getSelectedItem()->getText(); + } +} + ?> \ No newline at end of file diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php index a61da1f3..6a26305d 100644 --- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php +++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php @@ -1,93 +1,100 @@ -getDbType())) - { - case 'boolean': - return $this->createBooleanControl($container, $column, $record); - case 'date': - return $this->createDateControl($container, $column, $record); - case 'blob': case 'tinyblob': case 'mediumblob': case 'longblob': - case 'text': case 'tinytext': case 'mediumtext': case 'longtext': - return $this->createMultiLineControl($container, $column, $record); - case 'year': - return $this->createYearControl($container, $column, $record); - case 'int': case 'integer': case 'tinyint': case 'smallint': case 'mediumint': case 'bigint': - return $this->createIntegerControl($container, $column, $record); - case 'decimal': case 'double': case 'float': - return $this->createFloatControl($container, $column, $record); - case 'time' : - return $this->createTimeControl($container, $column, $record); - case 'datetime': case 'timestamp': - return $this->createDateTimeControl($container, $column, $record); - default: - return $this->createDefaultControl($container,$column, $record); - } - } - - protected function getControlValue($container, $column, $record) - { - switch(strtolower($column->getDbType())) - { - case 'boolean': - return $container->findControl(self::DEFAULT_ID)->getChecked(); - case 'date': - return $container->findControl(self::DEFAULT_ID)->getDate(); - case 'year': - return $container->findControl(self::DEFAULT_ID)->getSelectedValue(); - case 'time': - return $this->getTimeValue($container, $column, $record); - case 'datetime': case 'timestamp': - return $this->getDateTimeValue($container,$column, $record); - default: - return $this->getDefaultControlValue($container,$column, $record); - } - } - - protected function createDateControl($container, $column, $record) - { - $control = parent::createDateControl($container, $column, $record); - $value = $this->getRecordPropertyValue($column, $record); - if(!empty($value) && preg_match('/timestamp/i', $column->getDbType())) - $control->setTimestamp(intval($value)); - return $control; - } - - protected function createDateTimeControl($container, $column, $record) - { - $value = $this->getRecordPropertyValue($column, $record); - $time = parent::createDateTimeControl($container, $column, $record); - if(!empty($value) && preg_match('/timestamp/i', $column->getDbType())) - { - $s = Prado::createComponent('System.Util.TDateTimeStamp'); - $date = $s->getDate(intval($value)); - $time[1]->setSelectedValue($date['hours']); - $time[2]->setSelectedValue($date['minutes']); - $time[3]->setSelectedValue($date['seconds']); - } - return $time; - } - - protected function getDateTimeValue($container, $column, $record) - { - if(preg_match('/timestamp/i', $column->getDbType())) - { - $time = $container->findControl(self::DEFAULT_ID)->getTimestamp(); - $s = Prado::createComponent('System.Util.TDateTimeStamp'); - $date = $s->getDate($time); - $hour = $container->findControl('scaffold_time_hour')->getSelectedValue(); - $mins = $container->findControl('scaffold_time_min')->getSelectedValue(); - $secs = $container->findControl('scaffold_time_sec')->getSelectedValue(); - return $s->getTimeStamp($hour,$mins,$secs,$date['mon'],$date['mday'],$date['year']); - } - else - return parent::getDateTimeValue($container, $column, $record); - } -} - +getDbType())) + { + case 'boolean': + return $this->createBooleanControl($container, $column, $record); + case 'date': + return $this->createDateControl($container, $column, $record); + case 'blob': case 'tinyblob': case 'mediumblob': case 'longblob': + case 'text': case 'tinytext': case 'mediumtext': case 'longtext': + return $this->createMultiLineControl($container, $column, $record); + case 'year': + return $this->createYearControl($container, $column, $record); + case 'int': case 'integer': case 'tinyint': case 'smallint': case 'mediumint': case 'bigint': + return $this->createIntegerControl($container, $column, $record); + case 'decimal': case 'double': case 'float': + return $this->createFloatControl($container, $column, $record); + case 'time' : + return $this->createTimeControl($container, $column, $record); + case 'datetime': case 'timestamp': + return $this->createDateTimeControl($container, $column, $record); + default: + return $this->createDefaultControl($container,$column, $record); + } + } + + protected function getControlValue($container, $column, $record) + { + switch(strtolower($column->getDbType())) + { + case 'boolean': + return $container->findControl(self::DEFAULT_ID)->getChecked(); + case 'date': + return $container->findControl(self::DEFAULT_ID)->getDate(); + case 'year': + return $container->findControl(self::DEFAULT_ID)->getSelectedValue(); + case 'time': + return $this->getTimeValue($container, $column, $record); + case 'datetime': case 'timestamp': + return $this->getDateTimeValue($container,$column, $record); + default: + return $this->getDefaultControlValue($container,$column, $record); + } + } + + protected function createDateControl($container, $column, $record) + { + $control = parent::createDateControl($container, $column, $record); + $value = $this->getRecordPropertyValue($column, $record); + if(!empty($value) && preg_match('/timestamp/i', $column->getDbType())) + $control->setTimestamp(intval($value)); + return $control; + } + + protected function createDateTimeControl($container, $column, $record) + { + $value = $this->getRecordPropertyValue($column, $record); + $time = parent::createDateTimeControl($container, $column, $record); + if(!empty($value) && preg_match('/timestamp/i', $column->getDbType())) + { + $s = Prado::createComponent('System.Util.TDateTimeStamp'); + $date = $s->getDate(intval($value)); + $time[1]->setSelectedValue($date['hours']); + $time[2]->setSelectedValue($date['minutes']); + $time[3]->setSelectedValue($date['seconds']); + } + return $time; + } + + protected function getDateTimeValue($container, $column, $record) + { + if(preg_match('/timestamp/i', $column->getDbType())) + { + $time = $container->findControl(self::DEFAULT_ID)->getTimestamp(); + $s = Prado::createComponent('System.Util.TDateTimeStamp'); + $date = $s->getDate($time); + $hour = $container->findControl('scaffold_time_hour')->getSelectedValue(); + $mins = $container->findControl('scaffold_time_min')->getSelectedValue(); + $secs = $container->findControl('scaffold_time_sec')->getSelectedValue(); + return $s->getTimeStamp($hour,$mins,$secs,$date['mon'],$date['mday'],$date['year']); + } + else + return parent::getDateTimeValue($container, $column, $record); + } +} + ?> \ No newline at end of file -- cgit v1.2.3